Compare commits

..

1 commit

Author SHA1 Message Date
ZoopaMario 7e77c06a9d Add workflows verifying bash and commit messages
Some checks failed
Check Commit Messages / check-commit-message (pull_request) Failing after 3m8s
This PR adds the first two workflows:
1. Bash linter
2. Commit message verification
2024-12-29 04:18:33 +01:00

View file

@ -1,68 +1,30 @@
name: Check Commit Messages name: Check Commit Messages
on: on:
pull_request:
push: push:
branches: paths-ignore:
- '!master' - '**/*.sh' # Commit messages are checked regardless of file type
pull_request:
paths-ignore:
- '**/*.sh'
jobs: jobs:
check-commit-message: check-commit-message:
runs-on: node:16-bullseye runs-on: docker
container:
image: node:16-bullseye # Node.js pre-installed, based on Debian
steps: steps:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v4 uses: https://code.forgejo.org/actions/checkout@v4
with: with:
fetch-depth: 0 # Fetch the entire history to analyze commit messages fetch-depth: 0 # Fetch the entire history to avoid REST API reliance
- name: Check Subject Beginning - name: Check Commit Messages
run: | run: |
echo "Checking if the subject starts correctly..." echo "Checking commit message format..."
commit_message=$(git log -1 --pretty=%B) if ! git log -1 --pretty=%B | grep -Eq '^(feat|fix|chore|docs|style|refactor|test|perf):'; then
if ! [[ "$commit_message" =~ ^([A-Z]|\S+:|git\ subrepo\ (clone|pull)) ]]; then echo "Commit message does not follow the conventional format: <type>: <subject>"
echo "Error: The subject does not start with a capital letter, a tag, or a valid 'git subrepo' command."
exit 1 exit 1
fi fi
echo "Subject start check passed."
- name: Check Commit Message Type and Format
run: |
echo "Checking commit message type and format..."
commit_message=$(git log -1 --pretty=%B)
if ! [[ "$commit_message" =~ ^(feat|fix|chore|docs|style|refactor|test|perf): ]]; then
echo "Error: Commit message does not follow the required format: <type>: <subject>"
exit 1
fi
echo "Commit message type and format check passed."
- name: Check Subject Length
run: |
echo "Checking subject length..."
commit_subject=$(git log -1 --pretty=%B | head -n 1)
if [[ ${#commit_subject} -gt 72 ]]; then
echo "Error: Commit message subject exceeds 72 characters."
exit 1
fi
echo "Subject length check passed."
- name: Check Subject Ending
run: |
echo "Checking subject ending..."
commit_subject=$(git log -1 --pretty=%B | head -n 1)
if [[ "$commit_subject" =~ \.$ ]]; then
echo "Error: Commit message subject should not end with a dot."
exit 1
fi
echo "Subject ending check passed."
- name: Check Empty Line After Title
run: |
echo "Checking for an empty line after the title..."
commit_body=$(git log -1 --pretty=%B | tail -n +2)
if [[ -n "$commit_body" && ! "$commit_body" =~ ^$ ]]; then
echo "Error: There must be an empty line between the title and description."
exit 1
fi
echo "Empty line check passed."