diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 43e53fa..e466f33 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -4,10 +4,11 @@ Describe the use case and detail of the change. If this PR addresses an issue on ### Checklist -Before creating a PR, run through this checklist and mark each as complete: +Before creating a pull request (PR), run through this checklist and mark each as complete: - [ ] I have read the [contributing guidelines](/CONTRIBUTING.md). - [ ] I have signed the [F5 Contributor License Agreement (CLA)](https://github.com/f5/.github/blob/main/CLA/cla-markdown.md). +- [ ] The PR title follows the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/). - [ ] If applicable, I have added tests that prove my fix is effective or that my feature works. - [ ] If applicable, I have checked that any relevant tests pass after adding my changes. - [ ] I have updated any relevant documentation (e.g. [`README.md`](/README.md)). diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 0000000..8739a9b --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,41 @@ +--- +name: Lint PR Title +on: + pull_request_target: + types: [opened, edited, synchronize] +permissions: read-all +jobs: + main: + name: Validate PR title + runs-on: ubuntu-24.04 + permissions: + pull-requests: write + steps: + - name: Check PR title + id: lint_pr_title + uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on the PR if the title doesn't follow the Conventional Commits specification + if: always() && (steps.lint_pr_title.outputs.error_message != null) + uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2.9.0 + with: + header: pr-title-lint-error + message: | + Thank you for opening this pull request! 👋🏼 + + In order to streamline our release process and maintain a consistent commit history, we require pull request (PR) titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/). + + Based on our linter, it looks like your proposed title needs to be adjusted. Here's the error message we received: + + ``` + ${{ steps.lint_pr_title.outputs.error_message }} + ``` + + - name: Delete the previous comment once the PR title has been updated + if: ${{ steps.lint_pr_title.outputs.error_message == null }} + uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2.9.0 + with: + header: pr-title-lint-error + delete: true