GitHub Action阶段仅在前序阶段失败时触发的配置问题
GitHub Actions 前序阶段失败时触发重跑的正确配置
你当前的配置问题出在some-smoke-test-rerun阶段的条件判断写法错误:needs.steps.some-smoke-test-result.outcome是无效的,因为needs对象指向的是依赖的阶段(job),而非阶段内的步骤(steps)。
正确配置方案
修改some-smoke-test-rerun的if条件,使用needs.<job-name>.result来获取前序阶段的执行状态,同时增加跳过判断避免误触发:
some-smoke-test-result: name: Parse and analyze test results smoke test needs: [some-smoke-test] if: needs.some-smoke-test.outputs.some-id != '' runs-on: ${{inputs.runner-tag}} steps: - name: parse-test-result id: parse-test-result uses: some/some-actions/some-results@v1.5.0 with: testarena-id: ${{ needs.some-smoke-test.outputs.some-id }} some-smoke-test-rerun: name: Rerun some smoke test needs: [some-smoke-test, some-smoke-test-result] if: always() && needs.some-smoke-test-result.result == 'failure' && needs.some-smoke-test-result.result != 'skipped'
关键说明
- 阶段状态获取:
needs.some-smoke-test-result.result是获取前序阶段最终执行状态的正确方式,可选值包括success、failure、cancelled、skipped - 跳过判断:因为
some-smoke-test-result阶段有if前置条件,当条件不满足时该阶段会被标记为skipped,增加needs.some-smoke-test-result.result != 'skipped'可以避免这种情况下触发重跑 - 保留
always():确保即使其他依赖阶段失败,该阶段的条件判断逻辑仍能正常执行(若不添加always(),当依赖阶段失败时,当前阶段会被直接跳过,不会执行条件判断)
内容的提问来源于stack exchange,提问作者Sven van den Boogaart
相关产品推荐
相关产品推荐

