GS Commit Message Checker
A GitHub action that checks that commit messages match a regex patter. The action is able to act on pull request and push events and check the pull request title and body or the commit message of the commits of a push.
On pull requests the title and body are concatenated delimited by two line breaks.
Designed to be very flexible in usage you can split checks into various workflows, using action types on pull request to listen on, define branches for pushes etc. etc.
Configuration
See also action definition and the following example workflow.
More information about pattern
and flags
can be found in the
JavaScript reference.
flags
is optional and defaults to gm
.
excludeDescription
, excludeTitle
and checkAllCommitMessages
are optional. Default behavior is to include the description and title and not check pull request commit messages.
Example Workflow
name: 'Commit Message Check'
on:
pull_request:
types:
- opened
- edited
- reopened
- synchronize
push:
branches:
- master
- 'releases/*'
jobs:
check-commit-message:
name: Check Commit Message
runs-on: ubuntu-latest
steps:
- name: Check Commit Type
uses: gsactions/commit-message-checker@v1
with:
pattern: '\[[^]]+\] .+$'
flags: 'gm'
error: 'Your first line has to contain a commit type like "[BUGFIX]".'
- name: Check Line Length
uses: gsactions/commit-message-checker@v1
with:
pattern: '^[^#].{74}'
error: 'The maximum line length of 74 characters is exceeded.'
excludeDescription: 'true' # optional: this excludes the description body of a pull request
excludeTitle: 'true' # optional: this excludes the title of a pull request
checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request
accessToken: ${{ secrets.GITHUB_TOKEN }} # github access token is only required if checkAllCommitMessages is true
- name: Check for Resolves / Fixes
uses: gsactions/commit-message-checker@v1
with:
pattern: '^.+(Resolves|Fixes): \#[0-9]+$'
error: 'You need at least one "Resolves|Fixes: #<issue number>" line.'
Development
Quick Start
git clone https://github.com/gsactions/commit-message-checker.git
npm install
npm run build
That's it, just start editing the sources...
Commands
Below is a list of commands you will probably find useful during the development cycle.
npm run build
Builds the package to the lib
folder.
npm run format
Runs Prettier on .ts and .tsx files and fixes errors.
npm run format-check
Runs Prettier on .ts and .tsx files without fixing errors.
npm run lint
Runs Eslint on .ts and .tsx files.
npm run pack
Bundles the package to the dist
folder.
npm run test
Runs Jest test suites.
npm run all
Runs all of the above commands.
License
This project is released under the terms of the MIT License