通过 workflow_run 运行时,拉取请求未检测到操作

Posted

技术标签:

【中文标题】通过 workflow_run 运行时,拉取请求未检测到操作【英文标题】:Pull Request is not detecting action when run via workflow_run 【发布时间】:2021-10-15 23:25:57 【问题描述】:

我的存储库中有 2 个工作流:

name: First

on:
  pull_request:
    branches: [ master ]

jobs:
  test:
    name: test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
   
    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.16

    - name: Test
      run: go test -v ./...

name: Second

on:
  workflow_run:
    workflows: ["First"]
    types:
      - completed

jobs:
  golangci:
    if: $ github.event.workflow_run.conclusion == 'success' 

    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v2
        with:
          version: latest

仅当第一个工作流成功完成时才会启动第二个工作流。这部分有效。

我已经设置了分支规则,以便“master”上的任何拉取请求都必须通过这 2 个工作流。当我制作/更新 PR 时,两个工作流都按预期运行。然而,PR 从未检测到第二个工作流已经运行。它卡在“预期 - 等待状态报告”状态。

我认为这是因为第二个工作流不是由拉取请求触发的,而是由前一个工作流触发的。有没有办法让我的第二个工作流通知它已完成的正确拉取请求?

(这是一个简单的示例,说明了在具有多个工作流的更大存储库上发生的问题,在大型存储库中的一个工作流中包含所有作业并不理想)。

谢谢

【问题讨论】:

我试图指出这样的结帐步骤:with: ref: $ github.event.workflow_run.head_branch $ github.event.workflow_run.head_sha 但似乎也没有任何效果 【参考方案1】:

我认为您指定 ma​​ster 分支的方式不正确。我认为你应该在你的工作流程中这样尝试:

on:
  # Trigger the workflow on pull request,
  # but only for the master branch
  pull_request:
    branches:
      - master

参考:Github Docs

【讨论】:

已尝试但完全没有区别,因为两者都是正确的数组 yml 语法:***.com/a/33136212/6355024。加上工作流确实在提供的分支上执行,问题在于 PR【参考方案2】:

workflow_run 不显示 PR 检查列表,但 Github 支持复用工作流^1

我为你的案例写了一个小演示https://github.com/bxb100/action-test/blob/main/.github/workflows/***-68759990.yml

配置文件: workflow_run: ***-68759990-1.yml -> ***-68759990-2.yml

reusing: ***-68759990.ymlreusable-workflow-A.yml -> reusable-workflow-C.yml

【讨论】:

以上是关于通过 workflow_run 运行时,拉取请求未检测到操作的主要内容,如果未能解决你的问题,请参考以下文章

VSTS GitHub拉取请求触发器未触发

取消操作运行,当拉取请求更改时

列出所有未解决的拉取请求评论

使用 aws codebuild 未收到有关 bitbucket 拉取请求的 Sonar 评论

如何将来自其他分支的未合并上游拉取请求应用到我的分支中?

markdown 将未合并的拉取请求同步到我的前叉