如何在GitHub Actions的workflow_call中禁用快速失败?
让GitHub Actions子工作流(workflow_call)保留所有任务执行结果的方法
问题背景
我正在构建可复用的GitHub Actions CI流程:以ci.yml作为根工作流响应代码变更,调用rust.yml、node.yml等子工作流。子工作流包含build、test、audit等独立任务,但当前遇到以下问题:
- 子工作流(如
node.yml)中任意任务失败时,该工作流内其他待处理任务会立即被取消; - 若将所有任务直接放在
ci.yml中,即使有任务失败,其他任务仍会执行完成,这是我需要的行为——希望查看所有任务的执行结果,而非某一任务失败就终止其他任务。
解决方案
在子工作流的jobs层级添加fail-fast: false配置,即可禁用子工作流内的快速失败机制,让所有任务独立执行直至完成。
修改后的node.yml示例
on: workflow_call: {} jobs: # 禁用子工作流内的快速失败,确保所有任务执行完成 fail-fast: false build: runs-on: ubuntu-latest steps: - run: sleep 60 test: runs-on: ubuntu-latest steps: - run: sleep 30 && exit 1 audit: runs-on: ubuntu-latest steps: - run: sleep 90
原理说明
GitHub Actions中,子工作流默认启用fail-fast: true(根工作流中独立任务不会因其他任务失败被取消)。通过在子工作流的jobs块中显式设置fail-fast: false,可以让子工作流内的所有任务不受其他任务失败状态的影响,全部执行完成后再返回整体结果。
内容的提问来源于stack exchange,提问作者Naftuli Kay
相关产品推荐
相关产品推荐

