【问题标题】:How to set event triggers per job rather than per workflow?如何为每个作业而不是每个工作流设置事件触发器?
【发布时间】:2021-04-23 15:17:51
【问题描述】:

让我们以这个包含两个作业的工作流程为例 - buildcomment

name: TestWorkflow

on:  
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v2
      - name: Build code
        run: |
          whoami
          ./build
  comment:
    runs-on: self-hosted
    needs: build
    steps:
      - uses: actions/github-script@v3
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: 'Test comment'
            })

此工作流程将在向 master 分支推送和打开拉取请求时触发。然而,虽然构建总是成功,但在 push 场景中,comment 作业将失败,因为没有可供评论的 Pull Request。

是否可以指定每个作业而不是每个工作流的触发器?比如:

name: TestWorkflow2

jobs:
  build:
    on:  
      push:
        branches: [ master ]
      pull_request:
        branches: [ master ]
    ...
  comment:
    on:  
      pull_request:
        branches: [ master ]
    ...

【问题讨论】:

    标签: github github-actions


    【解决方案1】:

    您可以使用if 条件(reference) 来阻止作业或步骤运行,除非满足条件。

    例如,在这里,您可以将if: ${{ github.event_name == 'pull_request' }} 添加到comment job 以仅在触发工作流的事件是pull_request 时执行它。

      comment:
        runs-on: self-hosted
        needs: build
        if: ${{ github.event_name == 'pull_request' }}
        steps:
           [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 2017-01-19
      • 2015-01-22
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多