chore: Add semantic PR Linter #15
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Lint PR" | |
on: | |
pull_request: | |
types: | |
- opened | |
- edited | |
- synchronize | |
permissions: | |
pull-requests: write | |
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 additional validation for the subject based on a regex. | |
# We enforce that the subject starts 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 | |
starts 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: | | |
bot | |
ignore-semantic-pull-request | |
- uses: marocchino/sticky-pull-request-comment@v2 | |
# When the previous steps fails, the workflow would stop. By adding this | |
# condition you can continue the execution with the populated error message. | |
if: always() && (steps.lint_pr_title.outputs.error_message != null) | |
with: | |
header: pr-title-lint-error | |
message: > | |
### Hey there and thank you for opening this pull request! 👋🏼 | |
It looks like your proposed title needs to be adjusted. Our PR title follows the | |
[Conventional Commits specification](https://www.conventionalcommits.org) and uses | |
a naming convention of `[type]: [Subject]`, where **type** is typically `feat`, `fix`, | |
or `chore` and the **subject** starts with a capitalized letter (e.g. `feat: Big next thing` or | |
`fix: Divide by zero bug`, or `chore: Update docs`). | |
>${{ steps.lint_pr_title.outputs.error_message }} | |
# Delete a previous comment when the issue has been resolved | |
- if: ${{ steps.lint_pr_title.outputs.error_message == null }} | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
header: pr-title-lint-error | |
delete: true |