Skip to content

Commit

Permalink
build: Use commitlint to enfore conventional commits
Browse files Browse the repository at this point in the history
`commitlint` has a better CLI, which allows to enforce
conventional commits in a GitHub Actions pipeline.
  • Loading branch information
MoritzWeber0 committed Jan 25, 2024
1 parent 4fecea1 commit f726ec8
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 22 deletions.
17 changes: 17 additions & 0 deletions .commitlintrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: Copyright DB Netz AG and contributors
# SPDX-License-Identifier: CC0-1.0
rules:
body-leading-blank: [2, always]
footer-leading-blank: [2, always]
scope-case: [2, always, lower-case]
subject-case: [2, always, sentence-case]
subject-empty: [2, never]
subject-full-stop: [2, never, .]
subject-max-length: [2, always, 72]
type-empty: [2, never]
type-enum:
[
2,
always,
[build, chore, ci, docs, feat, fix, merge, perf, refactor, revert, test],
]
57 changes: 57 additions & 0 deletions .github/workflows/commits.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# SPDX-FileCopyrightText: Copyright DB Netz AG and contributors
# SPDX-License-Identifier: CC0-1.0

name: commits

on:
pull_request:
branches: [main]

jobs:
conventional-commits:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install commitlint
run: npm install -g @commitlint/cli
- name: Validate commit messages
id: conventional-commits
env:
SHA_FROM: ${{ github.event.pull_request.base.sha }}
SHA_TO: ${{ github.event.pull_request.head.sha }}
run: |
delim="_EOF_$(uuidgen)"
echo "validation-result<<$delim" >> "$GITHUB_OUTPUT"
r=0
commitlint --from "$SHA_FROM" --to "$SHA_TO" >> "$GITHUB_OUTPUT" 2>&1 || r=$?
echo "$delim" >> "$GITHUB_OUTPUT"
exit $r
- name: Post comment if validation failed
if: always() && steps.conventional-commits.outcome == 'failure'
uses: actions/github-script@v6
env:
TEXT: |-
The pull request does not conform to the conventional commit specification. Please ensure that your commit messages follow the spec: <https://www.conventionalcommits.org/>.
We also strongly recommend that you set up your development environment with pre-commit, as described in our [Developer documentation](https://dsd-dbs.github.io/capella-collab-manager/development/). This will run all the important checks right before you commit your changes, and avoids lengthy CI wait time and round trips.
This is the commit validation log:
```
${{ steps.conventional-commits.outputs.validation-result }}
```
Here are some examples of valid commit messages:
```
build: Bump frontend versions
docs(user): Add model creation workflow
feat: Add a monitoring dashboard
```
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: process.env.TEXT
})
7 changes: 4 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,11 @@ repos:
types: []
exclude: '.+\.spec(-helper)?\.ts$'
types_or: ["html", "ts"]
- repo: https://github.com/qoomon/git-conventional-commits
rev: v2.6.7
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.11.0
hooks:
- id: conventional-commits
- id: commitlint
stages: [commit-msg]
- repo: https://github.com/asottile/pyupgrade
rev: v3.15.0
hooks:
Expand Down
17 changes: 0 additions & 17 deletions git-conventional-commits.json

This file was deleted.

2 changes: 0 additions & 2 deletions git-conventional-commits.json.license

This file was deleted.

0 comments on commit f726ec8

Please sign in to comment.