name: Build Packages on: push: branches: [ main, master ] pull_request: branches: [ main, master ] workflow_dispatch: env: UBUNTU_VERSION: "24.04" OSTREE_VERSION: "2025.2" BOOTC_VERSION: "1.5.1" BACKPORT_SUFFIX: "~noble1" jobs: build-libostree-backport: name: Build libostree Backport runs-on: ubuntu-latest container: image: ubuntu:latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup build environment run: | apt update -y apt install -y devscripts build-essential wget - name: Add source repositories run: | echo "deb-src http://us.archive.ubuntu.com/ubuntu/ noble main universe" | tee /etc/apt/sources.list.d/noble-sources.list apt update - name: Create backport directory run: | mkdir -p /opt/Projects/ostree-backport-noble cd /opt/Projects/ostree-backport-noble - name: Download libostree source run: | cd /opt/Projects/ostree-backport-noble POOL_URL="http://archive.ubuntu.com/ubuntu/pool/universe/o/ostree/" wget "${POOL_URL}ostree_${OSTREE_VERSION}-1.dsc" wget "${POOL_URL}ostree_${OSTREE_VERSION}.orig.tar.xz" wget "${POOL_URL}ostree_${OSTREE_VERSION}-1.debian.tar.xz" - name: Extract and modify source run: | cd /opt/Projects/ostree-backport-noble dpkg-source -x "ostree_${OSTREE_VERSION}-1.dsc" cd "ostree-${OSTREE_VERSION}" dch --newversion "${OSTREE_VERSION}-1${BACKPORT_SUFFIX}" \ --distribution "noble-backports" \ -b \ "Backport libostree ${OSTREE_VERSION}-1 from Ubuntu questing for bootc compatibility." - name: Install build dependencies run: | cd /opt/Projects/ostree-backport-noble/ostree-${OSTREE_VERSION} apt build-dep ./ - name: Build libostree backport run: | cd /opt/Projects/ostree-backport-noble/ostree-${OSTREE_VERSION} dpkg-buildpackage -us -uc -b - name: Upload libostree artifacts uses: actions/upload-artifact@v3 with: name: libostree-backport-packages path: /opt/Projects/ostree-backport-noble/*.deb retention-days: 30 build-bootc: name: Build bootc Package runs-on: ubuntu-latest container: image: ubuntu:latest needs: build-libostree-backport steps: - name: Checkout repository uses: actions/checkout@v3 - name: Download libostree artifacts uses: actions/download-artifact@v3 with: name: libostree-backport-packages path: /tmp/libostree-packages - name: Install libostree backport run: | dpkg -i /tmp/libostree-packages/*.deb || true apt --fix-broken install -y - name: Setup build environment run: | apt update -y apt install -y git cargo rustc pkg-config build-essential - 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: Build bootc package run: | cd bootc-${BOOTC_VERSION} dpkg-buildpackage -us -uc -b - name: Upload bootc artifacts uses: actions/upload-artifact@v3 with: name: bootc-packages path: bootc-${BOOTC_VERSION}/../*.deb retention-days: 30 create-artifacts: name: Create Combined Artifacts runs-on: ubuntu-latest container: image: ubuntu:latest needs: [build-libostree-backport, build-bootc] steps: - name: Download all artifacts uses: actions/download-artifact@v3 with: path: /tmp/artifacts - name: Create combined artifacts run: | mkdir -p release-assets cp /tmp/artifacts/libostree-backport-packages/*.deb release-assets/ 2>/dev/null || true cp /tmp/artifacts/bootc-packages/*.deb release-assets/ 2>/dev/null || true - name: Upload combined artifacts uses: actions/upload-artifact@v3 with: name: release-assets path: release-assets/ retention-days: 30