如何在GitHub Workflows矩阵作业中指定或修改环境变量?
GitHub Workflows矩阵作业自定义环境变量的正确方式
你的配置有两个问题导致矩阵里的环境变量不生效:
- 矩阵
include里直接写env字段的方式不被支持,GitHub Workflows矩阵只能定义独立变量,不能直接嵌套作业级配置项 - 步骤里的命令写错了变量名,
MY_VAR2应该是MY_VAR
下面是两种可行的修正方案:
方案一:作业级别覆盖全局环境变量
通过矩阵定义变量值,再在作业的env字段中引用矩阵变量,实现全局环境变量的覆盖:
name: test-test-test on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] env: MY_VAR: One jobs: test: runs-on: ubuntu-latest strategy: matrix: include: - my_var_val: Two - my_var_val: Three # 用矩阵变量覆盖作业级的环境变量 env: MY_VAR: ${{ matrix.my_var_val }} steps: - run: echo "$MY_VAR"
方案二:步骤级别直接使用矩阵变量
如果不需要整个作业都使用该变量,也可以直接在步骤中引用矩阵变量:
name: test-test-test on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] env: MY_VAR: One jobs: test: runs-on: ubuntu-latest strategy: matrix: include: - my_var_val: Two - my_var_val: Three steps: # 直接输出矩阵变量值 - run: echo "${{ matrix.my_var_val }}" # 或者临时设置环境变量后使用 - run: | export MY_VAR=${{ matrix.my_var_val }} echo "$MY_VAR"
关键说明
GitHub Workflows的矩阵strategy仅用于定义矩阵维度的变量,不能直接设置env这类作业级配置。必须先把要传递的环境变量值定义为矩阵变量,再在作业或步骤中显式引用,才能覆盖全局的env设置。
内容的提问来源于stack exchange,提问作者SmCaterpillar
相关产品推荐
相关产品推荐

