mirror of
https://github.com/simple-icons/simple-icons.git
synced 2024-12-26 01:13:41 +02:00
151 lines
5.8 KiB
YAML
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
|