forked from heavy-duty/rig
The PR-then-tag half of box#83's flow, rig's side. CHANGELOG.md starts with an Unreleased section (feature PRs land their entry as part of the PR — box's convention, now written into CONTRIBUTING alongside the release ritual). On a tag push, release.yml asserts the bare tag equals the tree's own VERSION — a mismatch fails loudly and creates nothing — then creates the GitHub release with that version's changelog section as the body, extracted by changelog_section in .github/scripts/release-lib.sh: one function, sourced by the workflow and driven by test/release.sh against fixtures and the shipped CHANGELOG.md itself. No assets — for a pure-bash tree, the tag's source tarball IS the package. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 lines
1.4 KiB
YAML
37 lines
1.4 KiB
YAML
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
|