Skip to content

Commit

Permalink
chore(ci): add commitlint action
Browse files Browse the repository at this point in the history
  • Loading branch information
hgw77 committed Dec 2, 2024
1 parent 273ee8f commit e2f84bc
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions .github/workflows/ci-title-lint-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: CI Check Title

on:
pull_request:
types:
- opened
- edited
- synchronize
- reopened

jobs:
title-lint:
name: Validate PR title
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Load config
id: load_config
run: |
# Load types and scopes directly from commitlint.config.mjs and set as environment variables
node --experimental-modules -e "
import('./commitlint.config.mjs').then(({ types, scopes }) => {
// Write types and scopes as multiline environment variables
console.log('TYPES<<EOF');
console.log(types.join('\n'));
console.log('EOF');
console.log('SCOPES<<EOF');
console.log(scopes.join('\n'));
console.log('EOF');
});
" >> $GITHUB_ENV
echo "Done!"
- name: CI Check Title
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
wip: true
# Configure which types are allowed (newline-delimited).
# Default: https://github.com/commitizen/conventional-commit-types
types: |
${{ env.TYPES }}
scopes: |
${{ env.SCOPES }}
# Configure that a scope must always be provided.
requireScope: true
# 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: |
bot
ignore-semantic-pull-request
# If you're using a format for the PR title that differs from the traditional Conventional
# Commits spec, you can use these options to customize the parsing of the type, scope and
# subject. The `headerPattern` should contain a regex where the capturing groups in parentheses
# correspond to the parts listed in `headerPatternCorrespondence`.
# See: https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-commits-parser#headerpattern
headerPattern: '^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$'
headerPatternCorrespondence: type, scope, subject

0 comments on commit e2f84bc

Please sign in to comment.