diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..8688b2782 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,45 @@ +version: v1 +labels: + - label: "semver:major" + sync: true # remove label if match failed, default: false + matcher: + title: ".*BREAKING.*" + + - label: "semver:minor" + sync: true # remove label if match failed, default: false + matcher: + title: "^feat(?!.*BREAKING).*" + + - label: "semver:patch" + sync: true # remove label if match failed, default: false + matcher: + title: "^fix(?!.*BREAKING).*" + + - label: "maintenance" + sync: true # remove label if match failed, default: false + matcher: + title: "^chore(?!.*BREAKING).*" + files: + any: + - "package.json" + + - label: "CI/CD" + sync: true # remove label if match failed, default: false + matcher: + files: + any: + - ".github/**" + + - label: "docs" + sync: true # remove label if match failed, default: false + matcher: + files: + any: + - "**/*.md" + + - label: "manifest" + sync: true # remove label if match failed, default: false + matcher: + files: + any: + - "action.yml" diff --git a/.github/update-labels.sh b/.github/update-labels.sh new file mode 100644 index 000000000..91a339691 --- /dev/null +++ b/.github/update-labels.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +REPO_NAME="iggy-rs/iggy" +API_URL="https://api.github.com/repos/$REPO_NAME/labels" + +create_label() { + local name="$1" + local color="$2" + local description="$3" + + curl -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3+json" \ + -d '{"name": "'"$name"'", "color": "'"$color"'", "description": "'"$description"'"}' \ + "$API_URL" +} + +create_label "CI/CD" "93ecdb" "Pull requests bring CI/CD improvements." +create_label "docs" "0075ca" "Improvements or additions to documentation." +create_label "duplicate" "cfd3d7" "This issue or pull request already exists." +create_label "maintenance" "ed4d86" "Maintenance work." +create_label "manifest" "D93F0B" "Label for pull request that brings a patch change." +create_label "semver:major" "8151c5" "Label for pull request that brings a major (BREAKING) change." +create_label "semver:minor" "8af85b" "Label for pull request that brings a minor change." +create_label "semver:patch" "fef2c0" "Label for pull request that brings a patch change." diff --git a/.github/workflows/main-update-labels.yaml b/.github/workflows/main-update-labels.yaml new file mode 100644 index 000000000..64254bb5a --- /dev/null +++ b/.github/workflows/main-update-labels.yaml @@ -0,0 +1,32 @@ +name: Update repository labels +on: + push: + branches: + - main + paths: + - ".github/workflows/uptdate-label.yml" + - ".github/update-labels.sh" + +jobs: + checks: + name: Update labels + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ secrets.DEPLOY_APP_ID }} + private-key: ${{ secrets.DEPLOY_APP_KEY }} + + - name: Call script + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + chmod +x .github/update-labels.sh + .github/update-labels.sh diff --git a/.github/workflows/pull-request-relabelling.yaml b/.github/workflows/pull-request-relabelling.yaml new file mode 100644 index 000000000..43c158658 --- /dev/null +++ b/.github/workflows/pull-request-relabelling.yaml @@ -0,0 +1,23 @@ +name: Relabelling +on: + pull_request: + +jobs: + check-labels: + name: Relabelling + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ secrets.DEPLOY_APP_ID }} + private-key: ${{ secrets.DEPLOY_APP_KEY }} + + # https://github.com/fuxingloh/multi-labeler + - name: labels + uses: fuxingloh/multi-labeler@v4 + with: + github-token: ${{ steps.app-token.outputs.token }}