Files
post3/todos/POST3-009-ci-dagger.md
2026-02-27 11:38:10 +01:00

1.3 KiB

POST3-009: CI pipeline with Dagger Rust SDK

Status: Done Priority: P1 Blocked by:

Description

Set up a Dagger-based CI pipeline using a custom self-contained ci/ crate with dagger-sdk directly (not the external cuddle-ci / dagger-rust components, which are too opinionated for post3's context).

What was built

  • ci/ added as workspace member
  • ci/Cargo.toml with dependencies: dagger-sdk, eyre, tokio, clap
  • ci/src/main.rs — custom pipeline with:
    • pr and main subcommands (clap CLI)
    • Source loading with dependency caching (skeleton files pattern from dagger-components)
    • rustlang/rust:nightly base with clang + mold 2.3.3 for fast linking
    • Dagger cache volumes for target/ and cargo registry
    • cargo check --workspace compilation check
    • PostgreSQL 18 as Dagger service container for integration tests
    • cargo test --workspace -- --test-threads=1 against Dagger PG
    • Release binary build + packaging into debian:bookworm-slim
    • post3-server --help sanity check in final image
  • mise.toml tasks: ci:pr, ci:main
  • No container publish (deferred until registry is decided)

Reference

Pattern inspired by dagger-components (/home/kjuulh/git/git.kjuulh.io/kjuulh/dagger-components) but self-contained — no external git dependencies.