简体中文 | English
A GitHub Action that easily helps you automatically manage issues
Online documentation | Changelog
- Complete free
- Fully automatic
- Hosted on the GitHub server, as long as GitHub is not down, it is not affected
Private projects have a limit of 2000 times per month. Specific view. Public are unlimited.
- ⭐ Base
- ⭐ Advanced
- 🌰 Example
In order to better display the function, the following is an example of the actual scene, please refer to it flexibly.
When an issue is added or modified, assign this issue to one or more people.
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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
assignees | Designated person. No operation when no input or empty character | string | ✖ | v1.1 |
actions
support multiple and separated by comma. Like:add-assignees,add-labels
- The
name
can be modified according to the actual situation - Reference to on
${{ github.event.issue.number }}
is the current issue. More referencesassignees
support multiple and separated by comma. Pay attention to multiple settings, you need to use the version above v1.1
When the content of a new issue does not contain the specified format, add labels for the issue.
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 'xx1,xx2'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
labels | New labels. When it is not filled in or is empty character, do not add | string | ✖ | v1.1 |
labels
support multiple and separated by comma. Pay attention to multiple settings, you need to use the version above v1.1
Close the specified 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.'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
When a designated label is added, comment on the 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
body | Add comment content | string | ✖ | v1 |
contents | Add reaction | string | ✖ | v1.1 |
body
default isCurrently at ${owner}/${repo}. And this is default comment.
- Where
${owner}/${repo}
means the current repo
- Where
- Return
comment-id
, which can be used for subsequent operations. Usage reference ${{ github.event.issue.user.login }}
indicates the creator of the issuecontents
support multiple and separated by comma. Pay attention to multiple settings, you need to use the version above v1.1
Here is an example, add an issue at UTC 00:00 on the 1st of every month.
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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
title | The title of the new issue | string | ✖ | v1 |
body | The body of the new issue | string | ✖ | v1 |
labels | The labels for the new issue | string | ✖ | v1.1 |
assignees | The assignees for the new issue | string | ✖ | v1.1 |
contents | Add reaction | string | ✖ | v1.1 |
title
default isDefault Title
- Return
issue-number
. Usage reference
According to comment-id
delete the specified comment.
- name: Delete comment
uses: actions-cool/issues-helper@v1
with:
actions: 'delete-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: xxx
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
comment-id | The comment ID | number | ✔ | v1 |
When the invalid
label is added, the issue is locked.
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 }}
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
Open the specified issue.
- name: Open issue
uses: actions-cool/issues-helper@v1
with:
actions: 'open-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: xxx
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
Remove the person designated by 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
assignees | Designated person removed. When it is an empty character, do not remove | string | ✔ | v1.1 |
Remove the specified labels.
- name: Remove labels
uses: actions-cool/issues-helper@v1.2
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'xx'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1.2 |
token | Token explain | string | ✔ | v1.2 |
issue-number | The number of issue | number | ✔ | v1.2 |
labels | The removed labels. When it is a blank character, do not remove | string | ✔ | v1.2 |
labels
supports multiple, such asx1,x2,x3
, only the labels added by the issue will be removed
Replace the labels of issue.
- 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
labels | labels set. When empty characters, will remove all | string | ✔ | v1.1 |
Unlock the specified issue.
- name: Unlock issue
uses: actions-cool/issues-helper@v1
with:
actions: 'unlock-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
Update the specified comment according to comment-id
.
The following example shows that 👀 is added for each new 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
comment-id | The comment ID | number | ✔ | v1 |
body | Update the content of comment | string | ✖ | v1 |
update-mode | Update mode. Default replace , another append |
string | ✖ | v1 |
contents | Add reaction | string | ✖ | v1.1 |
- When
body
is not entered, it will remain as it is - When
update-mode
isappend
, additional operations will be performed. Anything other thanappend
will be replaced. Only effective forbody
Update the specified issue according to the issue-number
.
- 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
state | Modify the status of issue, optional value open closed |
string | ✖ | v1 |
title | Modify the title of the issue | string | ✖ | v1 |
body | Modify the content of issue | string | ✖ | v1 |
update-mode | Update mode. Default replace , another append |
string | ✖ | v1 |
labels | Replace the labels of issue | string | ✖ | v1.1 |
assignees | Replace the assignees of issue | string | ✖ | v1.1 |
contents | Add reaction | string | ✖ | v1.1 |
state
defaults toopen
- When the option is not filled, it will keep the original
Advanced usage is not recommended to use multiple actions at the same time.
At UTC 0 on the 1st of each month, add the inactive
tag to all issues that have not been active for more than 30 days.
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
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
body | When operating an issue, you can comment. Do not comment when not typing | string | ✖ | v1 |
labels | Labels filtering | string | ✖ | v1.1 |
issue-state | State filtering | string | ✖ | v1 |
issue-assignee | Assignee filtering | string | ✖ | v1 |
issue-creator | Creator filtering | string | ✖ | v1 |
issue-mentioned | Mentioned filtering | string | ✖ | v1 |
body-includes | Body filtering | string | ✖ | v1 |
title-includes | Title filtering | string | ✖ | v1 |
inactive-day | Inactive days filtering | number | ✖ | v1.2 |
inactive-label | The label name adding | string | ✖ | v1 |
labels
: When there are multiple, the query will have multiple at the same time. If not entered, allissue-state
: The default isall
. Optional valueopen
closed
, when these 2 items are not, both areall
issue-assignee
: Multiplayer is not supported. If you do not enter or enter *, all will be searched. Enteringnone
will query issues for which the specified person is not addedinactive-day
: When entering, it will filter the issue update time earlier than the current time minus the number of inactive days. If not entered, allinactive-label
: The default isinactive
, others can be customized. When the project does not contain the label, it will be created automatically
Check whether the issue meets the conditions according to the passed parameters and issue-number
, and return a boolean value.
The effect of the following example is: when an issue is newly opened, verify whether the current issue designator contains x1
or x2
.
If one designated person is satisfied, the verification will pass, and at the same time, verify whether the title meets the conditions.
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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1.2 |
token | Token explain | string | ✔ | v1.2 |
issue-number | The number of issue | number | ✔ | v1.2 |
assignee-includes | Assignees contains check | string | ✖ | v1.2 |
title-includes | Title contains check | string | ✖ | v1.2 |
body-includes | Body contains check | string | ✖ | v1.2 |
title-includes
body-includes
supports the formatx1,x2
orx1,x2/y1,y2
. Only supports two levels- Return
check-result
Every 7 days at UTC 0, close the issues that have been filled with the need info
label and have not been active for more than 7 days.
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
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
body | When operating an issue, you can comment. Do not comment when not typing | string | ✖ | v1 |
labels | Labels filtering | string | ✖ | v1.1 |
issue-assignee | Assignee filtering | string | ✖ | v1 |
issue-creator | Creator filtering | string | ✖ | v1 |
issue-mentioned | Mentioned filtering | string | ✖ | v1 |
body-includes | Body filtering | string | ✖ | v1 |
title-includes | Title filtering | string | ✖ | v1 |
inactive-day | Inactive days filtering | number | ✖ | v1.2 |
labels
: When there are multiple, the query will have multiple at the same time. If not entered, allissue-assignee
: Multiplayer is not supported. If you do not enter or enter *, all will be searched. Enteringnone
will query issues for which the specified person is not addedinactive-day
: When entering, it will filter the issue update time earlier than the current time minus the number of inactive days. If not entered, all
Find the current warehouse issue No. 1, the creator is k and the content contains the comment list of 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'
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
issue-number | The number of issue | number | ✔ | v1 |
comment-auth | Comment creator, all will be queried if not filled | string | ✖ | v1 |
body-includes | Comment content includes filtering, no verification if not filled | string | ✖ | v1 |
direction | Return comments sort |
string | ✖ | v1 |
- Return
comments
in the following format:
[
{id: 1, auth: 'x', body: 'xxx', created: '', updated: ''},
{id: 2, auth: 'x', body: 'xxx', created: '', updated: ''},
]
direction
defaults to ascending order, only whendesc
is set, descending order will be returned- The
created
updated
in the returned array, determined by the environment, will be UTC +0
Every 3 months at UTC 0 on the 1st, lock all issues that have been filled with the inactive
label and have not been active for more than 128 days.
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
Param | Desc | Type | Required | Version |
---|---|---|---|---|
actions | Action type | string | ✔ | v1 |
token | Token explain | string | ✔ | v1 |
body | When operating an issue, you can comment. Do not comment when not typing | string | ✖ | v1 |
labels | Labels filtering | string | ✖ | v1.1 |
issue-state | State filtering | string | ✖ | v1 |
issue-assignee | Assignee filtering | string | ✖ | v1 |
issue-creator | Creator filtering | string | ✖ | v1 |
issue-mentioned | Mentioned filtering | string | ✖ | v1 |
body-includes | Body filtering | string | ✖ | v1 |
title-includes | Title filtering | string | ✖ | v1 |
inactive-day | Inactive days filtering | number | ✖ | v1.2 |
labels
: When there are multiple, the query will have multiple at the same time. If not entered, allissue-state
: The default isall
. Optional valueopen
closed
, when these 2 items are not, both areall
issue-assignee
: Multiplayer is not supported. If you do not enter or enter *, all will be searched. Enteringnone
will query issues for which the specified person is not addedinactive-day
: When entering, it will filter the issue update time earlier than the current time minus the number of inactive days. If not entered, all
Flexible reference.
Hypothetical scenario: When the issue modification of the watch
label is added, find out whether there is a comment containing error
created by k, if there is only one, update the comment, if not, add a new 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'
Need to have the person token with push permission.
- Personal token application
- Need to check
Full control of private repositories
- Need to check
- Project add secrets
- Select settings, select secrets, select
New repository secret
Name
is the same as in actionsValue
fill in the token just applied by the individual
- Select settings, select secrets, select
When the token is not filled in actions or the corresponding secrets are not added to the project, it will default to github-actions bot. More.
- 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 }}"
More.
"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 |
👀 |
Click the ···
icon in the upper right corner of a comment, select Copy link
, and the number at the end of the url is comment_id
.
-
You can directly use this GitHub Actions workflow template repositorie template
-
Personal exercises and tests Actions repository
You can come to the following repositories for reference. Please leave a message at here.
At the same time, if you have any questions during use, you can also ask and inquire in the issue or discussion.
ant-design | ant-design-vue | dumi | umi | vue-request |