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

 

Languages