name: Build bootc Package on: push: branches: [ main, master ] pull_request: branches: [ main, master ] workflow_dispatch: env: UBUNTU_VERSION: "24.04" BOOTC_VERSION: "1.5.1" jobs: build-bootc: name: Build bootc Package runs-on: ubuntu-latest container: image: ubuntu:latest steps: - name: Setup build environment run: | apt update -y apt install -y git curl pkg-config build-essential # Install Rust using rustup to get the latest version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source ~/.cargo/env # Verify Rust version rustc --version cargo --version - name: Checkout repository manually run: | # Clone the repository manually instead of using actions/checkout git clone https://git.raines.xyz/robojerk/bootc-deb.git /tmp/bootc-deb cp -r /tmp/bootc-deb/* . cp -r /tmp/bootc-deb/.* . 2>/dev/null || true - name: Setup build environment for bootc run: | apt update -y apt install -y git curl pkg-config build-essential # Install Rust using rustup to get the latest version curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source ~/.cargo/env # Verify Rust version rustc --version cargo --version - name: Clone bootc source run: | git clone --depth 1 --branch v${BOOTC_VERSION} https://github.com/containers/bootc.git bootc-${BOOTC_VERSION} cd bootc-${BOOTC_VERSION} - name: Debug - List files before patching run: | cd bootc-${BOOTC_VERSION} echo "Current directory: $(pwd)" echo "Files in current directory:" ls -la echo "Files in lib/src/ (if it exists):" ls -la lib/src/ 2>/dev/null || echo "Directory does not exist" echo "Patch file location:" ls -la ../bootc-libostree-compatibility.patch - name: Apply compatibility patch run: | cd bootc-${BOOTC_VERSION} if [ ! -f ../bootc-libostree-compatibility.patch ]; then echo "❌ ERROR: bootc-libostree-compatibility.patch not found!" echo "This patch is required for bootc to work with the libostree backport." exit 1 fi # Apply patch with correct strip level for lib/src/cli.rs echo "Applying patch to lib/src/cli.rs..." patch -p1 < ../bootc-libostree-compatibility.patch - name: Copy debian packaging run: | cd bootc-${BOOTC_VERSION} if [ ! -d ../debian ]; then echo "❌ ERROR: debian packaging directory not found!" echo "The debian/ directory is required for building the package." exit 1 fi cp -r ../debian . - name: Build bootc package run: | cd bootc-${BOOTC_VERSION} echo "Building bootc package with libostree compatibility patch..." # Source Rust environment for the build source ~/.cargo/env dpkg-buildpackage -us -uc -b - name: List built packages run: | echo "Built bootc packages:" ls -la bootc-${BOOTC_VERSION}/../*.deb - name: Create release assets run: | mkdir -p release-assets cp bootc-${BOOTC_VERSION}/../*.deb release-assets/ 2>/dev/null || echo "No .deb files found" # Create a summary file echo "Bootc Package Build Summary" > release-assets/BUILD_SUMMARY.txt echo "===========================" >> release-assets/BUILD_SUMMARY.txt echo "Build Date: $(date)" >> release-assets/BUILD_SUMMARY.txt echo "Ubuntu Version: ${UBUNTU_VERSION}" >> release-assets/BUILD_SUMMARY.txt echo "Bootc Version: ${BOOTC_VERSION}" >> release-assets/BUILD_SUMMARY.txt echo "" >> release-assets/BUILD_SUMMARY.txt echo "Built Packages:" >> release-assets/BUILD_SUMMARY.txt ls -la release-assets/*.deb 2>/dev/null || echo "No packages found" >> release-assets/BUILD_SUMMARY.txt echo "Release assets created:" ls -la release-assets/