From c77c3ecbb86bbc246d111909e003ca1897848941 Mon Sep 17 00:00:00 2001 From: go-to-k <24818752+go-to-k@users.noreply.github.com> Date: Sun, 18 Aug 2024 17:32:23 +0900 Subject: [PATCH 1/2] ci: Manage labels in PR lint --- .github/workflows/semantic-pull-request.yml | 78 +++++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/.github/workflows/semantic-pull-request.yml b/.github/workflows/semantic-pull-request.yml index 1cb02b17..726c31a4 100644 --- a/.github/workflows/semantic-pull-request.yml +++ b/.github/workflows/semantic-pull-request.yml @@ -1,4 +1,4 @@ -name: "Lint PR" +name: 'Lint PR' on: pull_request: @@ -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: @@ -34,9 +34,75 @@ jobs: deps main app + action io - operation - resourcetype + types version client - requireScope: false \ No newline at end of file + 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 From c927204c9bcdca18f75c8c76e5e43cee8ff44776 Mon Sep 17 00:00:00 2001 From: go-to-k <24818752+go-to-k@users.noreply.github.com> Date: Sun, 18 Aug 2024 17:34:23 +0900 Subject: [PATCH 2/2] scope --- .github/workflows/semantic-pull-request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/semantic-pull-request.yml b/.github/workflows/semantic-pull-request.yml index 726c31a4..901c6917 100644 --- a/.github/workflows/semantic-pull-request.yml +++ b/.github/workflows/semantic-pull-request.yml @@ -34,9 +34,9 @@ jobs: deps main app - action io - types + operation + resourcetype version client requireScope: false