Skip to content

Label Commenter Action: Label triggered GitHub Action for posting a template comment, and automatically open/close/lock/unlock issues, pull-requests, and discussions.

License

Notifications You must be signed in to change notification settings

peaceiris/actions-label-commenter

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Label Commenter Action

Label Commenter Action thumbnail

license release GitHub release date Release Feed

Code Scanning CodeFactor codecov

This action is one of label triggered GitHub Actions for posting a template comment, and automatically open/close/lock/unlock issues or pull-requests.

This Action was submitted to the GitHub Actions Hackathon and featured by GitHub. (Featured actions from the GitHub Actions Hackathon - The GitHub Blog)

Table of Contents

Getting Started

Create your GitHub Actions workflow file and Label Commenter Action setting file. Commit those and push to the remote default branch.

Workflow Setting

Create your workflow file .github/workflows/label-commenter.yml as follows.

name: Label Commenter on: issues: types: [labeled, unlabeled] pull_request_target: types: [labeled, unlabeled] permissions: contents: read issues: write pull-requests: write jobs: comment: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: Label Commenter uses: peaceiris/actions-label-commenter@v1

Action Setting

Create your action configuration file .github/label-commenter-config.yml as follows.

comment: header: Hi, there. footer: "\  ---\n\n\  > This is an automated comment created by the [peaceiris/actions-label-commenter]. \  Responding to the bot or mentioning it won't have any effect.\n\n\  [peaceiris/actions-label-commenter]: https://github.com/peaceiris/actions-label-commenter" labels: - name: invalid labeled: issue: body: Please follow the issue templates. action: close pr: body: Thank you @{{ pull_request.user.login }} for suggesting this. Please follow the pull request templates. action: close unlabeled: issue: body: Thank you for following the template. The repository owner will reply. action: open - name: forum labeled: issue: body: |  Please ask questions about GitHub Actions at the following forum.  https://github.community/c/github-actions  action: close - name: wontfix labeled: issue: body: This will not be worked on but we appreciate your contribution. action: close unlabeled: issue: body: This has become active again. action: open - name: duplicate labeled: issue: body: This issue already exists. action: close - name: good first issue labeled: issue: body: This issue is easy for contributing. Everyone can work on this. - name: proposal labeled: issue: body: Thank you @{{ issue.user.login }} for suggesting this. - name: locked (spam) labeled: issue: body: |  This issue has been **LOCKED** because of spam!   Please do not spam messages and/or issues on the issue tracker. You may get blocked from this repository for doing so.  action: close locking: lock lock_reason: spam pr: body: |  This pull-request has been **LOCKED** because of spam!   Please do not spam messages and/or pull-requests on this project. You may get blocked from this repository for doing so.  action: close locking: lock lock_reason: spam - name: locked (heated) labeled: issue: body: |  This issue has been **LOCKED** because of heated conversation!   We appreciate exciting conversations, as long as they won't become too aggressive and/or emotional.  locking: lock lock_reason: too heated pr: body: |  This pull-request has been **LOCKED** because of heated conversation!   We appreciate exciting conversations, as long as they won't become too aggressive and/or emotional.  locking: lock lock_reason: too heated unlabeled: issue: body: |  This issue has been unlocked now.  locking: unlock pr: body: |  This pull-request has been unlocked now.  locking: unlock - name: locked (off-topic) labeled: issue: body: |  This issue has been **LOCKED** because of off-topic conversations!   Please use our other means of communication for casual chats.  action: close locking: lock lock_reason: off-topic - name: locked (resolved) labeled: issue: body: |  This issue has been **LOCKED** because of it being resolved!   The issue has been fixed and is therefore considered resolved.  If you still encounter this or it has changed, open a new issue instead of responding to solved ones.  action: close locking: lock lock_reason: resolved

Options

Set a Path to Action Setting File

Default is .github/label-commenter-config.yml

- name: Label Commenter uses: peaceiris/actions-label-commenter@v1 with: config_file: ./path_to/your_config.yml

Set a Personal Access Token

Default is ${{ github.token }}

- name: Label Commenter uses: peaceiris/actions-label-commenter@v1 with: github_token: ${{ secrets.GH_PAT }}

Enable Debug Mode

- name: Label Commenter uses: peaceiris/actions-label-commenter@v1 env: RUNNER_DEBUG: 1

Work with Issue Template

Here is a proposal issue template: .github/ISSUE_TEMPLATE/3_proposal.yml

name: Proposal description: Suggest an idea for this project title: '' labels: proposal assignees: peaceiris body: ...

Scenario:

  1. When a user opens an issue with the proposal template, the proposal label will be added automatically.
  2. This action can detect that labeled event and create a template comment of proposal.

Work with Other Auto Label Actions

Authenticating with the GITHUB_TOKEN - GitHub Docs

When you use the repository's GITHUB_TOKEN to perform tasks, events triggered by the GITHUB_TOKEN, with the exception of workflow_dispatch and repository_dispatch, will not create a new workflow run. This prevents you from accidentally creating recursive workflow runs. For example, if a workflow run pushes code using the repository's GITHUB_TOKEN, a new workflow will not run even when the repository contains a workflow configured to run when push events occur.

You need to provide a personal access token (with public_repo for a public repository, repo for a private repository) to an auto label GitHub Actions or GitHub Bot like actions/labeler.

# .github/workflows/labeler.yml name: "Pull Request Labeler" on: - pull_request_target jobs: triage: runs-on: ubuntu-20.04 permissions: {} timeout-minutes: 1 steps: - uses: actions/labeler@v3 with: repo-token: "${{ secrets.GH_PAT }}"

Scenario:

  1. Someone updates the README.md and opens a pull-request.
  2. actions/labeler adds the documentation label automatically.
  3. peaceiris/actions-label-commenter creates the template comment automatically.

Examples

Comment and Close Invalid Format Issue or Pull Request

Source

Comment and Close Invalid Format Issue or Pull Request - peaceiris/actions-label-commenter GitHub Action

Reopen Issue or Pull Request

Source

Reopen Issue or Pull Request - peaceiris/actions-label-commenter GitHub Action

Comment and Close Wontfix Issue or Pull Request

Source

Comment and Close Wontfix Issue or Pull Request - peaceiris/actions-label-commenter GitHub Action

Comment and Close Duplicate Issue or Pull Request

Source

Comment and Close Duplicate Issue or Pull Request - peaceiris/actions-label-commenter GitHub Action

Comment Multiple Line

Source

Comment Multiple Line - peaceiris/actions-label-commenter GitHub Action

Comment and Close Multiple Issues or Pull Requests

Select Label Labeled
Comment and Close Multiple Issues or Pull Requests - peaceiris/actions-label-commenter GitHub Action Comment and Close Multiple Issues or Pull Requests - peaceiris/actions-label-commenter GitHub Action

Multiple issues will be closed.

Comment and Close Multiple Issues or Pull Requests - peaceiris/actions-label-commenter GitHub Action

Lock or Unlock issue or Pull Request

Source

Lock or Unlock issue or Pull Request - peaceiris/actions-label-commenter GitHub Action

Changelog

License

Maintainer

About

Label Commenter Action: Label triggered GitHub Action for posting a template comment, and automatically open/close/lock/unlock issues, pull-requests, and discussions.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 10

Languages