Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/totallymoney/assign-reviewers-by-labels-action
🏷️ Automatically assign reviewers to a PR using labels
https://github.com/totallymoney/assign-reviewers-by-labels-action
actions github labels pr reviewers
Last synced: about 1 month ago
JSON representation
🏷️ Automatically assign reviewers to a PR using labels
- Host: GitHub
- URL: https://github.com/totallymoney/assign-reviewers-by-labels-action
- Owner: totallymoney
- License: mit
- Created: 2022-07-23T11:53:39.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-06T07:51:13.000Z (about 1 year ago)
- Last Synced: 2024-10-06T19:33:38.601Z (about 1 month ago)
- Topics: actions, github, labels, pr, reviewers
- Language: TypeScript
- Homepage:
- Size: 1 MB
- Stars: 9
- Watchers: 1
- Forks: 3
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Assign Reviewers By Labels
Automatically assign reviewers to pull requests using labels.
## Usage
### Add a `.github/assign_label_reviewers.yml` file
To assign reviewers using labels, provide an object with the **key as the label** and the **value as an array of reviewers**.
```yml
assign:
login: ['ljbc1994', 'reviewer2', 'reviewer3']
signup: ['reviewer4', 'reviewer5']
dashboard: ['ljbc1994', 'reviewer6']
```### Create Workflow
Create a workflow in your repository, you only need to trigger the workflow when a label has been added or removed:
#### Basic Workflow
```yml
name: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeledjobs:
assign_and_unassign:
name: assign and unassign reviewers
runs-on: ubuntu-latest
steps:
- name: main
id: assign-reviewers
uses: totallymoney/assign-reviewers-by-labels-action@v1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
```#### Advanced Workflow
```yml
name: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeledjobs:
assign_and_unassign:
name: assign and unassign reviewers
runs-on: ubuntu-latest
steps:
- name: main
id: assign_reviewers
uses: totallymoney/assign-reviewers-by-labels-action@v1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
- name: assigned reviewers
if: steps.assign_reviewers.outputs.assigned_status == 'success'
run: |
echo "reviewers assigned: ${{ steps.reviewer.outputs.assigned_reviewers }}"
- name: unassigned reviewers
if: steps.assign_reviewers.outputs.unassigned_status == 'success'
run: |
echo "reviewers unassigned: ${{ steps.reviewer.outputs.unassigned_reviewers }}"
```## Inputs ➡️ Outputs
### Action inputs
| Name | Description | Required | Default
| - | - | - | - |
| `repo-token` | Token to use to authorize label changes. Typically the GITHUB_TOKEN secret, with `contents:read` and `pull-requests:write` access | `true` | N/A
| `unassign-if-label-removed` | Whether to unassign reviewers that belong to a label if the label has been removed | `true` | `true`
| `config-file` | The path to the label configuration file or endpoint that returns JSON configuration file | `false` | `.github/assign_label_reviewers.yml`
| `config-request-headers` | The headers to be passed when calling an endpoint to return the JSON configuration file | `false` | N/A### Action outputs
| Name | Description
| - | - |
| `assigned_status` | Whether reviewers have been assigned (`success` / `info`)
| `assigned_message` | Additional details of the status
| `assigned_url` | The url of the PR
| `assigned_reviewers` | The reviewers that have been assigned
| `unassigned_status` | Whether reviewers have been unassigned (`success` / `info`)
| `unassigned_message` | Additional details of the status
| `unassigned_url` | The url of the PR
| `unassigned_reviewers` | The reviewers that have been unassigned## Examples
### Using a remote config
If you want to retrieve the config from an endpoint, we also support this.
Please note:
- We only allow retrieving the config using a `GET` request with the ability to pass through custom headers if you need to pass an api token (`config-request-headers`).
- The endpoint **MUST** return the config in the `JSON` format.#### Example Config
```json
{
"assign": {
"login": ["ljbc1994", "reviewer2", "reviewer3"]
}
}
```#### Example Workflow
```yml
name: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeledjobs:
assign_and_unassign:
name: assign and unassign reviewers
runs-on: ubuntu-latest
steps:
- name: main
id: assign_reviewers
uses: totallymoney/assign-reviewers-by-labels-action@v1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
config-file: 'https://www.totallymoney.com/assign-reviewers-label-config.json'
config-request-headers: '{"Authorization": "Bearer ${{ secrets.API_TOKEN }}"}'
```