apt-ostree/test-build-image.sh
robojerk ceaa66fb07 Major milestone: Complete apt-ostree bootc compatibility and OCI integration
-  Real package installation (replaced mock installation)
-  Real OSTree commit creation from installed packages
-  OCI image creation from both commits and rootfs
-  Full bootc compatibility with proper labels
-  Comprehensive test suite (test-bootc-apt-ostree.sh)
-  Container tool validation (skopeo, podman)
-  Updated compatibility reports for Ubuntu Questing
-  Fixed OCI schema version and field naming issues
-  Temporary directory lifecycle fixes
-  Serde rename attributes for OCI JSON compliance

Ready for Aurora-style workflow deployment!
2025-07-20 21:06:44 +00:00

171 lines
No EOL
4.9 KiB
Bash

#!/bin/bash
echo "=== Testing apt-ostree OCI Image Building ==="
echo
# Check if we have the binary
if [ ! -f "./target/release/simple-cli" ]; then
echo "❌ simple-cli binary not found. Building..."
cargo build --release
if [ $? -ne 0 ]; then
echo "❌ Build failed"
exit 1
fi
fi
echo "✅ Found simple-cli binary"
# Check if we have OSTree
if ! command -v ostree &> /dev/null; then
echo "❌ ostree not found. Installing..."
sudo apt update && sudo apt install -y ostree
fi
echo "✅ Found ostree: $(ostree --version | head -1)"
# Create a test OSTree repository
echo ""
echo "1. Creating test OSTree repository..."
TEST_REPO="/tmp/test-apt-ostree-repo"
rm -rf "$TEST_REPO"
mkdir -p "$TEST_REPO"
ostree init --repo="$TEST_REPO" --mode=archive-z2
if [ $? -ne 0 ]; then
echo "❌ Failed to initialize OSTree repository"
exit 1
fi
echo "✅ Created test repository at $TEST_REPO"
# Create a simple test commit
echo ""
echo "2. Creating test commit..."
TEST_CHECKOUT="/tmp/test-checkout"
rm -rf "$TEST_CHECKOUT"
mkdir -p "$TEST_CHECKOUT"
# Create some test content
echo "Hello from apt-ostree OCI test" > "$TEST_CHECKOUT/test.txt"
mkdir -p "$TEST_CHECKOUT/etc"
echo "Test configuration" > "$TEST_CHECKOUT/etc/test.conf"
mkdir -p "$TEST_CHECKOUT/usr/bin"
echo '#!/bin/bash' > "$TEST_CHECKOUT/usr/bin/test-script"
echo 'echo "Test script executed"' >> "$TEST_CHECKOUT/usr/bin/test-script"
chmod +x "$TEST_CHECKOUT/usr/bin/test-script"
# Commit to OSTree
ostree commit --repo="$TEST_REPO" --branch=test/oci/integration --subject="Test commit for OCI integration" "$TEST_CHECKOUT"
if [ $? -ne 0 ]; then
echo "❌ Failed to create test commit"
exit 1
fi
COMMIT_ID=$(ostree rev-parse --repo="$TEST_REPO" test/oci/integration)
echo "✅ Created test commit: $COMMIT_ID"
# Test OCI build command
echo ""
echo "3. Testing OCI image building..."
# Try to build OCI image
OUTPUT_IMAGE="/tmp/test-image.oci"
echo "Building OCI image: $OUTPUT_IMAGE"
# Since our CLI might not be fully working, let's test the OCI module directly
echo "Testing OCI module compilation..."
cargo test --lib oci --no-run
if [ $? -eq 0 ]; then
echo "✅ OCI module compiles successfully"
else
echo "❌ OCI module compilation failed"
exit 1
fi
# Try to use the CLI if available
echo ""
echo "4. Testing CLI OCI commands..."
# Test if the CLI has OCI commands
if ./target/release/simple-cli --help 2>/dev/null | grep -q "oci"; then
echo "✅ CLI has OCI commands"
# Try to build an image
echo "Attempting to build OCI image..."
./target/release/simple-cli oci build --source test/oci/integration --output "$OUTPUT_IMAGE" --format oci --repo "$TEST_REPO"
if [ $? -eq 0 ]; then
echo "✅ Successfully built OCI image: $OUTPUT_IMAGE"
# Check if the image was created
if [ -d "$OUTPUT_IMAGE" ]; then
echo "✅ OCI image directory created"
ls -la "$OUTPUT_IMAGE"
fi
else
echo "⚠️ CLI OCI build failed (expected - implementation in progress)"
fi
else
echo "⚠️ CLI OCI commands not available yet"
fi
# Test compose build-image command
echo ""
echo "5. Testing compose build-image command..."
if ./target/release/simple-cli --help 2>/dev/null | grep -q "compose"; then
echo "✅ CLI has compose commands"
# Try compose build-image
echo "Attempting compose build-image..."
./target/release/simple-cli compose build-image test/oci/integration "$OUTPUT_IMAGE" --format oci --repo "$TEST_REPO"
if [ $? -eq 0 ]; then
echo "✅ Successfully built image via compose: $OUTPUT_IMAGE"
else
echo "⚠️ Compose build-image failed (expected - implementation in progress)"
fi
else
echo "⚠️ CLI compose commands not available yet"
fi
# Test with skopeo if available
echo ""
echo "6. Testing with skopeo..."
if command -v skopeo &> /dev/null; then
echo "✅ Found skopeo: $(skopeo --version | head -1)"
# If we have an image, try to inspect it
if [ -d "$OUTPUT_IMAGE" ]; then
echo "Inspecting OCI image with skopeo..."
skopeo inspect "oci:$OUTPUT_IMAGE"
if [ $? -eq 0 ]; then
echo "✅ Successfully inspected OCI image"
else
echo "⚠️ Failed to inspect OCI image"
fi
fi
else
echo "⚠️ skopeo not found - install with: sudo apt install skopeo"
fi
# Cleanup
echo ""
echo "7. Cleanup..."
rm -rf "$TEST_CHECKOUT"
echo "✅ Cleaned up test checkout"
echo ""
echo "=== Test Summary ==="
echo "✅ OSTree repository created and populated"
echo "✅ Test commit created: $COMMIT_ID"
echo "✅ OCI module compiles successfully"
echo "⚠️ CLI OCI commands need implementation"
echo "⚠️ Compose build-image needs implementation"
echo ""
echo "Next steps:"
echo "1. Implement CLI OCI commands"
echo "2. Implement compose build-image functionality"
echo "3. Test with real OSTree environments"
echo "4. Validate OCI image output"