Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mikronita/mikrom/llms.txt

Use this file to discover all available pages before exploring further.

Mikrom’s CI pipeline is implemented as a Rust crate (ci/) that drives Dagger to run validation steps in hermetic containers. Every profile is available locally via make and mirrors exactly what GitHub Actions runs, giving you reproducible feedback without pushing a branch. Profiles are ordered from cheapest to most expensive — pick the one that matches the scope of your change.

Profile Reference

TargetWhat it validates
make ci-smokeRust formatting, Clippy lints, and mikrom-app build/check
make ci-fastEverything in smoke + workspace unit tests with ephemeral Postgres and NATS containers
make ci-external-testsOpt-in NATS and PostgreSQL integration suites (skipped by default)
make ci-ceph-testsCeph-only agent RBD integration (requires a live Ceph cluster on the host)
make ci-fullEverything in fast + release build + eBPF program validation
make ciAlias for ci-full
make ci-imagesBuild service Docker images from their Dockerfiles via Dagger
make ci-releaseFull validation + image build + registry publish
make ci-appFrontend-only validation subset for mikrom-app changes
Use make ci-smoke for everyday development. It covers formatting, lints, and the frontend build in seconds and is the lowest-cost signal that your change does not break surface-level correctness.

Profile Details

make ci-smoke — Fastest feedback

Runs cargo fmt --check, cargo clippy -- -D warnings, and the mikrom-app Svelte/TypeScript build pipeline through Dagger. No database or message broker is required. Completes in under a minute on a warm cache.
make ci-smoke

make ci-fast — Pre-push validation

Extends smoke by spinning up ephemeral Postgres 17 and NATS 2.10 containers inside the Dagger pipeline and executing the full workspace test suite. Use this before pushing any change that touches shared Rust code or service contracts.
make ci-fast

make ci-external-tests — Integration opt-in

Runs the NATS and PostgreSQL integration test suites that are annotated #[ignore] and skipped in ci-fast. These suites verify real message-passing flows and repository-layer SQL. Enable the NATS-backed binaries explicitly:
MIKROM_RUN_NATS_TESTS=1 make ci-external-tests
Run this profile when you touch the NATS consumer/publisher code in any service or when you modify mikrom-api repository tests.

make ci-ceph-tests — Ceph integration

Executes the agent RBD integration test binary directly on the host (not through Dagger) with the Ceph-specific ignored tests un-ignored:
make ci-ceph-tests
# Internally runs:
# MIKROM_RUN_CEPH_TESTS=1 cargo test -p mikrom-agent \
#   --test ceph_integration_tests -- --ignored
This profile requires a real Ceph cluster. Run it only on a host that has /etc/ceph/ceph.conf, /etc/ceph/admin.secret, and a reachable cluster — not on a standard developer workstation.

make ci-full — Pre-merge gate

The full validation profile: runs ci-fast and then additionally performs a release build of the entire workspace and validates the eBPF program in mikrom-agent-ebpf. Use before merging or when you change native dependencies, build scripts, or the eBPF data-plane path.
make ci-full
# or equivalently:
make ci

make ci-images — Dockerfile validation

Builds all service Docker images from their respective Dockerfiles using Dagger. Run after any change to a Dockerfile or to a Docker build context directory.
make ci-images

make ci-release — Publish flow

Runs the full validation suite and then builds and publishes service images to the configured registry. Requires MIKROM_IMAGE_PREFIX, MIKROM_IMAGE_TAG, MIKROM_REGISTRY_USERNAME, and MIKROM_REGISTRY_TOKEN to be set in the environment.
make ci-release should only be triggered for release tags or when you specifically need to exercise the end-to-end publish flow. Running it on feature branches wastes registry storage and may overwrite tagged images.
make ci-release

make ci-app — Frontend-only

Validates only mikrom-app: type checking, Svelte component checks, unit tests (Vitest), and the Playwright e2e suite. Faster than the full smoke profile when your change is isolated to the frontend.
make ci-app
Follow this sequence to get maximum signal at minimum cost:
1

ci-smoke — always

Run on every save or before any commit. Covers formatting and lints in seconds.
2

ci-fast — before pushing

Run before git push on any branch that touches shared Rust code or service contracts.
3

ci-external-tests — NATS/Postgres changes

Run when you modify NATS consumer/publisher logic or mikrom-api repository tests. Pass MIKROM_RUN_NATS_TESTS=1 for the NATS-backed binaries.
4

ci-ceph-tests — Ceph/RBD changes

Run only on a host with a live Ceph cluster when you modify mikrom-agent RBD code. The Makefile target sets MIKROM_RUN_CEPH_TESTS=1 internally.
5

ci-full — before merging

Run before opening or merging a PR that changes build logic, native dependencies, or the eBPF path.
6

ci-images — Dockerfile changes

Run after touching any Dockerfile or its build context.
7

ci-release — release tags only

Run to validate and publish images for a release tag.

Pre-Commit Hook

The repository ships a pre-commit hook at scripts/pre-commit.sh that automatically selects the right profile based on which files are staged:
  • Rust or shared workspace changesmake ci-fast
  • mikrom-app changesmake ci-app
Install the hook once with:
make setup-git-hooks
This writes a thin shell wrapper at .git/hooks/pre-commit that delegates to scripts/pre-commit.sh.

Ceph Runner Requirements

The ci-ceph-tests target and the corresponding GitHub Actions job (ceph-tests) require a self-hosted runner with the following properties:

Runner Labels

The runner must carry the self-hosted, linux, and ceph labels so the workflow job targets it correctly.

Ceph Configuration

Host access to /etc/ceph/ceph.conf and /etc/ceph/admin.secret must be available to the runner process.

Ceph Cluster

A reachable Ceph cluster must be present. The agent RBD tests perform live block device operations against it.

Ceph Libraries

librados.so.2 and librbd.so.1 must be installed on the host. Run make ceph-libs to set up symlinks before testing.
For provisioning a Ceph runner from scratch, see the runbook at docs/infra/ceph-runner.md and the acceptance checklist at docs/ceph-runner-checklist.md in the repository.

Environment Variables Used by Dagger Profiles

VariableUsed by
TEST_DATABASE_URLci-fast, ci-full, ci-external-tests
TEST_NATS_URLci-fast, ci-external-tests
MIKROM_RUN_NATS_TESTSci-external-tests (set to 1 to enable)
MIKROM_RUN_CEPH_TESTSci-ceph-tests (set to 1 to enable)
MIKROM_IMAGE_PREFIXci-images, ci-release
MIKROM_IMAGE_TAGci-release
MIKROM_REGISTRY_USERNAMEci-release
MIKROM_REGISTRY_TOKENci-release

Build docs developers (and LLMs) love