Skip to content

Commit

Permalink
ci: Manage labels in PR lint
Browse files Browse the repository at this point in the history
  • Loading branch information
go-to-k committed Aug 18, 2024
1 parent 6433925 commit c77c3ec
Showing 1 changed file with 72 additions and 6 deletions.
78 changes: 72 additions & 6 deletions .github/workflows/semantic-pull-request.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "Lint PR"
name: 'Lint PR'

on:
pull_request:
Expand All @@ -9,10 +9,10 @@ on:
- reopened

permissions:
pull-requests: read
pull-requests: write

jobs:
main:
lint:
name: Validate PR title
runs-on: ubuntu-latest
steps:
Expand All @@ -34,9 +34,75 @@ jobs:
deps
main
app
action
io
operation
resourcetype
types
version
client
requireScope: false
requireScope: false

label:
name: Manage labels
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MINOR_LABEL: 'minor'
MINOR_LABEL_COLOR: '#FBCA04'
MAJOR_LABEL: 'major'
MAJOR_LABEL_COLOR: '#D93F0B'
PATCH_LABEL: 'patch'
PATCH_LABEL_COLOR: '#C5DEF5'
steps:
- name: Check out the repository
uses: actions/checkout@v4
- name: Create labels if they do not exist
run: |
EXISTING_LABELS=$(gh label list --json name --jq '.[].name')
if ! echo "$EXISTING_LABELS" | grep -q "$MINOR_LABEL"; then
gh label create "$MINOR_LABEL" --color "$MINOR_LABEL_COLOR"
fi
if ! echo "$EXISTING_LABELS" | grep -q "$MAJOR_LABEL"; then
gh label create "$MAJOR_LABEL" --color "$MAJOR_LABEL_COLOR"
fi
if ! echo "$EXISTING_LABELS" | grep -q "$PATCH_LABEL"; then
gh label create "$PATCH_LABEL" --color "$PATCH_LABEL_COLOR"
fi
- name: Manage labels based on PR title
run: |
TITLE=$(jq -r '.pull_request.title' < "$GITHUB_EVENT_PATH")
PR_NUMBER=${{ github.event.pull_request.number }}
LABELS=$(gh pr view $PR_NUMBER --json labels --jq '.labels[].name')
HAS_MINOR_LABEL=$(echo "$LABELS" | grep -q "$MINOR_LABEL" && echo "true" || echo "false")
HAS_MAJOR_LABEL=$(echo "$LABELS" | grep -q "$MAJOR_LABEL" && echo "true" || echo "false")
HAS_PATCH_LABEL=$(echo "$LABELS" | grep -q "$PATCH_LABEL" && echo "true" || echo "false")
if [ "$HAS_MAJOR_LABEL" == "true" ]; then
if [ "$HAS_PATCH_LABEL" == "true" ];then
gh pr edit $PR_NUMBER --remove-label "$PATCH_LABEL"
fi
if [ "$HAS_MINOR_LABEL" == "true" ];then
gh pr edit $PR_NUMBER --remove-label "$MINOR_LABEL"
fi
exit 0
fi
if [[ $TITLE =~ ^feat.* ]]; then
if [ "$HAS_MINOR_LABEL" == "false" ];then
gh pr edit $PR_NUMBER --add-label "$MINOR_LABEL"
fi
if [ "$HAS_PATCH_LABEL" == "true" ];then
gh pr edit $PR_NUMBER --remove-label "$PATCH_LABEL"
fi
else
if [ "$HAS_PATCH_LABEL" == "false" ];then
gh pr edit $PR_NUMBER --add-label "$PATCH_LABEL"
fi
if [ "$HAS_MINOR_LABEL" == "true" ];then
gh pr edit $PR_NUMBER --remove-label "$MINOR_LABEL"
fi
fi

0 comments on commit c77c3ec

Please sign in to comment.