diff --git a/.github/workflows/pr-github-checks.yml b/.github/workflows/pr-github-checks.yml new file mode 100644 index 0000000..9382127 --- /dev/null +++ b/.github/workflows/pr-github-checks.yml @@ -0,0 +1,61 @@ +name: PR Github Checks + +on: + pull_request_target: + branches: + - "main" + - "release-*" + types: + - opened + - reopened + - edited + - synchronize + - labeled + workflow_dispatch: + +jobs: + pr-label-check: + runs-on: ubuntu-latest + steps: + - name: Check for area label + if: always() + run: | + gh api --jq '.labels.[].name' /repos/${{ github.repository }}/pulls/${{ github.event.number }} | \ + grep -q '^area/' || (echo "area label missing"; exit 1) + env: + GH_TOKEN: ${{ github.token }} + + - name: Check for kind label + if: always() + run: | + gh api --jq '.labels.[].name' /repos/${{ github.repository }}/pulls/${{ github.event.number }} | \ + grep -q '^kind/' || (echo "kind label missing"; exit 1) + env: + GH_TOKEN: ${{ github.token }} + + - name: Check if kind label matches pr title prefix + run: | + kind_label=$( gh api --jq '.labels.[].name' /repos/${{ github.repository }}/pulls/${{ github.event.number }} | grep '^kind/') + kind_label_to_pr_title_prefix='{"kind/bug":"fix","kind/feature":"feat","kind/docs":"docs","kind/chore":"chore","kind/flaky-test":"test","kind/missing-test":"test","kind/failing-test":"test","kind/deps":"deps"}' + prefix=$(echo $kind_label_to_pr_title_prefix | jq -r ".\"$kind_label\"") + echo "${{ github.event.pull_request.title }}" | grep '^'$prefix || (echo "PR title should start with $prefix"; exit 1) + env: + GH_TOKEN: ${{ github.token }} + + pr-title-check: + runs-on: ubuntu-latest + steps: + - name: Validate title + uses: amannn/action-semantic-pull-request@47b15d52c5c30e94a17ec87eb8dd51ff5221fed9 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + types: | + deps + chore + docs + feat + fix + test + requireScope: false + subjectPattern: ^([A-Z].*[^.]|bump .*)$