github actions 参数注入核心是通过github_env写入环境变量供后续步骤读取,或用env、secrets、inputs/matrix等机制按需传递。

GitHub Actions 在构建过程中注入参数,核心是把值写进运行器环境,让后续步骤能读取。关键不在于“一次写完”,而在于“在哪写、怎么写、谁来读”。
用 GITHUB_ENV 注入跨步骤参数
这是最常用也最可靠的方式。GitHub 提供了专用文件 $GITHUB_ENV,只要把 KEY=VALUE 格式的内容追加进去,后续所有步骤都能直接用 $KEY(Linux/macOS)或 $env:KEY(Windows)访问。
- 写法统一(推荐 Bash):
echo "MY_PARAM=value" >> $GITHUB_ENV - 写法统一(PowerShell):
"MY_PARAM=value" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - 支持变量插值:
echo "BUILD_VERSION=v1.2.$(date +%s)" >> $GITHUB_ENV - 支持从 JSON 文件提取(如
package.json):echo "APP_VERSION=$(jq -r .version package.json)" >> $GITHUB_ENV
用 env 键定义作用域明确的参数
适合静态、已知、无需动态计算的参数。它不写入环境,而是由 GitHub 在调度时注入到对应作用域的运行器中。
适用于以下场景:(1)用户提供 GitHub 仓库 URL 或本地仓库路径,并请求将其转换为其他格式;(2)用户请求导出 GitHub 仓库……
- 整个工作流可用:
env: { API_URL: "https://staging.example.com" } - 仅某作业可用:
jobs.build.env: { NODE_ENV: "production" } - 仅某一步骤可用:
steps[*].env: { LOG_LEVEL: "debug" }
注意:这些值不能被后续步骤修改,也不能在 shell 中用 export 覆盖。
用 secrets 安全注入敏感参数
密码、Token、密钥等绝不能硬编码。GitHub Secrets 是唯一安全入口,必须通过 ${{ secrets.XXX }} 引用,且只允许在 env 或 run 中间接使用。
- 注入到环境变量(推荐):
env: { DB_PASSWORD: ${{ secrets.DB_PASSWORD }} } - 写入临时文件(适合多行密钥):
run: echo "${{ secrets.CERT_PEM }}" > cert.pem - 禁止直接拼接命令:
run: curl -H "Authorization: ${{ secrets.TOKEN }}" ...(可能泄露日志)
用 inputs 和 matrix 实现可配置化参数
适用于需要人工触发或批量测试的场景,参数由用户输入或矩阵生成,天然支持复用和组合。
- 手动触发时传参:
on: workflow_dispatch: inputs: target_env: type: string default: "dev"
然后用${{ github.event.inputs.target_env }}读取 - 矩阵运行自动分发:
strategy: matrix: python-version: [3.9, 3.10, 3.11]
每轮执行中,${{ matrix.python-version }}就是当前参数










