libostree-dev/CI-CD-IMPROVEMENTS.md
robojerk 38e017cef3
Some checks failed
Build libostree Backport / Build libostree Backport (push) Failing after 17m20s
Build ostree Backports / Build ostree Backport for noble (push) Failing after 2m37s
Add multi-distribution ostree backport support for Ubuntu Noble and Debian Trixie
- Add main ostree-backport.sh script with distribution selection
- Add wrapper scripts: backport-noble.sh and backport-trixie.sh
- Add usage-guide.sh for comprehensive documentation
- Update CI/CD workflows with improved multi-distribution support
- Add test-build.yml workflow for quick validation
- Update README.md with multi-distribution documentation
- Add CI-CD-IMPROVEMENTS.md with detailed workflow documentation
- Remove old .deb files (steam.deb, wget_1.21.4-1ubuntu4.1_amd64.deb)

Features:
- Ubuntu Noble: Source from Questing, target Noble
- Debian Trixie: Source from sid, target Trixie
- Enhanced error handling and logging
- Manual triggers for single/all distributions
- Comprehensive CI/CD documentation
2025-08-05 09:33:14 -07:00

4.1 KiB

CI/CD Improvements Summary

🚀 Enhanced Workflows

1. Main Build Workflow (build-ostree-backports.yml)

Key Improvements:

  • Matrix Strategy: Proper multi-distribution support with dynamic matrix generation
  • Manual Triggers: Support for single distribution or all distributions
  • Better Error Handling: Comprehensive error checking and exit codes
  • Detailed Logging: Step-by-step progress with distribution-specific context
  • Upload Statistics: Success/failure counters with warnings
  • Package Path Configuration: Distribution-specific upload paths

New Features:

  • build_all parameter for building both distributions simultaneously
  • Distribution-specific package upload paths (noble/main, trixie/main)
  • Enhanced error reporting with GitHub Actions warnings
  • Improved source download with error checking

2. Test Workflow (test-build.yml)

Purpose:

  • Quick validation of build process
  • Tests source download from both distributions
  • Verifies source extraction and changelog modification
  • Fast feedback before full builds

Features:

  • Manual trigger with distribution selection
  • Step-by-step validation
  • Clear success/failure reporting

🎯 Manual Trigger Options

Single Distribution Build

workflow_dispatch:
  inputs:
    target_distro: noble  # or trixie
    build_all: false

All Distributions Build

workflow_dispatch:
  inputs:
    target_distro: noble  # ignored when build_all=true
    build_all: true

Test Mode

workflow_dispatch:
  inputs:
    target_distro: noble  # or trixie

📊 Matrix Configuration

Ubuntu Noble

- target_distro: noble
  distro_type: ubuntu
  source_release: questing
  target_release: noble
  backport_suffix: ~noble1
  pool_url: http://archive.ubuntu.com/ubuntu/pool/universe/o/ostree/
  sources_list: "deb-src http://us.archive.ubuntu.com/ubuntu/ noble main universe"
  package_upload_path: noble/main

Debian Trixie

- target_distro: trixie
  distro_type: debian
  source_release: sid
  target_release: trixie
  backport_suffix: ~trixie1
  pool_url: http://deb.debian.org/debian/pool/main/o/ostree/
  sources_list: "deb-src http://deb.debian.org/debian/ trixie main contrib non-free"
  package_upload_path: trixie/main

🔧 Error Handling Improvements

Source Download

wget "${POOL_URL}ostree_${OSTREE_VERSION}-${OSTREE_DEBIAN_REVISION}.dsc" || exit 1
wget "${POOL_URL}ostree_${OSTREE_VERSION}.orig.tar.xz" || exit 1
wget "${POOL_URL}ostree_${OSTREE_VERSION}-${OSTREE_DEBIAN_REVISION}.debian.tar.xz" || exit 1

Build Process

dpkg-source -x "ostree_${OSTREE_VERSION}-${OSTREE_DEBIAN_REVISION}.dsc" || exit 1
apt-get build-dep -y --no-install-recommends ./ || exit 1
dpkg-buildpackage -us -uc -b || exit 1

Upload Statistics

upload_success=0
upload_failed=0
# ... upload logic ...
echo "Upload Summary for ${{ matrix.target_distro }}:"
echo "  ✅ Successful uploads: $upload_success"
echo "  ❌ Failed uploads: $upload_failed"

📈 Benefits

  1. Reliability: Better error handling prevents silent failures
  2. Flexibility: Support for single or multi-distribution builds
  3. Debugging: Detailed logging for troubleshooting
  4. Testing: Quick validation workflow for rapid iteration
  5. Monitoring: Upload statistics and success tracking
  6. Maintainability: Clear separation of concerns and configuration

🎯 Usage Examples

GitHub Actions UI

  1. Go to Actions → Build ostree Backports
  2. Click "Run workflow"
  3. Select target distribution or "Build all"
  4. Monitor progress with detailed logging

Test Mode

  1. Go to Actions → Test ostree Build
  2. Click "Run workflow"
  3. Select distribution to test
  4. Quick validation of build process

📋 Workflow Files

  • build-ostree-backports.yml - Main multi-distribution build workflow
  • test-build.yml - Quick validation workflow
  • build-libostree-backport.yml - Legacy single-distribution workflow (kept for reference)
  • manual-update-readme.yml - Documentation update workflow
  • update-readme.yml - Automated README updates