bootc-deb/.forgejo/workflows/test-build.yml
robojerk 664f0c5338
All checks were successful
Build bootc Package / Build bootc Package (push) Successful in 5m52s
Test Build / Test bootc Build (with existing libostree) (push) Successful in 7m57s
Fix test workflow: add rustup environment setup to match main workflow
- Add rustup environment variables (PATH, CARGO_HOME, RUSTUP_HOME) to test workflow
- Add 'rustup default stable' call to ensure default toolchain is set
- Match the exact environment setup that works in the main workflow
- Update todo.md to reflect the latest fix and completed main goal

This ensures the test workflow has the same rustup environment as the main workflow
and should now pass both cargo build and dpkg-buildpackage steps without rustup errors.
2025-07-22 00:07:27 +00:00

104 lines
No EOL
3.6 KiB
YAML

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 libzstd-dev libssl-dev pkg-config curl
# Add Forgejo repository for libostree packages
curl -fsSL https://git.raines.xyz/api/packages/robojerk/debian/repository.key -o /etc/apt/keyrings/forgejo-robojerk.asc
echo "deb [signed-by=/etc/apt/keyrings/forgejo-robojerk.asc] https://git.raines.xyz/api/packages/robojerk/debian noble main" | tee -a /etc/apt/sources.list.d/forgejo.list
apt update -y
# Install libostree packages from Forgejo
apt install -y libostree-dev=2025.2-1~noble1 libostree-1-1=2025.2-1~noble1
# Install additional Debian build dependencies
apt install -y debhelper-compat dh-cargo cargo rustc libcurl4-gnutls-dev libfuse3-dev libsoup-3.0-dev gobject-introspection gtk-doc-tools docbook-xml docbook-xsl xsltproc gjs libglib2.0-doc
- 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 and ensure default toolchain is set
. ~/.cargo/env
rustup default stable
# Set environment variables for the entire build process
export PATH="$HOME/.cargo/bin:$PATH"
export CARGO_HOME="$HOME/.cargo"
export RUSTUP_HOME="$HOME/.rustup"
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