diff --git a/.git_hooks/commit-msg b/.git_hooks/commit-msg new file mode 100755 index 0000000..7398961 --- /dev/null +++ b/.git_hooks/commit-msg @@ -0,0 +1,3 @@ +#!/bin/sh + +npx commitlint --edit $1 diff --git a/.github/workflows/lint_commit_messages.yaml b/.github/workflows/lint_commit_messages.yaml new file mode 100644 index 0000000..9c5083b --- /dev/null +++ b/.github/workflows/lint_commit_messages.yaml @@ -0,0 +1,38 @@ +name: Lint Commit Messages +on: [pull_request] + +permissions: + pull-requests: write +jobs: + commitlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: wagoid/commitlint-github-action@456526eec71276a59e74aafdfe06a9632ac2eee1 + id: commitlint + - if: ${{ failure() && steps.commitlint.outcome == 'failure' }} + uses: marocchino/sticky-pull-request-comment@3d60a5b2dae89d44e0c6ddc69dd7536aec2071cd + with: + header: Commitlint + recreate: true + message: | + ## Wrong commit message format detected + We use [Semantic Commit Messages](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716) in our project. + + > **Warning** + > Probably you forgot to activate local git hooks. + + Run the next command in the project root to activate local hooks: + ```sh + sh ./scripts/install_hooks.sh + ``` + + More info you can find in [job logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) + - if: ${{ success() }} + uses: marocchino/sticky-pull-request-comment@3d60a5b2dae89d44e0c6ddc69dd7536aec2071cd + with: + header: Commitlint + hide: true + hide_classify: "OUTDATED" diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..422b194 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1 @@ +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/scripts/install_hooks.sh b/scripts/install_hooks.sh new file mode 100644 index 0000000..17a11b1 --- /dev/null +++ b/scripts/install_hooks.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# Make .git_hooks folder as hooks source for git +git config core.hooksPath .git_hooks/ + +# install commitlint and @commitlint/config-conventional globally +npm install -g commitlint @commitlint/config-conventional