mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-18 18:16:22 +00:00
Current setup of the infratstrcture with DIND was causing issues with volume binding, leading to a false-positive error on code formatting check. This commit addresses the issue by removing dependency on a container, but at the same time it limits choice of formatting version. This fix does not address the underlying issue with the architecture. As an additional change, package versions are updated.
93 lines
2.8 KiB
YAML
93 lines
2.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
branches: [master]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
flavor: [arch, debian, fedora, ubuntu]
|
|
|
|
name: Linux
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Run tests
|
|
run: |
|
|
docker build -f Dockerfile.${{ matrix.flavor }} -t profanity .
|
|
docker run profanity ./ci-build.sh
|
|
|
|
code-style:
|
|
runs-on: ubuntu-latest
|
|
name: Check coding style
|
|
continue-on-error: true
|
|
env:
|
|
GITHUB_WORKSPACE: ${{ runner.workspace }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
# if this check fails, you have to update the number of auto types known and the list of auto types in the check below
|
|
- name: Check auto types are up-to-date
|
|
run: |
|
|
[[ "$(find src -type f -name '*.[ch]' -exec awk '/^#define auto_[\W]*/ {print $2}' '{}' \; | sort -u | wc -l)" == "8" ]] || exit -1
|
|
- name: Check auto types are initialized
|
|
run: |
|
|
grep -P 'auto_(char|gchar|gcharv|guchar|jid|sqlite|gfd|FILE)[\w *]*;$' -r src && exit -1 || true
|
|
|
|
- name: Install clang-format
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y clang-format
|
|
|
|
- name: Run clang-format check
|
|
run: |
|
|
echo $(clang-format --version)
|
|
# Find all source files you care about
|
|
INCLUDE_REGEX='^.*\.((((c|C)(c|pp|xx|\+\+)?$)|((h|H)h?(pp|xx|\+\+)?$))|(ino|pde|proto|cu))$'
|
|
CHECK_PATH='src'
|
|
files=$(find "$CHECK_PATH" -name .git -prune -o -regextype posix-egrep -regex "$INCLUDE_REGEX" -print)
|
|
if [ -z "$files" ]; then
|
|
echo "✅ No source files found to check."
|
|
exit 0
|
|
fi
|
|
|
|
# Run clang-format in dry-run mode and collect any improperly formatted files
|
|
failed=0
|
|
for file in $files; do
|
|
if ! output=$(clang-format --dry-run --Werror --style=file "$file" 2>&1); then
|
|
echo "❌ Failed on file: $file"
|
|
echo "$output"
|
|
echo "----------------------------------------"
|
|
failed=1
|
|
fi
|
|
done
|
|
|
|
if [ $failed -ne 0 ]; then
|
|
echo "🚫 One or more files are not properly formatted."
|
|
else
|
|
echo "✅ All files are properly formatted."
|
|
fi
|
|
exit $failed
|
|
|
|
spell-check:
|
|
runs-on: ubuntu-latest
|
|
name: Check spelling
|
|
continue-on-error: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y --no-install-recommends codespell
|
|
- name: Check spelling
|
|
run: |
|
|
codespell
|