阅读了触发工作流程的事件的文档后,我想知道是否可以使用给定的标签名称(如RFR或WIP)运行工作流程。
我知道我们可以在拉取请求被标记时运行工作流程,但没有更多特定标签名称的信息。
我知道我们可以在拉取请求被标记时运行工作流程,但没有更多特定标签名称的信息。
on:
pull_request:
types: [labeled]
有人以前做过这个吗?
on:
pull_request:
types: [labeled]
有人以前做过这个吗?
if: ${{ github.event.label.name == 'label_name' }}
如果您的GitHub Action配置如下所示
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!
bug
时运行作业,如果标签是其他任何内容,则跳过。您还可以使用github.event.action == 'labeled'
进行额外的检查,但如果您只对pull_request
使用types: [ labeled ]
,则不需要该检查,如上面的配置所示。
注意:仅供您参考,关于标记PR的github事件具有以下信息(为简洁起见删除了不相关的数据)。"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"
}
}
GitHub Actions 文档 关于条件表达式的部分可以在这里找到。
PR labeled
的触发器,那么它就不会起作用。你需要添加以下内容:on: pull_request: types: [ labeled ]
@vishwarajanand - undefined我不需要使用类型来使其工作,就像this answer一样,我已经通过这个条件让它工作了:
name: ExampleWorkflow
on:
pull_request:
branches:
- main
jobs:
ExampleJob:
if: contains(github.event.pull_request.labels.*.name, 'example-label')
这样,无论何时有一个目标分支为main
的拉取请求,工作流程ExampleWorkflow
都会被触发,如果该拉取请求没有标签example-label
,则作业ExampleJob
将被跳过。
bug
和security
,这种方法可行吗? - Markusgithub.event.pull_request.labels
字段来实现此操作。以下是一个简化的示例:if: contains(github.event.pull_request.labels.*.name, '<label_name>')
。您还需要确保在pull_request.types
中指定 "labeled"、"opened"、"synchronize" 和 "reopened"。 - Stephen Young