- 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.
104 lines
No EOL
3.6 KiB
YAML
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 |