如何配置GitHub Action使第二个在第一个提交推送后执行?
让第二个GitHub Action在第一个完成提交推送后执行的两种方法
方法1:通过workflow_run事件监听第一个Workflow完成
直接修改Action2的触发规则,让它仅在Action1(名称为Scrape Data)执行完成后自动启动。这种方式能精准关联两个Workflow的执行顺序。
修改后的Action2配置:
on: workflow_dispatch: inputs: workflow_run: workflows: ["Scrape Data"] # 填写Action1的name字段值 types: - completed name: Visit Data jobs: build: name: Build runs-on: ubuntu-latest # 可选:仅在Action1成功完成时才执行Action2 if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - uses: actions/checkout@master - name: Build run: npm install - name: Scrape run: npm run visit - uses: mikeal/publish-to-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
方法2:在第一个Workflow末尾主动触发第二个Workflow
如果需要更精细的控制(比如仅在Action1的推送步骤成功后触发),可以在Action1的任务末尾添加步骤,调用GitHub API触发Action2的手动执行事件。
修改后的Action1配置:
on: workflow_dispatch: inputs: name: Scrape Data jobs: build: name: Build runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Build run: npm install - name: Scrape run: npm run action - uses: mikeal/publish-to-github-action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 添加触发Action2的步骤 - name: Trigger Visit Data workflow uses: actions/github-script@v6 with: script: | await github.rest.actions.createWorkflowDispatch({ owner: context.repo.owner, repo: context.repo.repo, workflow_id: 'visit-data.yml', // 替换为Action2的实际文件名 ref: context.ref })
注意事项
- 方法1中若不加
if条件,Action1无论成功或失败都会触发Action2,按需选择是否添加成功校验。 - 方法2需要确保
GITHUB_TOKEN拥有仓库的Workflow触发权限,且需准确填写Action2的文件名。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

