概述
Note
跳过的作业将报告其状态为“Success”。 即使是必需检查,也不会阻止拉取请求合并。
可以使用 jobs.<job_id>.if
条件来阻止步骤运行,除非满足条件。 您可以使用任何支持上下文和表达式来创建条件。 有关此键支持哪些上下文的详细信息,请参阅“访问有关工作流运行的上下文信息”。
Note
jobs.<job_id>.if
条件在应用 jobs.<job_id>.strategy.matrix
之前进行评估。
在 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@v4 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@v4
with:
node-version: '14'
- run: npm install -g bats
在跳过的作业上,你应该会看到“已跳过此检查”。
Note
在工作流的某些部分中,不能使用环境变量。 但是,可以使用上下文来访问环境变量的值。 有关详细信息,请参阅“在变量中存储信息”。