检查套件完成后如何触发Github工作流程?

时间:2020-01-04 23:42:33

标签: github continuous-integration devops continuous-deployment github-actions

我只想在特定工作流程完成后才触发工作流程...有人知道怎么做吗?

某些上下文:

  • 我有一个工作流程Tests和另一个工作流程Build-feature
  • 我在每个PR上的Tests工作流程上分支到feature
  • 如果将某些内容推送/合并到分支feature,那么我想运行工作流Tests,只有成功了,我才想运行Build-feature工作流。

还有check_suite个事件,它会触发工作流:https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-suite-event-check_suite

我尝试了这个示例:

on:
  check_suite:
    types: [rerequested, completed]

但是我的工作流程永远不会触发,为什么有什么主意?或关于如何实现上述目标的任何其他想法?。

2 个答案:

答案 0 :(得分:1)

更新后的答案:

事实证明,您可以使用on: status事件来实现这一点,但是您需要使用非the one from the Github Actions的令牌来手动触发状态。

您需要添加以下内容,以便在工作流完成后触发状态事件:

      - name: Trigger status event
        run: >-
          curl -L -X POST 
          -H "Content-Type: application/json"
          -H "Authorization: token ${{ secrets.GITHUB_PAT}}"
          -d '{
            "state": "success",
            "target_url": "https://you-can-add-a.url/",
            "description": "All tests passed", "context": "your-custom/status-event"
          }'
          "https://api.github.com/repos/${GITHUB_REPOSITORY}/statuses/${GITHUB_SHA}"

在其他工作流程中,您可以添加一个if条件,以防万一您有多个可以触发工作流程的状态事件,如下所示:

on: status

...

jobs:

...

  if: github.event.context == 'your-custom/status-event'

就是这样...这就是链接工作流的方式。



旧答案:

好吧,在github.community论坛上询问后,我得到了答案。

从“动作”应用引发的事件不会触发工作流。当前存在此限制,以防止执行循环工作流程。

相关链接:

编辑: check事件也是如此。

答案 1 :(得分:0)

通常,您将使用steps。仅在上一个“测试”步骤成功后才执行“构建”步骤。

如果您确实需要通过作业对其进行建模,则可以使用needs

示例:

jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]

check_suite事件仅由(外部)集成(例如Netlify构建)触发。注意:如果您的工作流已经合并到默认分支(主),则也将触发该事件。