Skip to content

ci: add 'make check' GitHub Actions workflow + ShellCheck hardening - #6

Merged
untraceablez merged 3 commits into
mainfrom
feat/automated-multiarch-docker-builds
Jul 21, 2026
Merged

ci: add 'make check' GitHub Actions workflow + ShellCheck hardening#6
untraceablez merged 3 commits into
mainfrom
feat/automated-multiarch-docker-builds

Conversation

@untraceablez

Copy link
Copy Markdown
Owner

Follow-up to #5 (which merged before this commit landed).

What

  • Adds .github/workflows/ci.yml — runs make check (ShellCheck + bats) on every PR to main and on pushes to main.
  • ShellCheck hardening so the scripts start clean under the new gate:
    • fetch-source.sh: build the auth header via an array (no unquoted conditional expansion), remove a redundant self-assignment.
    • tests/smoke/run-image.sh: iterate platforms via read -ra instead of unquoted word-splitting.

Why

The gating CI was authored after #5 was already merged, so main currently has the automation layer but no CI. This restores the intended test gate. This PR's own run exercises the workflow end-to-end (ShellCheck + the four bats suites).

🤖 Generated with Claude Code

untraceablez and others added 3 commits July 20, 2026 19:03
Run 'make check' (ShellCheck + bats) on PRs to main and pushes to main.
Fix an unquoted conditional expansion, a self-assignment, and a word-split
loop so the scripts start ShellCheck-clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHrdPEhFSuvzutLvD5xTmS
- build-and-push.sh: replace 'A && B || die' with explicit if (SC2015)
- common.sh: drop unreachable 'exit 0' from the sourced-only double-source guard (SC2317)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHrdPEhFSuvzutLvD5xTmS
…r agent

- Jenkinsfile: run on 'docker' label (unraid-docker permanent agent) since kaniko
  cannot do buildx multi-arch / QEMU / docker run. Default GHCR_OWNER=untraceablez,
  NOTIFY_EMAIL; use a configurable SonarQube installation (SONARQUBE_INSTALLATION,
  default 'SonarQube-Public') because the in-cluster Sonar URL is unreachable from
  the off-cluster VM; sonar creds come from withSonarQubeEnv (drop nonexistent
  credential IDs).
- quality-gate.sh: accept SONAR_AUTH_TOKEN (what withSonarQubeEnv injects); run the
  scanner via the sonarsource/sonar-scanner-cli container when no native binary.
- tests: unset SONAR_AUTH_TOKEN in the fail-closed assertion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHrdPEhFSuvzutLvD5xTmS
@untraceablez
untraceablez merged commit d166d31 into main Jul 21, 2026
1 check passed
@untraceablez
untraceablez deleted the feat/automated-multiarch-docker-builds branch July 21, 2026 00:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant