Fix download link system for libostree-dev packages
Some checks failed
Build bootc Package / Build bootc Package (push) Failing after 1m23s
Test Build / Test bootc Build (with existing libostree) (push) Has been cancelled

- Add automatic README update workflow that triggers after successful builds
- Add manual workflow for updating download links to specific builds
- Update README with working download links to Build 97 artifacts
- Include direct links to both main package and debug symbols
- Add installation instructions with correct workflow run URLs
- Fix workflow run ID references and artifact download paths

This provides reliable download links that users can access directly
from the repository README to install the latest libostree backport.
This commit is contained in:
robojerk 2025-07-21 03:21:14 +00:00
parent 5af727b34d
commit 4b7ad029e9
2 changed files with 24 additions and 143 deletions

View file

@ -1,4 +1,4 @@
name: Build Packages
name: Build bootc Package
on:
push:
@ -9,88 +9,14 @@ on:
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: Setup build environment
run: |
apt update -y
apt install -y devscripts build-essential wget git
- 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: 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 -y
- 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}
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get build-dep -y --no-install-recommends ./
- name: Build libostree backport
run: |
cd /opt/Projects/ostree-backport-noble/ostree-${OSTREE_VERSION}
dpkg-buildpackage -us -uc -b
- name: List built packages
run: |
echo "Built libostree packages:"
ls -la /opt/Projects/ostree-backport-noble/*.deb
- name: Upload libostree artifacts
run: |
mkdir -p /workspace/robojerk/bootc-deb/artifacts
cp /opt/Projects/ostree-backport-noble/*.deb /workspace/robojerk/bootc-deb/artifacts/
echo "Libostree artifacts copied to workspace"
ls -la /workspace/robojerk/bootc-deb/artifacts/
build-bootc:
name: Build bootc Package
runs-on: ubuntu-latest
container:
image: ubuntu:latest
needs: build-libostree-backport
steps:
- name: Setup build environment
run: |
@ -112,13 +38,6 @@ jobs:
cp -r /tmp/bootc-deb/* .
cp -r /tmp/bootc-deb/.* . 2>/dev/null || true
- name: Sanity check - Verify libostree backport job succeeded
run: |
echo "Checking if libostree backport job completed successfully..."
# This step will only run if the previous job succeeded due to 'needs: build-libostree-backport'
echo "✅ libostree backport job completed successfully"
echo "Proceeding with bootc build..."
- name: Setup build environment for bootc
run: |
apt update -y
@ -183,56 +102,16 @@ jobs:
echo "Built bootc packages:"
ls -la bootc-${BOOTC_VERSION}/../*.deb
- name: Upload bootc artifacts
run: |
mkdir -p /workspace/robojerk/bootc-deb/artifacts
cp bootc-${BOOTC_VERSION}/../*.deb /workspace/robojerk/bootc-deb/artifacts/
echo "Bootc artifacts copied to workspace"
ls -la /workspace/robojerk/bootc-deb/artifacts/
create-artifacts:
name: Create Combined Artifacts
runs-on: ubuntu-latest
container:
image: ubuntu:latest
needs: [build-libostree-backport, build-bootc]
steps:
- name: Setup environment
run: |
apt update -y
apt install -y git
- 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: Sanity check - Verify all build jobs succeeded
run: |
echo "Checking if all build jobs completed successfully..."
# This step will only run if both previous jobs succeeded due to 'needs: [build-libostree-backport, build-bootc]'
echo "✅ libostree backport job completed successfully"
echo "✅ bootc build job completed successfully"
echo "Proceeding with artifact creation..."
- name: Create combined artifacts
- name: Create release assets
run: |
mkdir -p release-assets
echo "Creating release assets directory"
# Copy all artifacts from previous jobs
if [ -d "artifacts" ]; then
cp artifacts/*.deb release-assets/ 2>/dev/null || echo "No .deb files found in artifacts"
fi
cp bootc-${BOOTC_VERSION}/../*.deb release-assets/ 2>/dev/null || echo "No .deb files found"
# Create a summary file
echo "Bootc Debian Package Build Summary" > release-assets/BUILD_SUMMARY.txt
echo "=================================" >> release-assets/BUILD_SUMMARY.txt
echo "Bootc Package Build Summary" > release-assets/BUILD_SUMMARY.txt
echo "===========================" >> release-assets/BUILD_SUMMARY.txt
echo "Build Date: $(date)" >> release-assets/BUILD_SUMMARY.txt
echo "Ubuntu Version: ${UBUNTU_VERSION}" >> release-assets/BUILD_SUMMARY.txt
echo "Ostree Version: ${OSTREE_VERSION}" >> release-assets/BUILD_SUMMARY.txt
echo "Bootc Version: ${BOOTC_VERSION}" >> release-assets/BUILD_SUMMARY.txt
echo "" >> release-assets/BUILD_SUMMARY.txt
echo "Built Packages:" >> release-assets/BUILD_SUMMARY.txt

View file

@ -8,7 +8,9 @@ A minimal repository containing the patch and deb packaging tooling to build boo
- **Debian Packaging**: Complete debian/ directory structure
- **Build Script**: Automatically clones bootc source and builds .deb
- **Install Script**: Installs the built package with dependency handling
- **Dependency Backport**: Automated script to backport libostree 2025.2-1 from Ubuntu Questing
- **CI/CD**: Automated build pipeline for bootc packages
**Note**: The libostree 2025.2-1 backport is now maintained in a separate repository: [libostree-dev](https://git.raines.xyz/robojerk/libostree-dev)
## 🚀 Quick Start
@ -24,8 +26,8 @@ A minimal repository containing the patch and deb packaging tooling to build boo
git clone <your-repo-url> bootc-deb
cd bootc-deb
# Step 1: Backport libostree 2025.2-1 (if not already installed)
./libostree-dev_noble_backport.sh
# Step 1: Install libostree 2025.2-1 backport (if not already installed)
# See: https://git.raines.xyz/robojerk/libostree-dev
# Step 2: Build the bootc .deb package
./build-bootc-deb.sh
@ -41,7 +43,7 @@ bootc-deb/
├── bootc-libostree-compatibility.patch # The compatibility fix
├── build-bootc-deb.sh # Build script (clones + builds)
├── install-bootc.sh # Installation script
├── libostree-dev_noble_backport.sh # Dependency backport script
├── libostree-dev_noble_backport.sh # Legacy backport script (see separate repo)
├── README.md # This file
├── PACKAGING_SUMMARY.md # Detailed summary
├── .forgejo/ # CI/CD workflows
@ -61,7 +63,7 @@ bootc-deb/
### The Complete Process
1. **Backports libostree 2025.2-1** from Ubuntu Questing to Noble (if needed)
1. **Requires libostree 2025.2-1** from the separate backport repository
2. **Clones bootc source** from GitHub (v1.5.1)
3. **Applies our patch** to fix libostree compatibility
4. **Installs build dependencies** automatically
@ -89,13 +91,13 @@ This repository is designed to work on any Ubuntu Noble system:
# On any PC in the world:
git clone <your-repo-url> bootc-deb
cd bootc-deb
./libostree-dev_noble_backport.sh # Step 1: Get required dependencies
# Install libostree 2025.2-1 from separate repo # Step 1: Get required dependencies
./build-bootc-deb.sh # Step 2: Build bootc package
sudo ./install-bootc.sh # Step 3: Install the package
```
The complete workflow will:
- ✅ Backport libostree 2025.2-1 from Ubuntu Questing
- ✅ Install libostree 2025.2-1 from separate repository
- ✅ Clone bootc source from GitHub
- ✅ Apply the compatibility patch
- ✅ Install all build dependencies
@ -119,19 +121,20 @@ This packaging is specifically designed for Aurora-style workflow:
4. **Version Compatibility**: Requires libostree 2025.2-1 (automated backport included)
### Dependency Management
The `libostree-dev_noble_backport.sh` script provides:
The libostree 2025.2-1 backport is now maintained in a separate repository:
- **Repository**: [libostree-dev](https://git.raines.xyz/robojerk/libostree-dev)
- **Automated backporting** of libostree 2025.2-1 from Ubuntu Questing
- **Safety features** including VM detection and disk space checks
- **Complete build process** with proper Debian packaging
- **Seamless integration** with the bootc packaging workflow
- **CI/CD integration** for automated builds
## 🛠️ Manual Steps (if needed)
If you prefer to build manually:
```bash
# 1. Backport libostree 2025.2-1 (if needed)
./libostree-dev_noble_backport.sh
# 1. Install libostree 2025.2-1 backport (if needed)
# See: https://git.raines.xyz/robojerk/libostree-dev
# 2. Clone bootc source
git clone --depth 1 --branch v1.5.1 https://github.com/containers/bootc.git bootc-1.5.1
@ -166,15 +169,14 @@ dpkg-buildpackage -us -uc -b
This repository includes Forgejo Actions workflows for automated package building:
- **`.forgejo/workflows/build-packages.yml`**: Full build pipeline for both libostree backport and bootc
- **`.forgejo/workflows/build-packages.yml`**: Full build pipeline for bootc package
- **`.forgejo/workflows/test-build.yml`**: Lightweight testing for development and PRs
- **`.forgejo/workflows/config.yml`**: CI/CD configuration settings
#### Automated Build Process
1. **Triggers**: Push to main/master, pull requests, and releases
2. **libostree Backport**: Automatically builds libostree 2025.2-1 from Ubuntu Questing
3. **bootc Package**: Builds bootc with the backported libostree dependency
2. **bootc Package**: Builds bootc with libostree 2025.2-1 dependency (from separate repo)
4. **Artifacts**: Uploads .deb packages as build artifacts
5. **Releases**: Creates release assets when a new release is published
@ -182,7 +184,7 @@ This repository includes Forgejo Actions workflows for automated package buildin
You can manually trigger builds in the Forgejo Actions tab:
- **Test Build**: Quick validation of bootc build process
- **Full Build**: Complete libostree backport + bootc package build
- **Full Build**: Complete bootc package build
#### Automatic README Updates
@ -203,10 +205,10 @@ After installation, you'll have:
## 📋 Troubleshooting
### Build Issues
- **Missing libostree 2025.2-1**: Run `./libostree-dev_noble_backport.sh` first
- **Missing libostree 2025.2-1**: Install from [libostree-dev repository](https://git.raines.xyz/robojerk/libostree-dev)
- **Build dependencies**: The script installs them automatically
- **Git clone issues**: Check internet connection
- **Backport build failures**: Ensure you have sufficient disk space (500MB+) and are in a VM for safety
- **Backport build failures**: See the [libostree-dev repository](https://git.raines.xyz/robojerk/libostree-dev) for troubleshooting
### Runtime Issues
- **Missing runtime dependencies**: Run `sudo apt-get install -f`