| name | test-bootc-build |
| description | Run a bootc build test and report results. Builds a bootc container image, optionally creates a disk image, and downloads the artifact. |
| allowed-tools | ["Bash","Read","Grep"] |
Bootc Build Test Workflow
Run a bootc build with the specified parameters, monitor until completion, and download the artifact.
Parameters
$ARGUMENTS contains the build name (required)
Required Environment Variables
Before running, ensure these are set:
BOOTC_REGISTRY - Base registry URL (e.g., quay.io/myorg/myimage)
REGISTRY_USERNAME - Registry username (or read from registry-user file)
REGISTRY_PASSWORD - Registry password (or read from registry-pass file)
Execution Steps
1. Validate Environment
if [ -z "$BOOTC_REGISTRY" ]; then
echo "ERROR: BOOTC_REGISTRY environment variable not set"
echo "Example: export BOOTC_REGISTRY=quay.io/myorg/myimage"
exit 1
fi
2. Infer CAIB_SERVER from OpenShift Route
CAIB_SERVER="https://$(oc get route ado-build-api -n automotive-dev-operator-system -o jsonpath='{.spec.host}')"
echo "Using CAIB_SERVER: $CAIB_SERVER"
3. Get Authentication Token
TOKEN=$(oc whoami -t)
4. Get Registry Credentials
REGISTRY_USERNAME="${REGISTRY_USERNAME:-$(cat registry-user 2>/dev/null)}"
REGISTRY_PASSWORD="${REGISTRY_PASSWORD:-$(cat registry-pass 2>/dev/null)}"
5. Submit Build with Download
The build command creates a bootc container image and optionally a disk image.
BUILD_NAME="$ARGUMENTS"
PUSH_IMAGE="${BOOTC_REGISTRY}:latest"
DISK_IMAGE="${BOOTC_REGISTRY}:latest-disk"
OUTPUT_FILE="./output/${BUILD_NAME}.qcow2"
bin/caib build simple.aib.yml \
--server "$CAIB_SERVER" \
--token "$TOKEN" \
--name "$BUILD_NAME" \
--arch arm64 \
--target qemu \
--push "$PUSH_IMAGE" \
--disk \
--format qcow2 \
--push-disk "$DISK_IMAGE" \
--output "$OUTPUT_FILE" \
--registry-username "$REGISTRY_USERNAME" \
--registry-password "$REGISTRY_PASSWORD" \
--follow
6. Monitor Build (if not using --follow)
oc get imagebuild -n automotive-dev-operator-system $BUILD_NAME -o jsonpath='{.status.phase}'
7. On Failure - Debug
PIPELINE_RUN=$(oc get imagebuild -n automotive-dev-operator-system $BUILD_NAME -o jsonpath='{.status.pipelineRunName}')
POD=$(oc get pods -n automotive-dev-operator-system -l tekton.dev/pipelineRun=${PIPELINE_RUN} -o jsonpath='{.items[0].metadata.name}')
oc logs -n automotive-dev-operator-system $POD -c step-build-image --tail=200
oc logs -n automotive-dev-operator-system $POD -c step-build-image | grep -i "builder\|cluster registry\|Pulling\|error\|failed"
8. Verify Download
if [ -f "$OUTPUT_FILE" ]; then
echo "SUCCESS: Artifact downloaded to $OUTPUT_FILE"
ls -lh "$OUTPUT_FILE"
else
echo "WARNING: Artifact not found at $OUTPUT_FILE"
fi
9. Report Results
Provide a summary with:
- Build status (success/failure)
- Download location and file size
- If failed: the specific error and relevant log snippets
- Suggestions for fixes based on the error type
CLI Command Reference
build (bootc - default)
Creates a bootc container image from an AIB manifest.
caib build <manifest.aib.yml> \
--push <registry/image:tag>
--disk
--format <qcow2|raw|simg>
--push-disk <registry/img:tag>
--output <file>
--follow
--wait
disk
Creates a disk image from an existing bootc container.
caib disk <container-ref> \
--push <registry/image:tag>
--output <file>
--format <qcow2|raw|simg>
build-legacy
Traditional ostree/package-based builds (for backwards compatibility).
caib build-legacy <manifest.aib.yml> \
--mode <image|package>
--format <qcow2|raw|simg>
--name <build-name>
Common Error Patterns
- "Builder image not found" - builder preparation in build-image step failed or OCI image reference not propagated to the build step
- "containers-storage: invalid reference" - skopeo copy using wrong format
- "setfiles: Operation not supported" - SELinux context issues in osbuild
- "unauthorized" - Token or registry auth issues
- "BOOTC_REGISTRY not set" - Environment variable missing
- "container-ref is required for disk mode" - Missing container reference for disk command
Alternative: Download Only (for completed builds)
bin/caib download \
--server "$CAIB_SERVER" \
--token "$TOKEN" \
--name "$BUILD_NAME" \
--output-dir ./output