在 GitHub Actions 中,我在 YAML 中定义了管道。
我有一项条件作业,之后还有另一项条件作业,我想在条件作业之后执行。但如果作业没有执行,则立即执行。
如果我使用:
name: Test conditionals
on:
workflow_dispatch:
env:
DEPLOY_NONPROD_ENV: 'false'
jobs:
conditionalJob:
if: ${{ env.DEPLOY_NONPROD_ENV == 'true' }}
runs-on: 'ubuntu-latest'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Echo message
run: 'echo "Condition evaluated to true"'
dependantJob:
needs: [conditionalJob]
runs-on: 'ubuntu-latest'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Echo message
run: 'echo "Running dependantJob"'
如果跳过
conditionalJob
,则 dependantJob
也会被跳过。
如何使其工作,以便
dependantJob
在跳过 conditionalJob
时立即执行,并在运行时等待它?
实际上评论问题中的答案不是%100好,在这种情况下你需要检查第一个作业的
result
,如果它通过或跳过,但还需要添加!cancelled()
,这应该可以工作:
if: (needs.conditionalJob.result == 'skipped' || needs.conditionalJob.result == 'success') && !cancelled()
您可以将
!cancelled()
替换为 always()
,但即使您取消它,工作流程也会继续运行!