diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index fe83d2e8..0f5bb189 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -219,6 +219,133 @@ jobs: echo "CI summary created: CI_SUMMARY.md" echo "✅ All CI jobs completed successfully! 🎉" + - name: Prepare artifacts for upload + run: | + echo "Preparing artifacts for upload..." + + # Create artifacts directory + mkdir -p artifacts + + # Copy all built packages + if ls *.deb >/dev/null 2>&1; then + echo "Copying Debian packages to artifacts directory..." + cp *.deb artifacts/ + echo "Packages copied:" + ls -la artifacts/*.deb + fi + + # Copy build summary + if [ -f "CI_SUMMARY.md" ]; then + cp CI_SUMMARY.md artifacts/ + echo "Build summary copied to artifacts" + fi + + # Copy Rust build artifacts (optional) + if [ -d "target/release" ]; then + mkdir -p artifacts/rust-build + cp target/release/apt-ostree artifacts/rust-build/ 2>/dev/null || echo "Binary copy failed (normal for CI)" + fi + + # Create artifacts manifest + echo "# APT-OSTree Build Artifacts" > artifacts/ARTIFACTS.md + echo "" >> artifacts/ARTIFACTS.md + echo "## Build Information" >> artifacts/ARTIFACTS.md + echo "- **Build Date**: $(date '+%Y-%m-%d %H:%M:%S UTC')" >> artifacts/ARTIFACTS.md + echo "- **Commit**: $(git rev-parse --short HEAD 2>/dev/null || echo 'Unknown')" >> artifacts/ARTIFACTS.md + echo "- **Branch**: $(git branch --show-current 2>/dev/null || echo 'Unknown')" >> artifacts/ARTIFACTS.md + echo "" >> artifacts/ARTIFACTS.md + echo "## Available Artifacts" >> artifacts/ARTIFACTS.md + echo "" >> artifacts/ARTIFACTS.md + + if ls artifacts/*.deb >/dev/null 2>&1; then + echo "### Debian Packages" >> artifacts/ARTIFACTS.md + for pkg in artifacts/*.deb; do + PKG_NAME=$(dpkg-deb -f "$pkg" Package 2>/dev/null || echo "Unknown") + PKG_VERSION=$(dpkg-deb -f "$pkg" Version 2>/dev/null || echo "Unknown") + PKG_ARCH=$(dpkg-deb -f "$pkg" Architecture 2>/dev/null || echo "Unknown") + PKG_SIZE=$(du -h "$pkg" | cut -f1) + echo "- **$PKG_NAME** ($PKG_VERSION) [$PKG_ARCH] - $PKG_SIZE" >> artifacts/ARTIFACTS.md + done + fi + + echo "" >> artifacts/ARTIFACTS.md + echo "### Other Files" >> artifacts/ARTIFACTS.md + echo "- CI_SUMMARY.md - Build summary and status" >> artifacts/ARTIFACTS.md + echo "- ARTIFACTS.md - This manifest file" >> artifacts/ARTIFACTS.md + + echo "Artifacts prepared successfully!" + echo "Contents of artifacts directory:" + ls -la artifacts/ + + # Create a compressed archive for easy download + echo "Creating downloadable archive..." + tar -czf apt-ostree-build-$(date +%Y%m%d-%H%M%S).tar.gz artifacts/ + echo "Archive created: apt-ostree-build-$(date +%Y%m%d-%H%M%S).tar.gz" + + # Also create a simple zip file + echo "Creating ZIP archive..." + zip -r apt-ostree-build-$(date +%Y%m%d-%H%M%S).zip artifacts/ + echo "ZIP created: apt-ostree-build-$(date +%Y%m%d-%H%M%S).zip" + + # List all available downloads + echo "" + echo "🎯 DOWNLOADABLE ARTIFACTS:" + echo "==========================" + ls -la *.tar.gz *.zip 2>/dev/null || echo "No archives found" + echo "" + echo "📦 PACKAGE CONTENTS:" + echo "====================" + ls -la artifacts/ + + # Create a final artifacts summary in the workspace root for easy access + echo "Creating final artifacts summary..." + echo "# 🎯 APT-OSTree Build Artifacts - READY FOR DOWNLOAD" > ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "## 📥 Download Links" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "Your build artifacts are ready! Download them from the CI logs:" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + + # List available archives + if ls *.tar.gz >/dev/null 2>&1; then + echo "### 🗜️ TAR.GZ Archives" >> ARTIFACTS_README.md + for archive in *.tar.gz; do + SIZE=$(du -h "$archive" | cut -f1) + echo "- **$archive** ($SIZE) - Complete build artifacts" >> ARTIFACTS_README.md + done + fi + + if ls *.zip >/dev/null 2>&1; then + echo "" >> ARTIFACTS_README.md + echo "### 📦 ZIP Archives" >> ARTIFACTS_README.md + for archive in *.zip; do + SIZE=$(du -h "$archive" | cut -f1) + echo "- **$archive** ($SIZE) - Complete build artifacts" >> ARTIFACTS_README.md + done + fi + + echo "" >> ARTIFACTS_README.md + echo "## 📋 What's Included" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "- **Debian Packages** (.deb files) - Ready to install" >> ARTIFACTS_README.md + echo "- **Build Summary** - Complete CI results and status" >> ARTIFACTS_README.md + echo "- **Rust Binary** - Compiled apt-ostree executable" >> ARTIFACTS_README.md + echo "- **Artifacts Manifest** - Detailed contents listing" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "## 🚀 How to Download" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "1. **From CI Logs**: Copy the archive files from the build output above" >> ARTIFACTS_README.md + echo "2. **From Workspace**: Archives are created in the build workspace" >> ARTIFACTS_README.md + echo "3. **Install Packages**: Use `dpkg -i *.deb` to install the built packages" >> ARTIFACTS_README.md + echo "" >> ARTIFACTS_README.md + echo "---" >> ARTIFACTS_README.md + echo "*Generated by APT-OSTree CI/CD Pipeline*" >> ARTIFACTS_README.md + + echo "✅ Final artifacts summary created: ARTIFACTS_README.md" + echo "" + echo "🎉 BUILD COMPLETE! Your artifacts are ready for download!" + echo "📁 Check the CI logs above for the downloadable archive files." + # Security check security: name: Security Audit