From 223fb0bc2bc073a31c9c0d4ba9a664632e484b79 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 21 Jun 2024 14:03:48 +0100 Subject: [PATCH] ci: add action to lint PR title (#69) --- .github/workflows/lint-pr-title.yml | 57 +++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/lint-pr-title.yml diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 0000000..2affc3b --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,57 @@ +name: "Lint Pull Request Titles" + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +permissions: + pull-requests: read + +jobs: + main: + name: Validate PR title + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5 + id: lint_pr_title + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed (newline-delimited). + # ref: biomejs/biome/CONTRIBUTING.md + types: | + build + chore + ci + docs + feat + fix + perf + refactor + release + revert + test + # Configure that a scope must always be provided. + requireScope: false + # Configure which scopes are disallowed in PR titles. + # These are regex patterns auto-wrapped in `^ $`. + # + # We disable the following scopes: + # - `release` because we have the `release` type + # - UPPERCASE titles because we promote the use of lowercase + disallowScopes: | + [A-Z]+ + # Configure additional validation for the subject based on a regex. + # Ensures that the subject doesn't start with an uppercase character. + subjectPattern: ^[^A-Z].*$ + # If `subjectPattern` is configured, you can use this property to override + # the default error message that is shown when the pattern doesn't match. + # The variables `subject` and `title` can be used within the message. + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + didn't match the configured pattern. + Please ensure that the subject doesn't start with an uppercase character. + The scope should not be in UPPERCASE.