如何在GitHub Actions中分组工作流,实现并行执行后启动后续工作流?
实现工作流并行执行后触发后续任务
要实现多个工作流并行跑完再启动下一个,用GitHub Actions的工作流调用和依赖配置就能搞定,步骤如下:
1. 先写好要并行跑的子工作流
把每个要并行执行的任务拆成独立的子工作流,比如两个构建任务:
子工作流1:构建组件A
# .github/workflows/build-a.yml name: Build Component A on: workflow_call: # 打开被其他工作流调用的权限 jobs: build-a: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 构建组件A run: | echo "正在构建组件A..." # 这里替换成你的实际构建命令
子工作流2:构建组件B
# .github/workflows/build-b.yml name: Build Component B on: workflow_call: jobs: build-b: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 构建组件B run: | echo "正在构建组件B..." # 替换成实际构建命令
2. 写主控工作流统筹并行和后续任务
主控工作流负责触发所有并行子工作流,等它们全部跑完再启动后续任务:
# .github/workflows/main-workflow.yml name: 主工作流 on: push: branches: [ main ] # 可以改成你需要的触发条件,比如tag、pr等 jobs: # 并行启动两个构建任务 run-build-a: uses: ./.github/workflows/build-a.yml run-build-b: uses: ./.github/workflows/build-b.yml # 等前面两个并行任务都完成后,再跑后续任务 post-build-process: runs-on: ubuntu-latest needs: [run-build-a, run-build-b] # 这里指定依赖的并行任务 steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 执行后续操作 run: | echo "所有并行构建都完成了!开始执行后续任务..." # 替换成你的实际后续命令,比如打包、部署等
关键说明
needs是核心配置,它会让当前任务等待列表里的所有任务成功完成后才启动- 子工作流必须加
workflow_call才能被主控工作流调用 - 如果要加更多并行任务,直接在主控工作流里新增
uses的任务,然后在needs里补上对应的任务名就行
内容的提问来源于stack exchange,提问作者Atageldi Soyenjov
相关产品推荐
相关产品推荐

