Sam*_*uel 13 yaml github github-actions
在阅读了触发工作流的事件的文档后,我想知道是否可以使用给定的标签名称运行工作流,例如 RFR 或 WIP。
我知道我们可以在拉取请求被标记时运行一个工作流,但是对于特定的标签名称没有更多内容:
on:
pull_request:
types: [labeled]
Run Code Online (Sandbox Code Playgroud)
以前有人这样做过吗?
noa*_*oah 30
根据此评论,要检查的条件是:
if: contains(github.event.pull_request.labels.*.name, '<label_name>')
Run Code Online (Sandbox Code Playgroud)
Mad*_*hat 21
您可以使用条件表达式来实现在标记拉取请求时运行工作流
if: ${{ github.event.label.name == 'label_name' }}
Run Code Online (Sandbox Code Playgroud)
因此,如果您的 GitHub 操作配置如下
name: CI
on:
pull_request:
types: [ labeled ]
jobs:
build:
if: ${{ github.event.label.name == 'bug' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: echo Hello, world!
Run Code Online (Sandbox Code Playgroud)
它会在 PR 被标记时触发工作流,并且仅当标签是时才运行作业bug,如果标签是其他任何东西,它将跳过。您还可以将其github.event.action == 'labeled'用作额外检查,但如果您只types: [ labeled ]对pull_request上面的配置中显示的内容进行检查,则不需要这样做。
注意:仅供参考,github 事件有以下信息(为简洁起见,删除了不相关的数据)关于标记 PR 时的标签
"event": {
"action": "labeled",
"label": {
"color": "d73a4a",
"default": true,
"description": "Something isn't working",
"id": 1519136641,
"name": "bug",
"node_id": "abcd",
"url": "https://api.github.com/repos/owner/repo/labels/bug"
}
}
Run Code Online (Sandbox Code Playgroud)
关于条件表达式的GitHub 操作文档在这里。
小智 8
我不需要有类型labeled来使其工作,就像这个答案一样,我设法让它在这种情况下工作:
name: ExampleWorkflow
on:
pull_request:
branches:
- main
jobs:
ExampleJob:
if: contains(github.event.pull_request.labels.*.name, 'example-label')
Run Code Online (Sandbox Code Playgroud)
这样,ExampleWorkflow任何带有目标分支的拉取请求都会触发工作流程,如果 PR 没有标签,则main作业将被跳过ExampleJobexample-label
| 归档时间: |
|
| 查看次数: |
5849 次 |
| 最近记录: |