概述
注意:跳过的作业将报告其状态为“成功”。 即使是必需检查,也不会阻止拉取请求合并。
可以使用 jobs.<job_id>.if 条件来阻止步骤运行,除非满足条件。 您可以使用任何支持上下文和表达式来创建条件。 有关此键支持哪些上下文的详细信息,请参阅“上下文”。
注意: 在应用 jobs.<job_id>.strategy.matrix 之前会先计算 jobs.<job_id>.if 条件。
在 if 条件中使用表达式时,可以有选择地忽略 ${{ }} 表达式语法,因为 GitHub Actions 自动将 if 条件作为表达式求值。 但此例外并非适用于所有情况。
必须始终使用 ${{ }} 表达式语法,或者当表达式以!开头时,必须使用 ''、""、() 进行转义,因为 ! 是 YAML 格式的保留表示法。 例如:
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
有关详细信息,请参阅“表达式”。
示例:仅针对特定存储库运行作业
此示例使用 if 控制 production-deploy 作业何时可以运行。 仅当存储库名为 octo-repo-prod 且位于 octo-org 组织内时,它才会运行。 否则,作业将被标记为“跳过”。
name: example-workflow
on: [push]
jobs:
production-deploy:
if: github.repository == 'octo-org/octo-repo-prod'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
name: example-workflow
on: [push]
jobs:
production-deploy:
if: github.repository == 'octo-org/octo-repo-prod'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: '14'
- run: npm install -g bats
在跳过的作业上,你应该会看到“已跳过此检查”。
注意:在工作流的某些部分中,不能使用环境变量。 但是,可以使用上下文来访问环境变量的值。 有关详细信息,请参阅“变量”。