如何仅在GitHub Actions前一步执行后运行当前步骤?
解决方案
你可以通过给「Run tests」步骤添加唯一ID,结合GitHub Actions的步骤上下文来判断该步骤是否实际执行过(而非被跳过),这样就能精准控制:仅在测试步骤执行后(无论成功或失败)才生成覆盖率Artifact,同时避免在构建步骤失败时执行该操作。
具体操作分两步:
- 给「Run tests」步骤添加
id属性,方便后续引用该步骤的状态 - 在「Create artifact of test coverage」步骤中设置针对性的
if条件
修改后的完整YAML示例如下:
name: Build on: [pull_request] jobs: build: runs-on: ubuntu-latest steps: # 其他步骤 - name: Build app # 这里保留你的构建命令,例如:run: npm run build - name: Run tests id: run-tests # 新增步骤ID # 这里保留你的测试命令,例如:run: npm test --coverage - name: Create artifact of test coverage if: steps.run-tests.outcome != 'skipped' # 新增条件判断 # 这里保留你的归档命令,例如: # uses: actions/upload-artifact@v4 # with: # name: test-coverage # path: coverage/ # 其他步骤
逻辑说明
steps.run-tests.outcome会返回该步骤的执行状态,可选值包括success、failure、cancelled、skipped- 如果「Build app」步骤失败,后续的「Run tests」步骤会被自动标记为
skipped(不会实际执行),此时steps.run-tests.outcome != 'skipped'条件不成立,归档步骤就不会运行 - 只要「Run tests」步骤实际执行过(不管测试最终成功还是失败),
outcome就会是success或failure,条件成立,归档步骤正常运行,生成对应的测试覆盖率Artifact
内容的提问来源于stack exchange,提问作者Duncan Lukkenaer
相关产品推荐
相关产品推荐

