name: ci on: push: branches: [main] pull_request: jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: shellcheck # -x follows the `source=SCRIPTDIR/...` directives into commands/lib/. # globstar so a script in a new subdirectory is linted without anyone # remembering to edit this list; bin/* covers the extensionless entrypoints. # The file list is printed so under-coverage shows up in the log. run: | shopt -s globstar files=(bin/* **/*.sh) printf 'shellcheck: %s\n' "${files[@]}" shellcheck -x "${files[@]}" - name: cli tests run: bash test/cli.sh - name: release-flow tests run: bash test/release.sh # Kept SEPARATE from `check` on purpose: this job pulls a Postgres image and # stands up throwaway containers, and a slow image pull must never delay the # fast shellcheck + cli.sh feedback above. ubuntu-latest ships Docker running # and passwordless sudo, so test/db-integration.sh EXECUTES here (it only # skips where Docker is absent). It is the automated proof that dump/restore # actually round-trips, not just that the args parse. db-integration: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: db dump/restore round-trip run: bash test/db-integration.sh