Skip to content

Commit

Permalink
[CHORE] Fix the labeller CI step failing on main (#2142)
Browse files Browse the repository at this point in the history
Splits our CI steps into two workflows:

1. `PR Labeller`: Autolabelling + (required) check that a label is
applied
2. `Release Drafter`: drafts a new release on push to `main`

This lets us better control permissioning (so that `PR Labeller` can be
run from forks, and won't have access to `contents: write` permissions)

---------

Co-authored-by: Jay Chia <[email protected]@users.noreply.github.com>
  • Loading branch information
jaychia and Jay Chia authored Apr 16, 2024
1 parent 6563b3c commit 2421770
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 47 deletions.
67 changes: 67 additions & 0 deletions .github/workflows/pr-labeller.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Adapted from: https://github.com/release-drafter/release-drafter#readme

name: PR Labeller

on:
# pull_request event is required only for autolabeler
# pull_request:
# Only following types are handled by the action, but one can default to all as well
# types: [opened, reopened, synchronize, edited, labeled, unlabeled]
# pull_request_target event is required for autolabeler to support PRs from forks
pull_request_target:
branches: [main]
types: [opened, reopened, synchronize, edited, labeled, unlabeled]

# write permission is required for autolabeler and commenting on the PR
permissions:
contents: read
pull-requests: write

jobs:
run_auto_labeller:
runs-on: ubuntu-latest
steps:
# (Optional) GitHub Enterprise requires GHE_HOST variable set
#- name: Set GHE_HOST
# run: |
# echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV

# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: release-drafter/release-drafter@v6
# (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml
# with:
# config-name: my-config.yml
# disable-autolabeler: true
with:
disable-releaser: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Check that at least one of the required labels was applied on this PR
label:
# Only run after the auto-labeller completes (in `run_auto_labeller`)
needs: run_auto_labeller
runs-on: ubuntu-latest
steps:
- uses: mheap/github-action-required-labels@v5
with:
mode: minimum
count: 1
labels: performance, enhancement, bug, chore, documentation, dependencies
add_comment: true
message: |
This PR is being prevented from merging because you need at least one of the required labels:
```
enhancement | performance | bug | chore | documentation | dependencies
```
The canonical and easiest way of adding them is to add the following prefixes to your PR title:
* [FEAT]: adds the `enhancement` label
* [PERF]: adds the `performance` label
* [BUG]: adds the `bug` label
* [CHORE]: adds the `chore` label
* [DOCS]: adds the `documentation` label
Thanks for helping us categorize and manage our PRs!
52 changes: 5 additions & 47 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,16 @@ on:
# branches to consider in the event; optional, defaults to all
branches:
- main
# pull_request event is required only for autolabeler
# pull_request:
# Only following types are handled by the action, but one can default to all as well
# types: [opened, reopened, synchronize, edited, labeled, unlabeled]
# pull_request_target event is required for autolabeler to support PRs from forks
pull_request_target:
branches: [main]
types: [opened, reopened, synchronize, edited, labeled, unlabeled]

permissions:
contents: read
# write permission is required to create a github release
contents: write
# write permission is required for autolabeler (which we don't use here)
# otherwise, read permission is required at least
pull-requests: read

jobs:
update_release_draft:
permissions:
# write permission is required to create a github release
contents: write
# write permission is required for autolabeler
# otherwise, read permission is required at least
pull-requests: write
runs-on: ubuntu-latest
steps:
# (Optional) GitHub Enterprise requires GHE_HOST variable set
Expand All @@ -42,35 +32,3 @@ jobs:
# disable-autolabeler: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Check that at least one of the required labels was applied on this PR
label:
# Only run on non-main jobs (pending PRs), and after the auto-labeller completes (in `update_release_draft`)
if: github.event.pull_request.head.ref != 'refs/heads/main'
needs: update_release_draft
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: mheap/github-action-required-labels@v5
with:
mode: minimum
count: 1
labels: performance, enhancement, bug, chore, documentation, dependencies
add_comment: true
message: |
This PR is being prevented from merging because you need at least one of the required labels:
```
enhancement | performance | bug | chore | documentation | dependencies
```
The canonical and easiest way of adding them is to add the following prefixes to your PR title:
* [FEAT]: adds the `enhancement` label
* [PERF]: adds the `performance` label
* [BUG]: adds the `bug` label
* [CHORE]: adds the `chore` label
* [DOCS]: adds the `documentation` label
Thanks for helping us categorize and manage our PRs!

0 comments on commit 2421770

Please sign in to comment.