Skip to main content

Build Jafra images

Build all product images together or work with one component at a time. Run these commands from the root of the Jafra repository.

Build all release images with Docker

install-jafra.sh builds any missing image and later deploys it. To rebuild all three regardless of the local image cache:

JAFRA_VERSION=0.0.1 ./install-jafra.sh --force-build

This also loads and deploys the images. For build-only workflows, use Podman or the component commands below.

Build all images with Podman

./build-jafra.sh --platform linux/amd64

For an Apple Silicon Kind cluster:

./build-jafra.sh --platform linux/arm64

Build both architectures and assemble :0.0.1 manifest lists:

./build-jafra.sh --multi-platform

Useful options:

./build-jafra.sh --component controller
./build-jafra.sh --component agent --platform linux/arm64
./build-jafra.sh --component analyzer --no-cache

The defaults are version 0.0.1, platform linux/amd64, and registry quay.io/bharathappali. Override them with JAFRA_VERSION, JAFRA_PLATFORM, and JAFRA_REGISTRY.

Build components individually

Controller

The controller has a self-contained build context:

(cd jafra-controller && go test ./...)
docker build \
-f jafra-controller/Dockerfile \
-t quay.io/bharathappali/jafra-controller:0.0.1 \
jafra-controller

Agent

The agent build generates Rust bindings from the shared protobuf, so its container context must be the umbrella root:

(cd jafra-agent && cargo test)
docker build \
-f jafra-agent/Dockerfile \
-t quay.io/bharathappali/jafra-agent:0.0.1 \
.

Local Rust tests require protoc on PATH.

Analyzer

The analyzer also consumes the shared protobuf:

mvn -f jafra-analyzer/pom.xml test
docker build \
-f jafra-analyzer/Dockerfile \
-t quay.io/bharathappali/jafra-analyzer:0.0.1 \
.

Load into Kind

kind load docker-image quay.io/bharathappali/jafra-controller:0.0.1 --name jafra
kind load docker-image quay.io/bharathappali/jafra-agent:0.0.1 --name jafra
kind load docker-image quay.io/bharathappali/jafra-analyzer:0.0.1 --name jafra

The image names must match those in the v0.0.1 manifests unless you explicitly update the workload images before deployment.