由不同操作成功触发的 Github Action

bru*_*a42 12 continuous-integration github continuous-deployment github-actions

我试图在成功运行不同的操作后触发 Github 操作来运行。

这两个工作流程是:

单元测试操作(首先运行,并且应该触发下面的“后续测试”操作

name: unit-tests

on:
  push:
    branches:
      - '**'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: "3.1.x"
      - name: Test
        run: dotnet test src/XXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

遵循测试操作(这只是一个测试操作)

name: Test action triggered by previous action success

on:
  workflow_run:
    workflows:
      - unit-tests
    types:
      - completed

jobs:
  test-job:
    name: Test Step
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: ${{ github.event.workflow_run.head_branch }}
      - run: echo "The follow on works!!"
Run Code Online (Sandbox Code Playgroud)

问题是,当这是在功能分支而不是默认分支上触发时(因为我希望操作运行所有分支),它不起作用?

有任何想法吗?

Gui*_*urd 20

正如评论中所讨论的:

首先:分支上必须有两个工作流程,并且首先将分支合并到默认分支中,然后才能正常工作。

第二:如果之前的工作流程成功,则可以if: ${{ github.event.workflow_run.conclusion == 'success' }}仅运行作业。

例子

 on:
   workflow_run:
     workflows: ["Other Workflow Name"]
     types: [completed] #requested

 jobs:
   on-success:
     runs-on: ubuntu-latest
     if: ${{ github.event.workflow_run.conclusion == 'success' }}
     steps:
       - run: echo "First workflow was a success"

   on-failure:
     runs-on: ubuntu-latest
     if: ${{ github.event.workflow_run.conclusion == 'failure' }}
     steps:
       - run: echo "First workflow was a failure"
Run Code Online (Sandbox Code Playgroud)

  • 我在这里检查了它,检查事件是否是工作流调度的正确语法是使用 `github.event_name == 'workflow_dispatch`。所以完整的表达式是: `if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}` (10认同)