无需逐个定义输入,如何向可重用工作流传递环境变量?
如何批量向GitHub Actions可重用工作流传递环境变量?
GitHub Actions目前不支持直接在调用可重用工作流时通过env块传递环境变量,你提到的逐个硬编码输入参数的方式确实会削弱可重用工作流的通用性,下面是两种实用的替代方案:
方案一:通过单个字典输入批量设置环境变量
在可重用工作流中定义一个接收JSON字符串的输入参数,传递包含所有环境变量的字典,再通过脚本解析后批量注入到环境中,无需逐个定义输入。
可重用工作流示例
name: 可重用工作流 on: workflow_call: inputs: env_vars: required: false type: string default: '{}' jobs: build: runs-on: ubuntu-latest steps: - name: 批量注入环境变量 run: | # 将JSON字典解析为环境变量并写入GITHUB_ENV echo "${{ inputs.env_vars }}" | jq -r 'to_entries | .[] | "\(.key)=\(.value)"' >> $GITHUB_ENV - name: 验证环境变量 run: | echo "env1: $env1" echo "env2: $env2"
调用方工作流示例
name: 调用可重用工作流 on: workflow_dispatch: jobs: push-image-dev: uses: ./.github/workflows/my-reusable-workflow.yml with: input1: "测试输入1" input2: "测试输入2" env_vars: '{"env1": "开发环境值1", "env2": "开发环境值2"}'
方案二:继承调用工作流的全局环境变量
如果可重用工作流不需要针对单次调用单独配置环境变量,可以利用环境变量继承特性:调用方工作流env块中定义的变量,会自动传递给可重用工作流的所有作业。
注意:这种方式的局限性是无法为单个可重用工作流调用单独设置变量,所有从该工作流发起的调用都会共享同一批环境变量。
调用方工作流示例
name: 调用可重用工作流 on: workflow_dispatch: env: env1: "开发环境值1" env2: "开发环境值2" jobs: push-image-dev: uses: ./.github/workflows/my-reusable-workflow.yml with: input1: "测试输入1" input2: "测试输入2"
可重用工作流示例
name: 可重用工作流 on: workflow_call: inputs: input1: required: true type: string input2: required: true type: string jobs: build: runs-on: ubuntu-latest steps: - name: 验证继承的环境变量 run: | echo "env1: $env1" echo "env2: $env2"
内容的提问来源于stack exchange,提问作者Luiscri
相关产品推荐
相关产品推荐

