name: PR title on: pull_request: branches: [main, "release/*"] types: [opened, synchronize, reopened, edited] permissions: {} concurrency: group: pr-title-${{ github.event.pull_request.number }} cancel-in-progress: true jobs: pr-title: name: Conventional PR title runs-on: ubuntu-24.04 timeout-minutes: 2 steps: - name: Validate title for Release Please env: PR_TITLE: ${{ github.event.pull_request.title }} run: >- node -e 'const title = process.env.PR_TITLE ?? ""; const conventional = /^(?:feat|fix|docs|refactor|perf|test|build|ci|chore|revert)(?:\([a-z0-9._/-]+\))?!?: .+/u; if (!conventional.test(title)) { console.error("PR title must use Conventional Commits, for example: feat: add historical source import"); process.exit(1); }'