Skip to content

Commit

Permalink
ci(commitlint): addition of commit message linter (reanahub#695)
Browse files Browse the repository at this point in the history
Adds commitlint to check the commit message style against agreed
conventional commits configuration.

Changes script argument values to always use linter names (e.g.
shellcheck).

Changes argument handling to allow only one checking action that can now
accept further optional arguments.
  • Loading branch information
tiborsimko committed Jan 11, 2024
1 parent 5b0d80c commit 2dc64e3
Show file tree
Hide file tree
Showing 3 changed files with 216 additions and 155 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]
290 changes: 158 additions & 132 deletions .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, 2021, 2022, 2023 CERN.
# Copyright (C) 2020, 2021, 2022, 2023, 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,48 +9,74 @@ name: CI
on: [push, pull_request]

jobs:
lint-shellcheck:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Runs shell script static analysis
run: |
sudo apt-get install shellcheck
./run-tests.sh --check-shellscript
lint-black:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: pip install black

- name: Check Python code formatting
run: ./run-tests.sh --check-black

lint-flake8:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Check compliance with pep8, pyflakes and circular complexity
run: |
pip install --upgrade pip
pip install flake8
./run-tests.sh --check-flake8
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:
- uses: actions/checkout@v3

- name: Runs shell script static analysis
run: |
sudo apt-get install shellcheck
./run-tests.sh --check-shellcheck
lint-black:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: pip install black

- name: Check Python code formatting
run: ./run-tests.sh --check-black

lint-flake8:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Check compliance with pep8, pyflakes and circular complexity
run: |
pip install --upgrade pip
pip install flake8
./run-tests.sh --check-flake8
lint-pydocstyle:
runs-on: ubuntu-20.04
Expand All @@ -68,122 +94,122 @@ jobs:
- name: Check compliance with Python docstring conventions
run: ./run-tests.sh --check-pydocstyle

lint-check-manifest:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
lint-check-manifest:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: pip install check-manifest
- name: Install Python dependencies
run: pip install check-manifest

- name: Check Python manifest completeness
run: ./run-tests.sh --check-manifest
- name: Check Python manifest completeness
run: ./run-tests.sh --check-manifest

docs-cli-commands:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
docs-cli-commands:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Verify reana client commands list
run: ./run-tests.sh --check-cli-cmds
- name: Verify reana client commands list
run: ./run-tests.sh --check-cli-cmds

docs-cli-api:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
docs-cli-api:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Verify reana client api docs
run: ./run-tests.sh --check-cli-api
- name: Verify reana client api docs
run: ./run-tests.sh --check-cli-api

docs-sphinx:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
docs-sphinx:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Install Python dependencies
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Run Sphinx documentation with doctests
run: ./run-tests.sh --check-sphinx
- name: Run Sphinx documentation with doctests
run: ./run-tests.sh --check-sphinx

python-tests:
runs-on: ubuntu-20.04
strategy:
matrix:
include:
- testenv: lowest
python: '3.6'
python-tests:
runs-on: ubuntu-20.04
strategy:
matrix:
include:
- testenv: lowest
python: '3.6'

- testenv: release
python: '3.6'
- testenv: release
python: '3.6'

- testenv: lowest
python: '3.7'
- testenv: lowest
python: '3.7'

- testenv: release
python: '3.7'
- testenv: release
python: '3.7'

- testenv: lowest
python: '3.8'
- testenv: lowest
python: '3.8'

- testenv: release
python: '3.8'
- testenv: release
python: '3.8'

- testenv: lowest
python: '3.9'
- testenv: lowest
python: '3.9'

- testenv: release
python: '3.9'
- testenv: release
python: '3.9'

- testenv: lowest
python: '3.10'
- testenv: lowest
python: '3.10'

- testenv: release
python: '3.10'
- testenv: release
python: '3.10'

- testenv: lowest
python: '3.11'
- testenv: lowest
python: '3.11'

- testenv: release
python: '3.11'
- testenv: release
python: '3.11'

- testenv: lowest
python: '3.12'
- testenv: lowest
python: '3.12'

- testenv: release
python: '3.12'
- testenv: release
python: '3.12'
steps:
- uses: actions/checkout@v3

Expand All @@ -198,10 +224,10 @@ jobs:
pip install wheel
pip install requirements-builder
if [[ ${{ matrix.testenv }} == lowest ]]; then
requirements-builder -e all --level=min --req requirements-dev.txt setup.py > .lowest-requirements.txt
requirements-builder -e all --level=min --req requirements-dev.txt setup.py > .lowest-requirements.txt
fi
if [[ ${{ matrix.testenv }} == release ]]; then
requirements-builder -e all --level=pypi --req requirements-dev.txt setup.py > .release-requirements.txt
requirements-builder -e all --level=pypi --req requirements-dev.txt setup.py > .release-requirements.txt
fi
- name: Install Python dependencies
Expand Down
Loading

0 comments on commit 2dc64e3

Please sign in to comment.