Summary
This repository has no CI whatsoever — .github/workflows/ does not exist. A 53-module Axum/SQLx service with Postgres, Redis, Docker, Helm, and k8s manifests is merged entirely on trust: no fmt, no clippy, no tests, no build verification runs on any PR.
Task
Implement a production-grade GitHub Actions pipeline that runs on every PR and push to main:
ci.yml with parallel jobs:
fmt — cargo fmt --all --check
clippy — cargo clippy --all-targets --all-features -- -D warnings
test — cargo test --all-features with Postgres and Redis service containers, running the SQL migrations in migrations/ before the suite; integration tests in tests/ must actually execute, not be skipped
sqlx — offline query metadata check (cargo sqlx prepare --check) so schema drift breaks the build, wiring up .sqlx/ metadata if not present
docker — docker build of the production Dockerfile (build-only, no push), with layer caching
audit.yml — cargo audit (or cargo deny check advisories licenses bans) on PRs and on a weekly schedule.
- Shared Rust toolchain pinning via
rust-toolchain.toml, Swatinem/rust-cache for incremental caching, and a concurrency group cancelling superseded runs.
- Total wall-clock under 20 minutes on a warm cache; document the cache strategy in the workflow comments.
- Status badges in
README.md.
Acceptance criteria
PR requirements (mandatory)
- ✅ Your PR must pass all checks — PRs with failing or skipped checks will not be merged.
- 📸 You must attach a screenshot in the PR description demonstrating the result (for this issue: the green Actions run summary showing every job passing).
- 🔗 You must link this issue number in your PR description (e.g.
Closes #<issue-number>). PRs without a linked issue will not be reviewed.
Summary
This repository has no CI whatsoever —
.github/workflows/does not exist. A 53-module Axum/SQLx service with Postgres, Redis, Docker, Helm, and k8s manifests is merged entirely on trust: no fmt, no clippy, no tests, no build verification runs on any PR.Task
Implement a production-grade GitHub Actions pipeline that runs on every PR and push to
main:ci.ymlwith parallel jobs:fmt—cargo fmt --all --checkclippy—cargo clippy --all-targets --all-features -- -D warningstest—cargo test --all-featureswith Postgres and Redis service containers, running the SQL migrations inmigrations/before the suite; integration tests intests/must actually execute, not be skippedsqlx— offline query metadata check (cargo sqlx prepare --check) so schema drift breaks the build, wiring up.sqlx/metadata if not presentdocker—docker buildof the productionDockerfile(build-only, no push), with layer cachingaudit.yml—cargo audit(orcargo deny check advisories licenses bans) on PRs and on a weekly schedule.rust-toolchain.toml,Swatinem/rust-cachefor incremental caching, and a concurrency group cancelling superseded runs.README.md.Acceptance criteria
cargo sqlx prepare --checkfails the build on schema drift (demonstrate once in a draft commit if possible)-D warnings— fix any warnings this surfaces rather than allow-listing themPR requirements (mandatory)
Closes #<issue-number>). PRs without a linked issue will not be reviewed.