Skip to content

GitHub Action that checks commit messages of pushes and pull request against a regex pattern

License

Notifications You must be signed in to change notification settings

ItaloYeltsin/commit-message-checker

 
 

Repository files navigation

GS Commit Message Checker

Version Test

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

About

GitHub Action that checks commit messages of pushes and pull request against a regex pattern

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.0%
  • JavaScript 1.0%