name: Simple Build & Upload # Simple workflow for building deb-bootupd and uploading artifacts # Based on patterns from: https://domaindrivenarchitecture.org/pages/dda-pallet/ on: push: branches: [ main, master ] pull_request: branches: [ main, master ] workflow_dispatch: jobs: build: runs-on: ubuntu-latest container: # Use complete Rust image with all components pre-installed # This avoids the "whack-a-mole" of adding components one by one image: rust:1.89 steps: - name: Checkout code and setup environment run: | apt update -y apt install -y git curl pkg-config libssl-dev libsystemd-dev build-essential file # Rust 1.89.0 is already installed with all components in rust:1.89 # No need for manual component installation! echo "✅ Using pre-installed Rust from official image:" rustc --version cargo --version # Clone repository git clone https://git.raines.xyz/robojerk/deb-bootupd.git /tmp/deb-bootupd cd /tmp/deb-bootupd echo "Repository: $(git remote get-url origin)" echo "Branch: $(git branch --show-current)" echo "Commit: $(git rev-parse --short HEAD)" # Verify Rust version meets requirements (need 1.84.1+) RUST_VERSION=$(rustc --version | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1) echo "Rust version: $RUST_VERSION" if [ "$(printf '%s\n' "1.84.1" "$RUST_VERSION" | sort -V | head -n1)" != "1.84.1" ]; then echo "❌ Rust version $RUST_VERSION is too old, need 1.84.1+" exit 1 else echo "✅ Rust version $RUST_VERSION meets requirement (1.84.1+)" fi # Rust environment is already set up in the container echo "Rust environment ready:" echo "RUSTUP_HOME: $RUSTUP_HOME" echo "CARGO_HOME: $CARGO_HOME" echo "PATH includes: $PATH" - name: Build project run: | cd /tmp/deb-bootupd echo "Building deb-bootupd in release mode..." cargo build --release echo "Build artifacts:" ls -la target/release/ # Show binary info if [ -f target/release/bootupd ]; then echo "bootupd binary info:" file target/release/bootupd fi - name: Run tests run: | cd /tmp/deb-bootupd echo "Running tests..." cargo test --release echo "Running clippy..." cargo clippy --release echo "Checking formatting..." cargo fmt --check - name: Create artifacts run: | cd /tmp/deb-bootupd mkdir -p artifacts cp target/release/bootupd artifacts/ cp -r src/ artifacts/ cp Cargo.toml artifacts/ # Create build info echo "Build: $(date) - $(git rev-parse --short HEAD)" > artifacts/build-info.txt echo "Rust Version: $(rustc --version)" >> artifacts/build-info.txt echo "Artifacts created:" ls -la artifacts/ - name: Upload artifacts uses: https://data.forgejo.org/actions/upload-artifact@v3 with: name: deb-bootupd-build path: /tmp/deb-bootupd/artifacts/ if-no-files-found: error retention-days: 30