You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions矩阵策略中控制Job的执行与跳过?

实现GitHub Actions矩阵Job的条件跳过(整个Job)

要实现满足条件才执行整个矩阵Job、不满足则直接跳过的需求,只需要把条件判断从步骤级别移到Job级别,具体修改如下:

修改后的完整配置

jobs:
  deploy:
    runs-on: ubuntu-latest
    # 关键:在Job级别添加条件判断,决定整个Job是否执行
    if: ${{ matrix.deploy_condition }}
    strategy:
      matrix:
        include:
          - uppercase_env: 'DEV'
            lowercase_env: 'dev'
            secrets_prefix: 'dev_'
            deploy_condition: ${{ contains(github.ref_name, 'develop') && !inputs.env_name }}
          - uppercase_env: 'TST'
            lowercase_env: 'tst'
            secrets_prefix: 'tst_'
            deploy_condition: ${{ contains(github.ref_name, 'develop') && !inputs.env_name }}
          - uppercase_env: 'STG'
            lowercase_env: 'stg'
            secrets_prefix: 'stg_'
            deploy_condition: ${{ contains(github.ref_name, 'release') && inputs.env_name == 'STG' }}
          - uppercase_env: 'PRD'
            lowercase_env: 'prd'
            secrets_prefix: 'prd_'
            deploy_condition: ${{ (contains(github.ref_name, 'release') || contains(github.ref_name, 'hotfix')) && inputs.env_name == 'PRD' }}
    steps:
      - name: Do something
        # 步骤里的if可以移除,因为整个Job已经被条件控制了
        run: echo "Deploying to ${{ matrix.lowercase_env }}"

核心修改点

  1. 修正条件表达式:把原配置里的&&替换为&&——这是HTML转义字符,在YAML中直接写逻辑与运算符&&即可。
  2. Job级别添加if判断:在deploy Job的顶层增加if: ${{ matrix.deploy_condition }},GitHub Actions会根据这个条件决定是否创建并执行该矩阵条目对应的Job实例,不满足条件的话会直接标记为"skipped",不会运行任何步骤。
  3. 移除步骤级别的if:既然整个Job已经被条件控制,步骤里的if判断可以直接删除,避免冗余。

内容的提问来源于stack exchange,提问作者Lex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:52:20