概述
注意
跳过的作业其状态将报告为“成功”。即使它是必需的检查,也不会阻止拉取请求合并。
您可以使用jobs.<job_id>.if
条件来防止作业在不满足条件的情况下运行。您可以使用任何受支持的上下文和表达式来创建条件。有关此键中支持哪些上下文的更多信息,请参阅“访问有关工作流运行的上下文信息”。
注意
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
在跳过的作业中,您应该看到“此检查已跳过”。
注意
在工作流的某些部分,您不能使用环境变量。您可以使用上下文来访问环境变量的值。更多信息,请参阅“在变量中存储信息”。