The rdkafka-sys crate build was failing with 'No such file or directory (os error 2)'
because the make command was missing from the build dependencies. This is required
for building librdkafka statically. Adding make to the apt-get install list.
Co-Authored-By: Claude <noreply@anthropic.com>
The librdkafka configure script looks for the 'c++' command, not just 'g++'.
Installing g++ should provide the c++ symlink via alternatives, but this
doesn't always work correctly in minimal containers. This adds an explicit
fallback to create the symlink if update-alternatives fails.
The rust:1.87-slim image doesn't include git, but the build-binaries step
runs 'git clone' which fails with exit code 127 (command not found).
Install git along with other build dependencies before cloning.
Co-Authored-By: Claude <noreply@anthropic.com>
The rust:1.87-slim image doesn't have sh in a location that Argo's
executor can find. Using bash (which is at /usr/bin/bash) fixes
the 'command not found' (exit code 127) error.
- Changed git clone destination from /src to /workspace/src
- This ensures binaries are available to subsequent steps (build-image, create-github-release)
- Fixes exit code 127 failure in miroir-release workflow
The kafka-sink Cargo feature existed but was not enabled in production builds,
causing all Kafka CDC events to be silently dropped at runtime.
Changes:
- Add --features miroir-core/kafka-sink to cargo-build in miroir-ci.yaml
- Update Dockerfile comments to reflect the expected build commands
- Add kafka_sink_feature.rs integration test with #[cfg(feature = "kafka-sink")]
The test verifies:
- Feature is enabled (compile-time check)
- CdcManager publish works with Kafka config
- Kafka sink config parses correctly
Fixes plan-gap: kafka-sink feature not enabled in CI build and Dockerfile
Bead-Id: bf-4v4rz
Updates the CI workflow to:
1. Add HTML coverage report output (plan §8 coverage policy)
- Previously only generated Lcov + Xml formats
- Now also outputs Html for browser-based viewing
2. Publish coverage reports as Argo artifacts
- coverage-html/ directory for interactive browsing
- cobertura.xml for CI tool integration
- lcov.info for diff tools
3. Add PR comment showing coverage delta
- Posts coverage percentage on PRs when revision != main
- Shows current coverage vs 90% target vs base (main)
- Includes link to full coverage artifact
4. Generate coverage summary file for PR comment consumption
The coverage gate (--fail-under 90) was already in place; this adds
the visibility (artifacts + PR comments) required by plan §8.
Closes: miroir-89x.1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Changes:
- Dockerfile: Remove multi-stage build, now expects pre-built miroir-proxy-linux-amd64
- Dockerfile: Add inline comment documenting the plan §7 cargo-build template
- CI workflow: Change /workspace/dist → /workspace/artifacts to match plan §7
- CI workflow: Update create-github-release to reference /workspace/artifacts
This aligns with plan §7 and §12: scratch base, no libc, minimal attack surface.
The CI builds the static musl binary separately, then Dockerfile copies it.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace sprig regex template expressions with a shell script approach for
Kaniko destination tags, matching the pattern in miroir-ci.yaml. Pin Kaniko
image to v1.23.0-debug. Fix serviceAccountName from argo-runner to argo-workflow.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>