simple-icons/.github/workflows/add-labels-priority.yml
2024-04-01 09:34:33 +02:00

151 lines
5.8 KiB
YAML

name: Add Pull Request Labels and Assign to Project
on:
pull_request_target:
types: [opened, closed]
jobs:
triage:
runs-on: ubuntu-latest
if: github.event.action == 'opened'
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- uses: simple-icons/labeler@v1
with:
repo-token: ${{ steps.app-token.outputs.token }}
assign-to-project:
runs-on: ubuntu-latest
name: Assign to Project
if: github.event.action == 'opened'
needs: triage
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
- id: get-labels
uses: ./.github/actions/get-labels
with:
issue_number: ${{ github.event.pull_request.number }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- id: get-si-members
name: Get simple-icons members
run: |
members="$(curl -H 'Authorization: Bearer ${{ steps.app-token.outputs.token }}' --retry 5 -s https://api.github.com/orgs/simple-icons/members | jq .[].login | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')"
echo "members=$members" >> $GITHUB_OUTPUT
- id: get-linked-issues
name: Get linked issue numbers
uses: mondeja/pr-linked-issues-action@v2
with:
# Lazy linked issues. If one of the lines of the pull request body
# matches one of the next contents, the matching issue number will
# be added to `issues` output:
add_links_by_content: |
**Issue:** #{issue_number}
**Issue**: #{issue_number}
**Close:** #{issue_number}
**Close**: #{issue_number}
**Closes:** #{issue_number}
**Closes**: #{issue_number}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- id: priority-1
name: Assign `update icon/data` pull requests to "Priority 1"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
if: contains(steps.get-labels.outputs.labels, 'update icon/data')
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Priority 1
- id: priority-2
name: Assign `new icon` pull requests to "Priority 2"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
# the PR has the `new icon` label along with a linked issue and
# the opener is not a member of simple-icons organization
if: |
contains(steps.get-labels.outputs.labels, 'new icon') &&
join(steps.get-linked-issues.outputs.issues) != '' &&
contains(steps.get-si-members.outputs.members, github.event.pull_request.user.login) == false
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Priority 2
- id: priority-3
name: Assign `new icon` pull requests by maintainers to "Priority 3"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
# the PR has the `new icon` label along with a linked issue and
# the opener is a member of the simple-icons organisation
if: |
contains(steps.get-labels.outputs.labels, 'new icon') &&
join(steps.get-linked-issues.outputs.issues) != '' &&
contains(steps.get-si-members.outputs.members, github.event.pull_request.user.login) == true
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Priority 3
- id: priority-4
name: Assign `new icon` pull requests by maintainers without an issue to "Priority 4"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
# the PR has the `new icon` label but with no linked issue and
# the opener is a member of the simple-icons organisation
if: |
contains(steps.get-labels.outputs.labels, 'new icon') &&
join(steps.get-linked-issues.outputs.issues) == '' &&
contains(steps.get-si-members.outputs.members, github.event.pull_request.user.login) == true
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Priority 4
- name: Assign pull requests to "Unprioritised"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
if: |
steps.priority-1.conclusion == 'skipped' &&
steps.priority-2.conclusion == 'skipped' &&
steps.priority-3.conclusion == 'skipped' &&
steps.priority-4.conclusion == 'skipped'
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Unprioritised
unassign-from-project:
runs-on: ubuntu-latest
name: Unassign from Project
if: |
github.event.action != 'opened' &&
github.event.pull_request.merged == false
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- name: Assign closed pull requests to "Completed or Abandoned"
uses: srggrs/assign-one-project-github-action@1.3.1
env:
MY_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
with:
project: https://github.com/orgs/simple-icons/projects/2
column_name: Completed or Abandoned