From 8464effada2312ac13f9d58021d3b8d6556cecb0 Mon Sep 17 00:00:00 2001 From: Markus Hilger Date: Tue, 14 Jul 2026 01:54:19 +0200 Subject: [PATCH] Add CI pipeline - Shellcheck (errors only) - Python compileall for most Python versions supported --- .github/workflows/ci.yml | 64 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6a07cc4b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,64 @@ +name: CI + +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + ShellCheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - name: Run ShellCheck (errors only) + # Check every tracked file that has a .sh extension or an sh/bash + # shebang. SC2148 (missing shebang) is excluded because many .sh + # files are sourced fragments or dracut hooks; ShellCheck then + # falls back to checking them as bash. + run: | + { + git ls-files '*.sh' + git ls-files | while IFS= read -r f; do + [ -f "$f" ] || continue + head -c 200 "$f" | head -n 1 | \ + grep -qE '^#!.*[/ ](sh|bash|dash|ash|ksh)([ \t]|$)' && echo "$f" + done + } | sort -u | xargs -d '\n' shellcheck --severity=error --exclude=SC2148 + + python-compileall: + name: Python compileall + runs-on: ubuntu-latest + env: + # One entry per Python version shipped by the distros confluent + # targets, limited to versions actions/setup-python still provides + # on current runners (sles15/alma8 ship 3.6, which is unavailable). + # Newline-separated so it feeds both setup-python (multiline input) + # and the shell loop below (word-split on whitespace). + PYTHON_VERSIONS: | + 3.8 + 3.9 + 3.10 + 3.12 + 3.13 + 3.14 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v6 + with: + python-version: ${{ env.PYTHON_VERSIONS }} + - name: Compile all Python files + run: | + rc=0 + for v in $PYTHON_VERSIONS; do + echo "::group::Python $v" + if "python$v" -W error -m compileall -q -x '/\.git/' .; then + echo "::endgroup::" + else + echo "::endgroup::" + echo "::error::Python $v compileall failed" + rc=1 + fi + done + exit "$rc"