From d45a7d0b88a32db437a3e5100804a46f47cb050d Mon Sep 17 00:00:00 2001 From: Craig Roy Date: Thu, 25 Jan 2024 10:05:35 +0000 Subject: [PATCH] chore: Check PR titles are conventional commits (#137) Check that PR titles conform to conventional commits style This is copied from `hugr`, which is a vanilla usage of `action-semantic-pull-request` --- .github/workflows/pr-title.yml | 72 ++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/pr-title.yml diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml new file mode 100644 index 00000000..33cb9674 --- /dev/null +++ b/.github/workflows/pr-title.yml @@ -0,0 +1,72 @@ +name: Check Conventional Commits format + +on: + pull_request_target: + branches: + - main + types: + - opened + - edited + - synchronize + - labeled + - unlabeled + merge_group: + types: [checks_requested] + +permissions: + pull-requests: read + +jobs: + main: + name: Validate Conventional Commit PR title + runs-on: ubuntu-latest + # The action does not support running on merge_group events, + # but if the check succeeds in the PR there is no need to check it again. + if: github.event_name == 'pull_request_target' + steps: + - uses: amannn/action-semantic-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed (newline-delimited). + # Default: https://github.com/commitizen/conventional-commit-types + types: | + feat + fix + docs + style + refactor + perf + test + ci + chore + revert + # Configure which scopes are allowed (newline-delimited). + # These are regex patterns auto-wrapped in `^ $`. + #scopes: | + # .* + # Configure that a scope must always be provided. + requireScope: false + # Configure which scopes are disallowed in PR titles (newline-delimited). + # For instance by setting the value below, `chore(release): ...` (lowercase) + # and `ci(e2e,release): ...` (unknown scope) will be rejected. + # These are regex patterns auto-wrapped in `^ $`. + #disallowScopes: | + # release + # [A-Z]+ + # Configure additional validation for the subject based on a regex. + # This example ensures 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. + # If the PR contains one of these newline-delimited labels, the + # validation is skipped. If you want to rerun the validation when + # labels change, you might want to use the `labeled` and `unlabeled` + # event triggers in your workflow. + ignoreLabels: | + ignore-semantic-pull-request