diff --git a/.github/workflows/pr-verify.yml b/.github/workflows/pr-verify.yml deleted file mode 100644 index 0b6d3284..00000000 --- a/.github/workflows/pr-verify.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Verify Pull Request -on: # yamllint disable-line rule:truthy - pull_request_target: - types: [opened, edited, synchronize, reopened, ready_for_review] -# yamllint disable rule:line-length -jobs: - pr-verify: - runs-on: ubuntu-latest - name: Verify Pull Request - if: github.event_name != 'pull_request' || !github.event.pull_request.draft - steps: - - name: Verifier action - id: verifier - uses: kubernetes-sigs/kubebuilder-release-tools@012269a88fa4c034a0acf1ba84c26b195c0dbab4 # v0.4.3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Checkout repository - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - with: - ref: ${{ github.event.pull_request.head.sha }} - - - name: Verify Shellcheck - run: make verify-shellcheck diff --git a/.github/workflows/verifier.yml b/.github/workflows/verifier.yml new file mode 100644 index 00000000..68febd41 --- /dev/null +++ b/.github/workflows/verifier.yml @@ -0,0 +1,42 @@ +name: "PR Title Verifier" + +on: + pull_request: + types: [opened, edited, synchronize, reopened] + +permissions: {} + +jobs: + verify: + permissions: + contents: read + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Validate PR Title Format + env: + TITLE: ${{ github.event.pull_request.title }} + run: | + if [[ -z "$TITLE" ]]; then + echo "Error: PR title cannot be empty." + exit 1 + fi + + if ! [[ "$TITLE" =~ ^($'\u26A0'|$'\u2728'|$'\U0001F41B'|$'\U0001F4D6'|$'\U0001F680'|$'\U0001F331') ]]; then + echo "Error: Invalid PR title format." + echo "Your PR title must start with one of the following indicators:" + echo "- Breaking change: ⚠ (U+26A0)" + echo "- Non-breaking feature: ✨ (U+2728)" + echo "- Patch fix: 🐛 (U+1F41B)" + echo "- Docs: 📖 (U+1F4D6)" + echo "- Release: 🚀 (U+1F680)" + echo "- Infra/Tests/Other: 🌱 (U+1F331)" + exit 1 + fi + + echo "PR title is valid: '$TITLE'"