简体中文 | English
一个轻松帮你自动管理 issues 的 GitHub Action
- 完全免费
- 全自动操作
- 托管于 GitHub 服务器,只要 GitHub 不宕机,它就不受影响
Private 项目每月有 2000 次的限制,具体查看。Public 项目无限制。
- ⭐ 基 础
- ⭐ 进 阶
- 🌰 例 子
为了更好的展示功能,下面以实际场景举例,请灵活参考。
当一个 issue 新增或修改时,将这个 issue 指定某人或多人。
name: Add Assigness
on:
issues:
types: [opened, edited]
jobs:
add-assigness:
runs-on: ubuntu-latest
steps:
- name: Add assigness
uses: actions-cool/issues-helper@v1
with:
actions: 'add-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignees: 'xxx' or 'xx1,xx2'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
assignees | 指定人。当不填或者为空字符时,不操作 | string | ✖ | v1.1 |
actions
支持多个,需用逗号隔开。如:add-assignees,add-labels
- 其中的
name
可根据自行根据实际情况修改 - on 参考
${{ github.event.issue.number }}
表示当前 issue,更多参考assignees
支持多个,需用逗号隔开。注意设置多个,需使用v1.1以上版本
⏫ 返回列表
当一个新增的 issue 内容不包含指定格式时,为这个 issue 添加 labels。
name: Add Labels
on:
issues:
types: [opened]
jobs:
add-labels:
runs-on: ubuntu-latest
if: contains(github.event.issue.body, 'xxx') == false
steps:
- name: Add labels
uses: actions-cool/issues-helper@v1
with:
actions: 'add-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'bug' or 'bug1,bug2'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
labels | 新增的 labels。当不填或者为空字符时,不新增 | string | ✖ | v1.1 |
labels
支持多个,需用逗号隔开。注意设置多个,需使用v1.1以上版本
⏫ 返回列表
关闭指定 issue。
- name: Close issue
uses: actions-cool/issues-helper@v1
with:
actions: 'close-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: xxx
body: 'This is auto closed.'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
⏫ 返回列表
当新增一个指定 label 时,对该 issue 进行评论。
name: Create Comment
on:
issues:
types: [labeled]
jobs:
create-comment:
runs-on: ubuntu-latest
if: github.event.label.name == 'xxx'
steps:
- name: Create comment
uses: actions-cool/issues-helper@v1
with:
actions: 'create-comment'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
Hello ${{ github.event.issue.user.login }}. Add some comments.
你好 ${{ github.event.issue.user.login }}。巴拉巴拉。
contents: '+1' or '+1,heart'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
body | 新增评论的内容 | string | ✖ | v1 |
contents | 为新增评论的增加 reaction | string | ✖ | v1.1 |
body
默认为:Currently at ${owner}/${repo}. And this is default comment.
- 其中
${owner}/${repo}
表示当前仓库
- 其中
- 返回
comment-id
,可用于之后操作。用法参考 ${{ github.event.issue.user.login }}
表示该 issue 的创建者contents
支持多个,需用逗号隔开。注意设置多个,需使用v1.1以上版本
⏫ 返回列表
感觉新增 issue 使用场景不多。这里举例,每月 1 号 UTC 00:00 新增一个 issue。
name: Create Issue
on:
schedule:
- cron: "0 0 1 * *"
jobs:
create-issue:
runs-on: ubuntu-latest
steps:
- name: Create issue
uses: actions-cool/issues-helper@v1
with:
actions: 'create-issue'
token: ${{ secrets.GITHUB_TOKEN }}
title: 'xxxx'
body: 'xxxx'
labels: 'xx'
assignees: 'xxx'
contents: '+1'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
title | 新增 issue 的标题 | string | ✖ | v1 |
body | 新增 issue 的内容 | string | ✖ | v1 |
labels | 为新增 issue 添加 labels | string | ✖ | v1.1 |
assignees | 为新增 issue 添加 assignees | string | ✖ | v1.1 |
contents | 为新增 issue 增加 reaction | string | ✖ | v1.1 |
title
默认为:Default Title
- 返回
issue-number
,用法参考
⏫ 返回列表
根据 comment-id
删除指定评论。
- name: Delete comment
uses: actions-cool/issues-helper@v1
with:
actions: 'delete-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: xxx
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
comment-id | 指定的 comment | number | ✔ | v1 |
⏫ 返回列表
当新增 invalid
label 时,对该 issue 进行锁定。
name: Lock Issue
on:
issues:
types: [labeled]
jobs:
lock-issue:
runs-on: ubuntu-latest
if: github.event.label.name == 'invalid'
steps:
- name: Lock issue
uses: actions-cool/issues-helper@v1
with:
actions: 'lock-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
⏫ 返回列表
打开指定 issue。
- name: Open issue
uses: actions-cool/issues-helper@v1
with:
actions: 'open-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: xxx
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
⏫ 返回列表
移除 issue 指定人员。
- name: Remove assignees
uses: actions-cool/issues-helper@v1
with:
actions: 'remove-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignees: 'xx'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
assignees | 移除的指定人。当为空字符时,不进行移除 | string | ✔ | v1.1 |
⏫ 返回列表
移除指定 labels。
- name: Remove labels
uses: actions-cool/[email protected]
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'xx'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1.2 |
token | token 说明 | string | ✔ | v1.2 |
issue-number | 指定的 issue | number | ✔ | v1.2 |
labels | 移除的 labels。当为空字符时,不进行移除 | string | ✔ | v1.2 |
labels
支持多个,如x1,x2,x3
,只会移除 issue 已添加的 labels
⏫ 返回列表
替换 issue 的 labels。
- name: Set labels
uses: actions-cool/issues-helper@v1
with:
actions: 'set-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'xx'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
labels | labels 设置。当空字符时,会移除所有 | string | ✔ | v1.1 |
⏫ 返回列表
解锁指定 issue。
- name: Unlock issue
uses: actions-cool/issues-helper@v1
with:
actions: 'unlock-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
⏫ 返回列表
根据 comment-id
更新指定评论。
下面的例子展示的是,为每个新增的 comment 增加 👀 。
name: Add eyes to each comment
on:
issue_comment:
types: [created]
jobs:
update-comment:
runs-on: ubuntu-latest
steps:
- name: Update comment
uses: actions-cool/issues-helper@v1
with:
actions: 'update-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: ${{ github.event.comment.id }}
contents: 'eyes'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
comment-id | 指定的 comment | number | ✔ | v1 |
body | 更新 comment 的内容 | string | ✖ | v1 |
update-mode | 更新模式。默认 replace 替换,append 附加 |
string | ✖ | v1 |
contents | 增加 reaction | string | ✖ | v1.1 |
body
不填时,会保持原有update-mode
为append
时,会进行附加操作。非append
都会进行替换。仅对body
生效
⏫ 返回列表
根据 issue-number
更新指定 issue。
- name: Update issue
uses: actions-cool/issues-helper@v1
with:
actions: 'update-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
state: 'open'
title: 'xxx'
body: 'xxxx'
update-mode: 'replace'
labels: 'xx'
assignees: 'xxx'
contents: '+1'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
state | 修改 issue 的状态,可选值 open closed |
string | ✖ | v1 |
title | 修改 issue 的标题 | string | ✖ | v1 |
body | 修改 issue 的内容 | string | ✖ | v1 |
update-mode | 更新模式。默认 replace 替换,append 附加 |
string | ✖ | v1 |
labels | 替换 issue 的 labels | string | ✖ | v1.1 |
assignees | 替换 issue 的 assignees | string | ✖ | v1.1 |
contents | 增加 reaction | string | ✖ | v1.1 |
state
默认为open
- 当可选项不填时,会保持原有
⏫ 返回列表
进阶用法不建议 actions 多个一次同时使用。
每月 1 号 UTC 0 时,对所有 30 天以上未活跃的 issues 增加 inactive
标签。
name: Check inactive
on:
schedule:
- cron: "0 0 1 * *"
jobs:
check-inactive:
runs-on: ubuntu-latest
steps:
- name: check-inactive
uses: actions-cool/issues-helper@v1
with:
actions: 'check-inactive'
token: ${{ secrets.GITHUB_TOKEN }}
inactive-day: 30
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
body | 操作 issue 时,可进行评论。不填时,不评论 | string | ✖ | v1 |
labels | 标签筛选 | string | ✖ | v1.1 |
issue-state | 状态筛选 | string | ✖ | v1 |
issue-assignee | 指定人筛选 | string | ✖ | v1 |
issue-creator | 创建人筛选 | string | ✖ | v1 |
issue-mentioned | 提及人筛选 | string | ✖ | v1 |
body-includes | 包含内容筛选 | string | ✖ | v1 |
title-includes | 包含标题筛选 | string | ✖ | v1 |
inactive-day | 非活跃天数筛选 | number | ✖ | v1.2 |
inactive-label | 新增标签名称 | string | ✖ | v1 |
labels
:为多个时,会查询同时拥有多个。不填时,会查询所有issue-state
:默认为all
。可选值open
closed
,非这 2 项时,均为all
issue-assignee
:不支持多人。不填或输入 * 时,查询所有。输入none
会查询未添加指定人的 issuesinactive-day
:当输入时,会筛选 issue 更新时间早于当前时间减去非活跃天数。不填时,会查询所有inactive-label
:默认为inactive
,可自定义其他。当项目未包含该 label 时,会自动新建
⏫ 返回列表
根据传入的参数和 issue-number
来检查该 issue 是否满足条件,返回一个布尔值。
下面的例子效果是:当 issue 新开时,校验当前 issue 指定人是否包含 x1
或者 x2
,满足一个指定人即可校验通过,同时校验标题是否满足条件,校验规则。
name: Check Issue
on:
issues:
types: [edited]
jobs:
check-issue:
runs-on: ubuntu-latest
steps:
- name: check-issue
uses: actions-cool/issues-helper@v1
with:
actions: 'check-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignee-includes: 'x1,x2'
title-includes: 'x1,x2/y1,y2'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1.2 |
token | token 说明 | string | ✔ | v1.2 |
issue-number | 指定的 issue | number | ✔ | v1.2 |
assignee-includes | 是否包含指定人 | string | ✖ | v1.2 |
title-includes | 标题包含校验 | string | ✖ | v1.2 |
body-includes | 内容包含校验 | string | ✖ | v1.2 |
title-includes
body-includes
支持格式x1,x2
或者x1,x2/y1,y2
。只支持两个层级- 返回
check-result
⏫ 返回列表
每 7 天 UTC 0 时,关闭已填加 need info
label 且 7 天以上未活跃的 issues。
name: Check need info
on:
schedule:
- cron: "0 0 */7 * *"
jobs:
check-need-info:
runs-on: ubuntu-latest
steps:
- name: close-issues
uses: actions-cool/issues-helper@v1
with:
actions: 'close-issues'
token: ${{ secrets.GITHUB_TOKEN }}
labels: 'need info'
inactive-day: 7
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
body | 操作 issue 时,可进行评论。不填时,不评论 | string | ✖ | v1 |
labels | 标签筛选 | string | ✖ | v1.1 |
issue-assignee | 指定人筛选 | string | ✖ | v1 |
issue-creator | 创建人筛选 | string | ✖ | v1 |
issue-mentioned | 提及人筛选 | string | ✖ | v1 |
body-includes | 包含内容筛选 | string | ✖ | v1 |
title-includes | 包含标题筛选 | string | ✖ | v1 |
inactive-day | 非活跃天数筛选 | number | ✖ | v1.2 |
labels
:为多个时,会查询同时拥有多个。不填时,会查询所有issue-assignee
:不支持多人。不填或输入 * 时,查询所有。输入none
会查询未添加指定人的 issuesinactive-day
:当输入时,会筛选 issue 更新时间早于当前时间减去非活跃天数。不填时,会查询所有
⏫ 返回列表
查找当前仓库 1 号 issue 中,创建者是 k ,内容包含 this
的评论列表。
- name: Find comments
uses: actions-cool/issues-helper@v1
with:
actions: 'find-comments'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: 1
comment-auth: 'k'
body-includes: 'this'
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
issue-number | 指定的 issue | number | ✔ | v1 |
comment-auth | 评论创建者,不填时会查询所有 | string | ✖ | v1 |
body-includes | 评论内容包含过滤,不填时无校验 | string | ✖ | v1 |
direction | 返回 comments 排序 |
string | ✖ | v1 |
- 返回
comments
,格式如下:
[
{id: 1, auth: 'x', body: 'xxx', created: '', updated: ''},
{id: 2, auth: 'x', body: 'xxx', created: '', updated: ''},
]
direction
默认为升序,只有设置desc
时,会返回降序- 返回数组中
created
updated
,由所处环境决定,会是 UTC +0
⏫ 返回列表
每 3 个月 1 号 UTC 0 时,锁定已填加 inactive
label 且 128 天以上未活跃的所有 issues。
name: Lock inactive issues
on:
schedule:
- cron: "0 0 1 */3 *"
jobs:
lock-issues:
runs-on: ubuntu-latest
steps:
- name: lock-issues
uses: actions-cool/issues-helper@v1
with:
actions: 'lock-issues'
token: ${{ secrets.GITHUB_TOKEN }}
labels: 'inactive'
inactive-day: 128
参数 | 描述 | 类型 | 必填 | 版本 |
---|---|---|---|---|
actions | 操作类型 | string | ✔ | v1 |
token | token 说明 | string | ✔ | v1 |
body | 操作 issue 时,可进行评论。不填时,不评论 | string | ✖ | v1 |
labels | 标签筛选 | string | ✖ | v1.1 |
issue-state | 状态筛选 | string | ✖ | v1 |
issue-assignee | 指定人筛选 | string | ✖ | v1 |
issue-creator | 创建人筛选 | string | ✖ | v1 |
issue-mentioned | 提及人筛选 | string | ✖ | v1 |
body-includes | 包含内容筛选 | string | ✖ | v1 |
title-includes | 包含标题筛选 | string | ✖ | v1 |
inactive-day | 非活跃天数筛选 | number | ✖ | v1.2 |
labels
:为多个时,会查询同时拥有多个。不填时,会查询所有issue-state
:默认为all
。可选值open
closed
,非这 2 项时,均为all
issue-assignee
:不支持多人。不填或输入 * 时,查询所有。输入none
会查询未添加指定人的 issuesinactive-day
:当输入时,会筛选 issue 更新时间早于当前时间减去非活跃天数。不填时,会查询所有
⏫ 返回列表
灵活参考。
假设场景:当添加了 watch
label 的 issue 修改时,查找是否有 k 创建的包含 error
的评论,如果只有一个,则更新该 comment,如果没有,则新增一个 comment。
name: Test
on:
isssue:
types: [edited]
jobs:
do-test:
runs-on: ubuntu-latest
if: github.event.label.name == 'watch'
steps:
- name: find comments
uses: actions-cool/issues-helper@v1
id: fcid
with:
actions: 'find-comments'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
comment-auth: k
body-includes: 'error'
- name: create comment
if: ${{ steps.fcid.outputs.comments.length == 0 }}
uses: actions-cool/issues-helper@v1
with:
actions: 'create-comment'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: 'Some error!'
- name: update comment
if: ${{ steps.fcid.outputs.comments.length == 1 }}
uses: actions-cool/issues-helper@v1
with:
actions: 'update-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: ${{ steps.fcid.outputs.comments[0].id }}
body: 'Some error again!'
update-mode: 'append'
⏫ 返回列表
需拥有 push 权限的人员 token。
- 个人 token 申请
- 需勾选
Full control of private repositories
- 需勾选
- 项目添加 secrets
- 选择 settings,选择 secrets,选择
New repository secret
Name
与 actions 中保持一致Value
填写刚才个人申请的 token
- 选择 settings,选择 secrets,选择
当 actions 不填写 token 时,或项目未添加对应 secrets 时,会默认为 github-actions bot。更多查看。
⏫ 返回列表
- name: Create issue
uses: actions-cool/issues-helper@v1
id: createissue
with:
actions: 'create-issue'
token: ${{ secrets.GITHUB_TOKEN }}
- name: Check outputs
run: echo "Outputs issue_number is ${{ steps.createissue.outputs.issue-number }}"
更多查看。
⏫ 返回列表
"title-includes": 'x1,x2'
x1
x2
"x1y3y2" true
"y2 x1" true
"x2" true
"x3" false
"title-includes": 'x1,x2/y1,y2'
x1 + y1
x2 + y1
x1 + y2
x2 + y2
"x1y3y2" true
"y2 x1" true
"1x2y" false
"x1" false
⏫ 返回列表
content | emoji |
---|---|
+1 |
👍 |
-1 |
👎 |
laugh |
😄 |
confused |
😕 |
heart |
❤️ |
hooray |
🎉 |
rocket |
🚀 |
eyes |
👀 |
⏫ 返回列表
点击某个评论右上角 ···
图标,选择 Copy link
,url 末尾数字即是 comment_id
。
⏫ 返回列表
-
可直接使用这个 GitHub Actions workflow template 仓库的模板
-
个人练习和测试 Actions 的仓库
你可以来以下项目进行参考。欢迎在 这里 留言。
同时,如果你在使用过程中有什么疑问,也可以在 issue 或者 discussion 中进行提问和查询。
ant-design | ant-design-vue | dumi | umi | vue-request |