CI: Add a workflow which automates some labeling (#2812)
* Initial content-based labeling * Improve labeling rules around docs and /worlds/generic * Improve labeling rules around docs and webhost * Formatting * Update matching for webhost * back to square 1 on is:docu * Try a better glob for docs * Formatting * Manage PR state labels * Correct syntax for conditions * Correct syntax for conditions * add trigger on reopening * add trigger on closing * keep labels in sync as pr updates * Change edit event to sync * Restrict only to PRs to main * address review comments * apply only to PRs into main
This commit is contained in:
parent
0c8f726393
commit
55455914e6
|
@ -0,0 +1,30 @@
|
||||||
|
'is: documentation':
|
||||||
|
- changed-files:
|
||||||
|
- all-globs-to-all-files: '{**/docs/**,**/README.md}'
|
||||||
|
|
||||||
|
'affects: webhost':
|
||||||
|
- changed-files:
|
||||||
|
- all-globs-to-any-file: 'WebHost.py'
|
||||||
|
- all-globs-to-any-file: 'WebHostLib/**/*'
|
||||||
|
|
||||||
|
'affects: core':
|
||||||
|
- changed-files:
|
||||||
|
- all-globs-to-any-file:
|
||||||
|
- '!*Client.py'
|
||||||
|
- '!README.md'
|
||||||
|
- '!LICENSE'
|
||||||
|
- '!*.yml'
|
||||||
|
- '!.gitignore'
|
||||||
|
- '!**/docs/**'
|
||||||
|
- '!typings/kivy/**'
|
||||||
|
- '!test/**'
|
||||||
|
- '!data/**'
|
||||||
|
- '!.run/**'
|
||||||
|
- '!.github/**'
|
||||||
|
- '!worlds_disabled/**'
|
||||||
|
- '!worlds/**'
|
||||||
|
- '!WebHost.py'
|
||||||
|
- '!WebHostLib/**'
|
||||||
|
- any-glob-to-any-file: # exceptions to the above rules of "stuff that isn't core"
|
||||||
|
- 'worlds/generic/**/*.py'
|
||||||
|
- 'CommonClient.py'
|
|
@ -0,0 +1,44 @@
|
||||||
|
name: Label Pull Request
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: ['opened', 'reopened', 'synchronize', 'ready_for_review', 'converted_to_draft', 'closed']
|
||||||
|
branches: ['main']
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
labeler:
|
||||||
|
name: 'Apply content-based labels'
|
||||||
|
if: github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/labeler@v5
|
||||||
|
with:
|
||||||
|
sync-labels: true
|
||||||
|
peer_review:
|
||||||
|
name: 'Apply peer review label'
|
||||||
|
if: >-
|
||||||
|
(github.event.action == 'opened' || github.event.action == 'reopened' ||
|
||||||
|
github.event.action == 'ready_for_review') && !github.event.pull_request.draft
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: 'Add label'
|
||||||
|
run: "gh pr edit \"$PR_URL\" --add-label 'waiting-on: peer-review'"
|
||||||
|
env:
|
||||||
|
PR_URL: ${{ github.event.pull_request.html_url }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
unblock_draft_prs:
|
||||||
|
name: 'Remove waiting-on labels'
|
||||||
|
if: github.event.action == 'converted_to_draft' || github.event.action == 'closed'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: 'Remove labels'
|
||||||
|
run: |-
|
||||||
|
gh pr edit "$PR_URL" --remove-label 'waiting-on: peer-review' \
|
||||||
|
--remove-label 'waiting-on: core-review' \
|
||||||
|
--remove-label 'waiting-on: world-maintainer' \
|
||||||
|
--remove-label 'waiting-on: author'
|
||||||
|
env:
|
||||||
|
PR_URL: ${{ github.event.pull_request.html_url }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
Loading…
Reference in New Issue