Skip to content
activity

GitHub Action

Issue Checker

v1.14 Latest version

Issue Checker

activity

Issue Checker

Labels and comments to issues automatically based on their body

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Issue Checker

uses: MaaAssistantArknights/[email protected]

Learn more about this action in MaaAssistantArknights/issue-checker

Choose a version

Issue Checker

Automatically label and comments to new issues or pull requests based on the contents.

Usage

Create .github/issue-checker.yml

Create a .github/issue-checker.yml file with a list of labels and regex to match to apply the label.

Basic Examples

# For labels
labels:
- name: label-1
  # Add `bug` label if issue contains the word `Bug` or `bug`; Remove if not
  content: bug
  regexes: '[Bb]ug'
- name: enhancement
  # Add `enhancement` label if issue match all of the regexes; Remove if not; Skip if the label `bug` have been added;
  regexes: '[Ee]nhancement|[Ff]eature [Rr]equest'
  skip-if:
  - label-1
- name: label-3
  # Add `Collaborator` label if the issue author is a COLLABORATOR.
  content: Collaborator
  author_association: COLLABORATOR
# For comments
comments:
- name: comments-1
  # Comment the content below if issue contains the word `Uploading`
  content:
    "You have some files that did not upload successfully, please re-upload them."
  regexes:
    'Uploading'
- name: comments-2
  # Comment the content below if issue contains the links that include snippets listed in url_list
  content:
    There are unconfirmed links, please visit with caution.
  url_mode: deny
  url_list:
    - example\.com/asd # regex
- name: comments-3
  # Comment the content below if issue contains the links that don't include any snippets listed in url_list
  content:
    There are unconfirmed links, please visit with caution.
  url_mode: allow_only
  url_list: # You can use any string property of URL: "hash" | "host" | "hostname" | "href" | "origin" | "password" | "pathname" | "port" | "protocol" | "search" | "username"
    - hostname: (?:^|.+\.)github\.com$
      pathname: ^/exapmle-user/example-repo

The format of the configuration file is shown below.

default-mode:          # optional
  pull_request:        # optional, choices [pull_request, pull_request_target, issues, issue_comment]
  - add                # optional, choices [add, remove]
  - ...
  ...
labels:                # optional, choices [labels, comments]
- name: string         # required
  content: string      # optional, default ${name}
  regexes:             # optional, required if ${author_association} undefined
    string[] | string
  url_mode:            # optional, ignored if ${regexes} exists
    "allow_only" | "deny"
  url_list:            # optional, ignored if ${regexes} exists, keeps in mind that if `search` has valud that is must be started with `?` which needs to be escaped
    (string | Partial<Pick<URL, { [K in keyof URL]: URL[K] extends string ? K : never; }[keyof URL]>>)[]
  author_association:  # optional, required if ${regexes} undefined
    string
  remove-if:           # optional
    string[] | string
  skip-if:             # optional
    string[] | string
  mode:                # optional
    pull_request:      # optional, choices [pull_request, pull_request_target, issues, issue_comment]
    - add              # optional, choices [add, remove]
    - ...
    ...
- ...
...

Create Workflow

Create a workflow (eg: .github/workflows/issue-checker.yml see Creating a Workflow file) to utilize the labeler action with content:

name: "Issue Checker"
on:
  issues:
    types: [opened, edited]
  pull_request_target:
    types: [opened, edited]
jobs:
  triage:
    permissions:
      contents: read
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
    - uses: MaaAssistantArknights/[email protected]
      with:
        repo-token: "${{ secrets.GITHUB_TOKEN }}"
        configuration-path: .github/issue-checker.yml
        not-before: 2022-08-01T00:00:00Z
        include-title: 0
        sync-labels: 1

Warning: Do not use triggers other than pull_request, pull_request_target, issues and issue_comment, unless you know what you are doing.

Note: This grants access to the GITHUB_TOKEN so the action can make calls to GitHub's rest API.

Inputs

Various inputs are defined in action.yml to let you configure the issue-checker:

Name Description Default
repo-token Token to use to authorize label changes. N/A
configuration-path The path to the label configuration file N/A
sync-labels Whether or not to remove labels when not match 1
include-title Whether or not the title participate in matching 0
not-before Any issues prior to this timestamp will be ignored (blank to handle all issues) N/A