Shared GitHub Actions workflows for RogueOneEcho projects.
Each consuming repo has four workflow files. The three trigger files call the local ci.yml, which in turn calls the shared workflow. This keeps repo-specific inputs (e.g. config-path) in one place.
ci.yml— Local wrapper that calls the shared workflow with repo-specific inputsci-on-push.yml— Runs CI on every push. Keeps the actions cache warm onmainci-on-pr-approved.yml— Runs CI when a PR is approved. Gates auto-merge via branch protectionci-on-pr-labeled.yml— Runs CI on demand without approving. Removes the label after
ci-on-push.yml ──┐
ci-on-pr-approved.yml ──┼──▶ ci.yml ──▶ RogueOneEcho/ci/rust-lib.yml@v1
ci-on-pr-labeled.yml ──┘
CI for Docker-only projects. Multi-arch builds (amd64/arm64), SBOM scanning, cosign attestation, and GHCR publishing.
Used by:
Examples:
minimal.yml— Default build contextwith-build-context.yml— Custom build context subdirectory
CI for Rust library crates
Used by:
Examples:
minimal.yml— Default usagewith-config.yml— Write a config file before testsno-publish.yml— Skip crates.io publishworkspace.yml— Workspace with multiple manifests
CI for Rust binary crates with optional Docker builds.
Used by:
Examples:
minimal.yml— Single-target binary with Dockercross-platform.yml— Multi-target matrix with Dockerwith-extra-jobs.yml— Using version output for post-CI jobs
Fast-forward the release branch to a tagged commit on main. Must be dispatched on the release branch so that chained CI runs against release. Validates the commit is on main, has a version tag, CI has passed, and fast-forward is possible.
Because github.token pushes don't trigger workflows, the caller must chain CI as a dependent job (see example).
Examples:
release.yml— Dispatch workflow that fast-forwards then runs CI
Daily check for upstream image updates via pinned ARG version.
Recommended pattern for keeping Docker images up to date.
Not a reusable workflow — each repo copies and adapts the template for its specific upstream dependency.
Adopted by:
ci-main.json— Branch protection formainci-release.json— Branch protection forrelease. No bypass — requires CI and git-tag to pass
docker-main.json— Branch protection formaindocker-release.json— Branch protection forrelease. No bypass — requires CI to pass
Apply to a repo with:
gh api repos/RogueOneEcho/{repo}/rulesets -X POST --input rulesets/{type}/{type}-{branch}.json