Awesome
<p align="center"> <a href="https://actions-cool.github.io/issues-helper/"> <img width="200" src="https://gw.alipayobjects.com/mdn/rms_f97235/afts/img/A*8xDgSL-O6O4AAAAAAAAAAAAAARQnAQ"> </a> </p> <h1 align="center">๐ค Issues Helper</h1> <div align="center">A GitHub Action that easily helps you automatically manage issues
</div>English | ็ฎไฝไธญๆ
๐ Link
๐ Why use GitHub Action?
- 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.
Who is using?
Please leave a message at here.
<table> <tr> <td align="center" width="180"> <a href="https://github.com/ant-design/ant-design"> <img src="https://avatars1.githubusercontent.com/u/12101536?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/ant-design-blazor/ant-design-blazor"> <img src="https://user-images.githubusercontent.com/29775873/129505619-5abddb68-8663-4c71-b7d2-049c716aab26.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/ant-design/ant-design-mobile"> <img src="https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/vueComponent/ant-design-vue"> <img src="https://avatars1.githubusercontent.com/u/32120805?s=200&v=4" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/ant-design/ant-design">ant-design</a></td> <td align="center" width="180"><a href="https://github.com/ant-design-blazor/ant-design-blazor">ant-design-blazor</a></td> <td align="center" width="180"><a href="https://github.com/ant-design/ant-design-mobile">ant-design-mobile</a></td> <td align="center" width="180"><a href="https://github.com/vueComponent/ant-design-vue">ant-design-vue</a></td> </tr><tr> <td align="center" width="180"> <a href="https://github.com/twbs/bootstrap"> <img src="https://getbootstrap.com/docs/5.1/assets/brand/bootstrap-logo-shadow.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/umijs/dumi"> <img src="https://avatars1.githubusercontent.com/u/33895495?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/electron/electron"> <img src="https://avatars.githubusercontent.com/u/13409222?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/element-plus/element-plus"> <img src="https://avatars.githubusercontent.com/u/68583457" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/twbs/bootstrap">bootstrap</a></td> <td align="center" width="180"><a href="https://github.com/umijs/dumi">dumi</a></td> <td align="center" width="180"><a href="https://github.com/electron/electron">electron</a></td> <td align="center" width="180"><a href="https://github.com/element-plus/element-plus">element-plus</a></td> </tr><tr> <td align="center" width="180"> <a href="https://github.com/alibaba/formily"> <img src="https://img.alicdn.com/imgextra/i2/O1CN01Kq3OHU1fph6LGqjIz_!!6000000004056-55-tps-1141-150.svg" width=""/> </a> </td> <td align="center" width="180"> <a href="https://github.com/vuejs/jsx-next"> <img src="https://avatars.githubusercontent.com/u/6128107?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/mui/material-ui"> <img src="https://avatars.githubusercontent.com/u/33663932?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/TuSimple/naive-ui"> <img src="https://www.naiveui.com/assets/naivelogo-XQ1U1Js8.svg" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/alibaba/formily">formily</a></td> <td align="center" width="180"><a href="https://github.com/vuejs/jsx-next">jsx-next</a></td> <td align="center" width="180"><a href="https://github.com/mui/material-ui">material-ui</a></td> <td align="center" width="180"><a href="https://github.com/TuSimple/naive-ui">naive-ui</a></td> </tr><tr> <td align="center" width="180"> <a href="https://github.com/jdf2e/nutui"> <img src="https://img14.360buyimg.com/imagetools/jfs/t1/167902/2/8762/791358/603742d7E9b4275e3/e09d8f9a8bf4c0ef.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/prettier/prettier"> <img src="https://user-images.githubusercontent.com/29775873/129505900-ca248179-2435-429d-9fd3-779206bcd899.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/react-component"> <img src="https://avatars3.githubusercontent.com/u/9441414?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/lijinke666/react-music-player"> <img src="https://user-images.githubusercontent.com/29775873/129506058-b0d8c741-f73a-496c-98de-7db2fb586db7.png" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/jdf2e/nutui">nutui</a></td> <td align="center" width="180"><a href="https://github.com/prettier/prettier">prettier</a></td> <td align="center" width="180"><a href="https://github.com/react-component">react-component</a></td> <td align="center" width="180"><a href="https://github.com/lijinke666/react-music-player">react-music-player</a></td> </tr><tr> <td align="center" width="180"> <a href="https://github.com/antvis/S2"> <img src="https://gw.alipayobjects.com/mdn/rms_56cbb2/afts/img/A*TI8XSK3W0EkAAAAAAAAAAAAAARQnAQ" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/nolimits4web/swiper"> <img src="https://user-images.githubusercontent.com/29775873/156721728-3b0021ea-6932-4a77-a104-2e0bad97346e.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/umijs/umi"> <img src="https://avatars1.githubusercontent.com/u/33895495?s=200&v=4" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/vitejs/vite"> <img src="https://avatars.githubusercontent.com/u/65625612?s=200&v=4" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/antvis/S2">S2</a></td> <td align="center" width="180"><a href="https://github.com/nolimits4web/swiper">swiper</a></td> <td align="center" width="180"><a href="https://github.com/umijs/umi">umi</a></td> <td align="center" width="180"><a href="https://github.com/vitejs/vite">vite</a></td> </tr><tr> <td align="center" width="180"> <a href="https://github.com/vitest-dev/vitest"> <img src="https://user-images.githubusercontent.com/11247099/145112184-a9ff6727-661c-439d-9ada-963124a281f7.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/AttoJS/vue-request"> <img src="https://user-images.githubusercontent.com/29775873/129506134-55044c85-24cd-47d3-81ef-dba842214d71.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/vuepress/vuepress-next"> <img src="https://v2.vuepress.vuejs.org/images/hero.png" width="46"/> </a> </td> <td align="center" width="180"> <a href="https://github.com/zoo-js/zoo"> <img src="https://avatars1.githubusercontent.com/u/70757173?s=200&v=4" width="46"/> </a> </td> </tr> <tr> <td align="center" width="180"><a href="https://github.com/vitest-dev/vitest">vitest</a></td> <td align="center" width="180"><a href="https://github.com/AttoJS/vue-request">vue-request</a></td> <td align="center" width="180"><a href="https://github.com/vuepress/vuepress-next">vuepress-next</a></td> <td align="center" width="180"><a href="https://github.com/zoo-js/zoo">zoo</a></td> </tr> </table>Badge
If you think actions-cool
can help you, please copy it to the README to support promotion and bring convenience to more repositories:. More color see.
[![actions-cool](https://img.shields.io/badge/using-actions--cool-blue?style=flat-square)](https://github.com/actions-cool)
โก Feedback
You are very welcome to try it out and put forward your comments. You can use the following methods:
- Report bugs or consult with Issue
- Discuss via Discussions
- Submit Pull Request to improve the code of
issues-helper
List
When the following list does not have the features you want, you can submit it in issues.
- โญ Base
- ๐ Advanced
๐ Usage
โญ Base
<wrapper base data-depth="2" data-warn="DO_NOT_REMOVE_THIS_COMMENT">In order to better display the function, the following is an example of the actual scene, please refer to it flexibly.
add-assignees
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@v3
with:
actions: 'add-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignees: 'xxx' or 'xx1,xx2'
random-to: 1
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
assignees | Designated person. No operation when no input or empty character | string | โ |
random-to | When set, it will be randomly selected in assignees | number | โ |
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- You can assign up to 10 people to each issue
add-labels
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@v3
with:
actions: 'add-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'bug' or 'xx1,xx2'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
labels | New labels. When it is not filled in or is empty character, do not add | string | โ |
labels
support multiple and separated by comma
close-issue
Close the specified issue.
- name: Close issue
uses: actions-cool/issues-helper@v3
with:
actions: 'close-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: xxx
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
close-reason | Reason for closing. Default not_planned , another completed | string | โ |
create-comment
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@v3
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 }}ใๅทดๆๅทดๆใ
emoji: '+1' or '+1,heart'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
body | Add comment content | string | โ |
emoji | Add emoji | string | โ |
- No action when
body
is empty - Return
comment-id
, which can be used for subsequent operations. Usage reference ${{ github.event.issue.user.login }}
indicates the creator of the issueemoji
support multiple and separated by comma
create-issue
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@v3
with:
actions: 'create-issue'
token: ${{ secrets.GITHUB_TOKEN }}
title: 'xxxx'
body: 'xxxx'
labels: 'xx'
assignees: 'xxx'
emoji: '+1'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
title | The title of the new issue | string | โ |
body | The body of the new issue | string | โ |
labels | The labels for the new issue | string | โ |
assignees | The assignees for the new issue | string | โ |
random-to | When set, it will be randomly selected in assignees | number | โ |
emoji | Add emoji | string | โ |
- No action when
title
is empty - Return
issue-number
. Usage reference
create-label
Create label. If you want to maintain labels in batches, see.
- name: Create label
uses: actions-cool/issues-helper@v3
with:
actions: 'create-label'
token: ${{ secrets.GITHUB_TOKEN }}
label-name: 'xx'
label-color: '0095b3'
label-desc: 'xx'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
label-name | Label name, emoji support | string | โ |
label-color | Label color, the format is hexadecimal color code, without # | string | โ |
label-desc | Label description | string | โ |
label-name
: If it already exists, no operationlabel-color
: Default isededed
delete-comment
According to comment-id
delete the specified comment.
- name: Delete comment
uses: actions-cool/issues-helper@v3
with:
actions: 'delete-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: xxx
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
comment-id | The comment ID | number | โ |
get-issue
Query issue information.
- name: Get Issue
uses: actions-cool/issues-helper@v3
with:
actions: 'get-issue'
token: ${{ secrets.GITHUB_TOKEN }}
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
- Return
issue-number
issue-title
issue-body
issue-labels
issue-assignees
issue-state
. Usage reference
lock-issue
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@v3
with:
actions: 'lock-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
lock-reason | Reason for locking issue | string | โ |
lock-reason
: Optional values areoff-topic
too heated
resolved
spam
open-issue
Open the specified issue.
- name: Open issue
uses: actions-cool/issues-helper@v3
with:
actions: 'open-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: xxx
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
remove-assignees
Remove the person designated by issue.
- name: Remove assignees
uses: actions-cool/issues-helper@v3
with:
actions: 'remove-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
assignees: 'xx'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
assignees | Designated person removed. When it is an empty character, do not remove | string | โ |
remove-labels
Remove the specified labels.
- name: Remove labels
uses: actions-cool/issues-helper@v3
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'xx'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
labels | The removed labels. When it is a blank character, do not remove | string | โ |
labels
supports multiple, such asx1,x2,x3
, only the labels added by the issue will be removed
set-labels
Replace the labels of issue.
- name: Set labels
uses: actions-cool/issues-helper@v3
with:
actions: 'set-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'xx'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
labels | labels set. When empty characters, will remove all | string | โ |
unlock-issue
Unlock the specified issue.
- name: Unlock issue
uses: actions-cool/issues-helper@v3
with:
actions: 'unlock-issue'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
update-comment
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@v3
with:
actions: 'update-comment'
token: ${{ secrets.GITHUB_TOKEN }}
comment-id: ${{ github.event.comment.id }}
emoji: 'eyes'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
comment-id | The comment ID | number | โ |
out-comments | The output of find-comments , if you find multiple, operate multiple | string | โ |
body | Update the content of comment | string | โ |
update-mode | Update mode. Default replace , another append | string | โ |
emoji | Add reaction | string | โ |
- 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-issue
Update the specified issue according to the issue-number
.
- name: Update issue
uses: actions-cool/issues-helper@v3
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'
emoji: '+1'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
state | Modify the status of issue, optional value open closed | string | โ |
title | Modify the title of the issue | string | โ |
body | Modify the content of issue | string | โ |
update-mode | Update mode. Default replace , another append | string | โ |
labels | Replace the labels of issue | string | โ |
assignees | Replace the assignees of issue | string | โ |
emoji | Add reaction | string | โ |
state
defaults toopen
- When the option is not filled, it will keep the original
โซ Back to list </wrapper>
๐ Advanced
<wrapper advanced data-depth="2" data-warn="DO_NOT_REMOVE_THIS_COMMENT">Advanced usage is not recommended to use multiple actions at the same time.
check-inactive
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@v3
with:
actions: 'check-inactive'
token: ${{ secrets.GITHUB_TOKEN }}
inactive-day: 30
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
body | When operating an issue, you can comment. Do not comment when not typing | string | โ |
emoji | Add reaction for this comment | string | โ |
labels | Labels filtering | string | โ |
issue-state | State filtering | string | โ |
issue-assignee | Assignee filtering | string | โ |
issue-creator | Creator filtering | string | โ |
issue-mentioned | Mentioned filtering | string | โ |
body-includes | Body filtering | string | โ |
title-includes | Title filtering | string | โ |
inactive-day | Inactive days filtering | number | โ |
inactive-mode | Detect inactive mode, default issue | string | โ |
inactive-label | The label name adding | string | โ |
exclude-labels | Exclude labels filtering | string | โ |
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 automaticallyexclude-labels
: When set to include$exclude-empty
, no label issue can be excludedinactive-mode
:- Default
issue
: the issue updated time - Optional
comment
: the last comment update time - Optional
issue-created
: the issue created time - Optional
comment-created
: the comment creation time - You can also set multiple such as:
comment, issue-created
- It will be detected with priority, the update time of the last comment will be detected first, if there is no comment, the creation time of the issue will be used
- Default
check-issue
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. Check rules
name: Check Issue
on:
issues:
types: [edited]
jobs:
check-issue:
runs-on: ubuntu-latest
steps:
- name: check-issue
uses: actions-cool/issues-helper@v3
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 |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
assignee-includes | Assignees contains check | string | โ |
title-includes | Title contains check | string | โ |
title-excludes | Check whether the title is empty after removing the default title | string | โ |
body-includes | Body contains check | string | โ |
title-includes
body-includes
supports the formatx1,x2
orx1,x2/y1,y2
. Only supports two levels- Return
check-result
, due to yml reasons, the judgment condition isif: steps.xxid.outputs.check-result =='true'
close-issues
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@v3
with:
actions: 'close-issues'
token: ${{ secrets.GITHUB_TOKEN }}
labels: 'need info'
inactive-day: 7
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
body | When operating an issue, you can comment. Do not comment when not typing | string | โ |
emoji | Add reaction for this comment | string | โ |
labels | Labels filtering | string | โ |
issue-assignee | Assignee filtering | string | โ |
issue-creator | Creator filtering | string | โ |
issue-mentioned | Mentioned filtering | string | โ |
body-includes | Body filtering | string | โ |
title-includes | Title filtering | string | โ |
inactive-day | Inactive days filtering | number | โ |
exclude-labels | Exclude labels filtering | string | โ |
close-reason | Reason for closing. Default not_planned , another completed | string | โ |
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, allexclude-labels
: When set to include$exclude-empty
, no label issue can be excluded
find-comments
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@v3
with:
actions: 'find-comments'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: 1
comment-auth: 'k'
body-includes: 'this'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
comment-auth | Comment creator, all will be queried if not filled | string | โ |
body-includes | Comment content includes filtering, no verification if not filled | string | โ |
direction | Return comments sort | string | โ |
- 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
find-issues
Find the current repository, the creator is k , the title contains this
, the body contains that
, and the list of issues in the open state.
- name: Find issues
uses: actions-cool/issues-helper@v3
with:
actions: 'find-issues'
token: ${{ secrets.GITHUB_TOKEN }}
issue-creator: 'k'
issue-state: 'open'
title-includes: 'this'
body-includes: 'that'
labels: 'documentation'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-state | State filtering | string | โ |
issue-creator | Creator filtering | string | โ |
title-includes | Title filtering | string | โ |
body-includes | Body filtering | string | โ |
labels | Labels filtering | string | โ |
exclude-labels | Exclude labels filtering | string | โ |
inactive-day | Inactive days filtering | number | โ |
direction | Return sort | string | โ |
- Returns
issues
in the following format:
[
{number: 1, auth: 'x', body: 'xxx', body: 'xxx', state: 'open', assignees: ['x1', 'x2'], created: '', updated: ''},
{number: 2, auth: 'x', body: 'xxx', body: 'xxx', state: 'closed', assignees: ['x1', 'x2'], created: '', updated: ''},
]
issue-state
: The default isopen
. Other values are:closed
,all
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 exclude-labels
: When set to include$exclude-empty
, no label issue can be excluded
lock-issues
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@v3
with:
actions: 'lock-issues'
token: ${{ secrets.GITHUB_TOKEN }}
labels: 'inactive'
inactive-day: 128
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
body | When operating an issue, you can comment. Do not comment when not typing | string | โ |
emoji | Add reaction for this comment | string | โ |
labels | Labels filtering | string | โ |
issue-state | State filtering | string | โ |
issue-assignee | Assignee filtering | string | โ |
issue-creator | Creator filtering | string | โ |
issue-mentioned | Mentioned filtering | string | โ |
body-includes | Body filtering | string | โ |
title-includes | Title filtering | string | โ |
inactive-day | Inactive days filtering | number | โ |
lock-reason | Reason for locking issue | string | โ |
exclude-labels | Exclude labels filtering | string | โ |
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, allexclude-labels
: When set to include$exclude-empty
, no label issue can be excluded
mark-assignees
Quickly assign person, only for the issue to add editor comments.
name: Issue Mark Assignees
on:
issue_comment:
types: [created, edited]
jobs:
mark-assignees:
runs-on: ubuntu-latest
steps:
- name: mark-assignees
uses: actions-cool/issues-helper@v3
with:
actions: 'mark-assignees'
token: ${{ secrets.GITHUB_TOKEN }}
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
assign-command | Simple commands can be set, such as: /a | string | โ |
require-permission | Permission required, default is write | string | โ |
assign-command
: default/assign
require-permission
: Optional values areadmin
,write
,read
,none
- If the team member sets the
read
permission, it isread
- If the external Collaborator is set to
read
permission, it isread
- Ordinary users have
read
permission - When set
write
,admin
andwrite
meet the conditions
- If the team member sets the
mark-duplicate
Quickly mark duplicate questions, only for issue new comments or edit comments.
name: Issue Mark Duplicate
on:
issue_comment:
types: [created, edited]
jobs:
mark-duplicate:
runs-on: ubuntu-latest
steps:
- name: mark-duplicate
uses: actions-cool/issues-helper@v3
with:
actions: 'mark-duplicate'
token: ${{ secrets.GITHUB_TOKEN }}
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
duplicate-command | Simple commands can be set, such as: /d | string | โ |
duplicate-labels | Add additional labels to this issue | string | โ |
remove-labels | Set removable labels | string | โ |
labels | Replace the labels of the issue | string | โ |
emoji | Add reaction for this comment | string | โ |
close-issue | Whether to close the issue at the same time | string | โ |
require-permission | Permission required, default is write | string | โ |
close-reason | Reason for closing. Default not_planned , another completed | string | โ |
duplicate-command
: When setting concise commands, while still supporting the originalDuplicate of
. Block content contains?
labels
: Highest priorityclose-issue
: Bothtrue
or'true'
can take effectrequire-permission
: Optional values areadmin
,write
,read
,none
- If the team member sets the
read
permission, it isread
- If the external Collaborator is set to
read
permission, it isread
- Ordinary users have
read
permission - When set
write
,admin
andwrite
meet the conditions
- If the team member sets the
toggle-labels
When an issue is reopened, the set labels are removed if they already exist, otherwise they are added.
name: Toggle Labels
on:
issues:
types: [reopened]
jobs:
toggle-labels:
runs-on: ubuntu-latest
steps:
- name: Toggle labels
uses: actions-cool/issues-helper@v3
with:
actions: 'toggle-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: 'unread,outdated'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
issue-number | The number of issue. When not input, it will be obtained from the trigger event | number | โ |
labels | The toggle labels. Delete if the label already exists, add if it does not exist | string | โ |
welcome
When an issue is created, the user who created the issue for the first time is welcome.
If the user is not creating for the first time, there is no operation.
name: Issue Welcome
on:
issues:
types: [opened]
jobs:
issue-welcome:
runs-on: ubuntu-latest
steps:
- name: welcome
uses: actions-cool/issues-helper@v3
with:
actions: 'welcome'
token: ${{ secrets.GITHUB_TOKEN }}
body: hi @${{ github.event.issue.user.login }}, welcome!
labels: 'welcome1, welcome2'
assignees: 'xx1'
issue-emoji: '+1, -1, eyes'
Param | Desc | Type | Required |
---|---|---|---|
actions | Action type | string | โ |
token | Token explain | string | โ |
body | Comment on the welcome content, no comment if you leave it blank | string | โ |
labels | Add labels to this issue | string | โ |
assignees | Add assignees to this issue | string | โ |
issue-emoji | Add reaction to this issue | string | โ |
- If these 4 options are not filled, no operation
โซ Back to list </wrapper>
๐ Reference
<wrapper reference data-depth="1" data-warn="DO_NOT_REMOVE_THIS_COMMENT">token
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 input ${{ secrets.GITHUB_TOKEN }}
, it will default to github-actions-bot
. More.
GitHub Docs
outputs
use
- name: Create issue
uses: actions-cool/issues-helper@v3
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:
- https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/metadata-syntax-for-github-actions#outputs
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs
Check rules
"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
Emoji types
content | emoji |
---|---|
+1 | ๐ |
-1 | ๐ |
laugh | ๐ |
confused | ๐ |
heart | โค๏ธ |
hooray | ๐ |
rocket | ๐ |
eyes | ๐ |
comment-id
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
.
โซ Back to list </wrapper>
Actions Template
- You can directly use this GitHub Actions workflow template repositorie template
- Personal exercises and tests Actions repository
- Can also refer to the warehouse of online users