Skip to content

Commit

Permalink
ci(commitlint): addition of commit message linter (#13)
Browse files Browse the repository at this point in the history
Adds commitlint to check the commit message style against agreed
conventional commits configuration.
  • Loading branch information
tiborsimko committed Jan 11, 2024
1 parent c112728 commit 8168224
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 2 deletions.
21 changes: 21 additions & 0 deletions .commitlintrc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
rules:
body-case: [2, always, sentence-case]
body-full-stop: [2, always]
body-leading-blank: [2, always]
body-max-line-length: [2, always, 72]
footer-leading-blank: [2, always]
footer-max-line-length: [2, always, 72]
header-max-length: [2, always, 72]
scope-case: [2, always, lower-case]
subject-case:
- 2
- never
- [pascal-case, sentence-case, start-case, upper-case]
subject-empty: [2, never]
subject-full-stop: [2, never, "."]
type-case: [2, always, lower-case]
type-empty: [2, never]
type-enum:
- 2
- always
- [build, chore, ci, docs, feat, fix, perf, refactor, style, test]
39 changes: 38 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file is part of REANA.
# Copyright (C) 2020 CERN.
# Copyright (C) 2020, 2024 CERN.
#
# REANA is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.
Expand All @@ -9,6 +9,43 @@ name: CI
on: [push, pull_request]

jobs:
lint-commitlint:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@v4

- name: Install commitlint
run: |
npm install conventional-changelog-conventionalcommits
npm install commitlint@latest
- name: Check commit message compliance of the recently pushed commit
if: github.event_name == 'push'
run: |
./run-tests.sh --check-commitlint HEAD~1 HEAD
- name: Check commit message compliance of the pull request
if: github.event_name == 'pull_request'
run: |
./run-tests.sh --check-commitlint ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} ${{ github.event.pull_request.head.sha }}
lint-shellcheck:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Runs shell script static analysis
run: |
sudo apt-get install shellcheck
./run-tests.sh --check-shellcheck
build:
runs-on: ubuntu-20.04
steps:
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (C) 2019, 2020 CERN.
Copyright (C) 2019, 2020, 2021, 2023, 2024 CERN.

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
49 changes: 49 additions & 0 deletions run-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
#
# This file is part of REANA.
# Copyright (C) 2024 CERN.
#
# REANA is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

set -o errexit
set -o nounset

check_commitlint () {
from=${2:-master}
to=${3:-HEAD}
npx commitlint --from="$from" --to="$to"
found=0
while IFS= read -r line; do
if echo "$line" | grep -qP "\(\#[0-9]+\)$"; then
true
else
echo "✖ PR number missing in $line"
found=1
fi
done < <(git log "$from..$to" --format="%s")
if [ $found -gt 0 ]; then
exit 1
fi
}

check_shellcheck () {
find . -name "*.sh" -exec shellcheck {} \;
}

check_all () {
check_commitlint
check_shellcheck
}

if [ $# -eq 0 ]; then
check_all
exit 0
fi

arg="$1"
case $arg in
--check-commitlint) check_commitlint "$@";;
--check-shellcheck) check_shellcheck;;
*) echo "[ERROR] Invalid argument '$arg'. Exiting." && exit 1;;
esac

0 comments on commit 8168224

Please sign in to comment.