Automatically assign reviewers to pull requests using labels.
To assign reviewers using labels, provide an object with the key as the label and the value as an array of reviewers.
assign:
login: ['ljbc1994', 'reviewer2', 'reviewer3']
signup: ['reviewer4', 'reviewer5']
dashboard: ['ljbc1994', 'reviewer6']
Create a workflow in your repository, you only need to trigger the workflow when a label has been added or removed:
name: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeled
jobs:
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: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeled
jobs:
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 }}"
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 |
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 |
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.
{
"assign": {
"login": ["ljbc1994", "reviewer2", "reviewer3"]
}
}
name: "Pull Request Label Reviewers"
on:
pull_request:
types:
- unlabeled
- labeled
jobs:
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 }}"}'