通过 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】:
我认为您指定 master 分支的方式不正确。我认为你应该在你的工作流程中这样尝试:
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.yml
和 reusable-workflow-A.yml
-> reusable-workflow-C.yml
【讨论】:
以上是关于通过 workflow_run 运行时,拉取请求未检测到操作的主要内容,如果未能解决你的问题,请参考以下文章