mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-25 07:45:17 +02:00
Derives topic labels from the PR title scope: `enhance(actions): ...` gets `topic/gitea-actions`. Scopes map to `topic/<scope>`, with aliases for names that differ (`oauth` → `topic/authentication`). Labels stay in sync with the title, while ones applied by hand are left alone. Scopes with no matching label on the repo are ignored, so no new labels get created. --------- Co-authored-by: Giteabot <teabot@gitea.io>
49 lines
1.7 KiB
YAML
49 lines
1.7 KiB
YAML
name: labeler
|
|
|
|
on:
|
|
# pull_request_target is required to label PRs from forks; jobs only use pinned
|
|
# actions or base-branch checkout, never PR-head code.
|
|
pull_request_target: # zizmor: ignore[dangerous-triggers]
|
|
types: [opened, synchronize, reopened, edited, ready_for_review]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
labeler:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
steps:
|
|
- uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d # v6.2.0
|
|
with:
|
|
sync-labels: true
|
|
|
|
pr-title:
|
|
if: github.event.pull_request.draft == false
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
steps:
|
|
# Base-branch checkout only: pull_request_target runs with elevated token; never run PR-head code here.
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
|
with:
|
|
ref: ${{ github.event.pull_request.base.sha }}
|
|
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
with:
|
|
node-version: 26
|
|
# Labels are only synced after the title lints, so an invalid title never reaches the label diff.
|
|
- run: node ./tools/ci-tools.ts lint-pr-title
|
|
env:
|
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
- run: node ./tools/ci-tools.ts set-pr-labels
|
|
env:
|
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
PR_TITLE_BEFORE: ${{ github.event.changes.title.from }}
|
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
GITHUB_TOKEN: ${{ github.token }}
|