This repository ships CI upload examples for other repositories under examples/ci/, but Testimony also needs its own GitHub-side automation.
Yes.
A repository that publishes a Go binary, Docker images, and a Helm chart needs repository-local GitHub automation even if the product itself is meant to be called from other CI systems. Without it, contributors can easily break one of the packaged paths without noticing until after merge.
The useful baseline for this repository is:
- Pull request + main-branch CI for formatting,
go test ./... -p 1, docs/CI example verification, and Helm chart verification. - A slower Docker Compose smoke workflow for the packaged end-to-end path that starts the stack, uploads a real archive, and proves the report becomes browseable.
- A tag-based release workflow that re-runs the release gates, builds release archives plus checksums, publishes GHCR images, and creates or updates the GitHub Release.
That split keeps contributor feedback fast while still protecting the shipped paths.
.github/workflows/ci.yml— fast branch protection workflow for pull requests and pushes tomain.github/workflows/compose-smoke.yml— slower packaged-stack smoke check formainand manual runs.github/workflows/release.yml— tag-based release workflow forv*tags and manual re-runs against an existing tag
These workflows intentionally call the existing repository-owned verification commands instead of duplicating logic inline:
go test ./... -p 1bash scripts/verify-docs-and-ci.shbash scripts/verify-helm-chart.shbash scripts/verify-compose-e2e.sh
The release workflow currently does four things:
- re-runs the repository verification gates on the tagged ref
- builds release archives for the supported target platforms and emits
SHA256SUMS - publishes both runtime images to GHCR as multi-arch manifests for
linux/amd64andlinux/arm64 - creates or updates the matching GitHub Release with the release assets attached
Default runtime image (Dockerfile, Allure 2 runtime):
vX.Y.ZvX.YvXlatest
Alternate runtime image (Dockerfile.allure3, Allure 3 runtime):
vX.Y.Z-allure3vX.Y-allure3vX-allure3latest-allure3
The unsuffixed image remains the default runtime. The -allure3 suffix marks the alternate generator runtime explicitly.
The operational release path is documented in docs/release-guide.md.
Because GitHub repository metadata is configured in GitHub itself rather than committed as source, keep these values as the current baseline:
- Description:
Single-binary service for publishing Allure reports without turning your CI runner into a report host. - Website: leave blank until there is a stable public docs or product URL; once available, use that URL instead of pointing the field back at the repository itself.
- Topics:
allure,allure-report,ci,test-reporting,go,s3,sqlite,helm,docker,kubernetes
- CI on PRs and main: protects code, docs, examples, and packaging on every contributor-facing change.
- Compose smoke separately: protects the expensive packaged path without making every pull request slower than necessary.
- Releases on tags: keeps publication explicit and observable, while still enforcing the same verification gates before release assets and container images are published.
- Variant tags instead of separate repos: keeps the default image simple while making the Allure 3 runtime opt-in and explicit.