name: Test Build on: push: branches: [ main, master ] pull_request: branches: [ main, master ] workflow_dispatch: env: BOOTC_VERSION: "1.5.1" jobs: test-bootc-build: name: Test bootc Build (with existing libostree) runs-on: ubuntu-latest container: image: ubuntu:latest steps: - name: Setup build environment shell: bash 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 . ~/.cargo/env # Set default toolchain for rustup rustup default stable # 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: Install build dependencies run: | apt update -y apt install -y libglib2.0-dev pkg-config - name: Check libostree version run: | pkg-config --modversion ostree-1 || echo "libostree not found" dpkg -l | grep libostree || echo "No libostree packages installed" - 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: Apply compatibility patch run: | cd bootc-${BOOTC_VERSION} patch -p1 < ../bootc-libostree-compatibility.patch - name: Copy debian packaging run: | cd bootc-${BOOTC_VERSION} cp -r ../debian . - name: Test cargo build shell: bash run: | cd bootc-${BOOTC_VERSION} # Source Rust environment for the build . ~/.cargo/env cargo build --release - name: Test package build (if libostree available) shell: bash run: | cd bootc-${BOOTC_VERSION} # Source Rust environment for the build . ~/.cargo/env if pkg-config --exists ostree-1; then dpkg-buildpackage -us -uc -b echo "Package build successful" else echo "Skipping package build - libostree not available" fi