From 75a68a1187cb3b252fbcbc5a94387e9d687e9f68 Mon Sep 17 00:00:00 2001 From: veilor-org Date: Sat, 2 May 2026 21:42:54 +0100 Subject: [PATCH] ci: switch ISO publish from artifacts to GitHub Releases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Artifact storage quota (50GB Pro tier) maxed out with ~18 iterations of 2.7GB ISOs. Quota recalc 6-12h not in our cadence. Builds succeed but upload step fails — wasting CI minutes + blocking testing. Switch to GitHub Releases (no storage quota): - Every successful build on main updates rolling `ci-latest` prerelease draft. Replaces files in place. - Tag-driven releases (v*.*.*) keep their existing publish path. - Build logs remain as artifacts (small + opt-in failure only, retention=1d). User can `gh release download ci-latest --repo veilor-org/veilor-os` or browse to releases page. No more artifact quota wall. --- .github/workflows/build-iso.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index ad2f397..87b1080 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -165,15 +165,28 @@ jobs: sha256sum "$ISO_NAME" > "$ISO_NAME.sha256" ls -lh "$ISO_NAME" - - name: Upload ISO artifact - if: success() - uses: actions/upload-artifact@v4 + # ── ISO publish ──────────────────────────────────────────────────── + # Use GitHub Releases (not Actions artifacts) for ISO storage. + # Reason: artifact quota maxed at 50GB on Pro tier with ~18 ISOs. + # Releases have effectively unlimited storage per public/private repo. + # On every successful build of main, update the rolling `ci-latest` + # prerelease draft. Tag releases (`v*.*.*`) get a separate proper + # release. Build logs stay as artifacts (they're tiny + opt-in only + # on failure). + - name: Publish ISO to ci-latest rolling prerelease + if: success() && github.ref == 'refs/heads/main' + uses: softprops/action-gh-release@v2 with: - name: veilor-os-iso - path: | + tag_name: ci-latest + name: "ci-latest (auto)" + body: | + Rolling auto-build from `main`. Latest commit: ${{ github.sha }}. + Replaces on every push. Not a stable release — for testing only. + prerelease: true + make_latest: false + files: | build/out/*.iso build/out/*.sha256 - retention-days: 3 - name: Upload build log on failure if: failure() @@ -183,8 +196,9 @@ jobs: path: | build/out/build.log build/out/build/anaconda/ + retention-days: 1 - - name: Attach to release + - name: Attach to release on tag if: github.event_name == 'release' uses: softprops/action-gh-release@v2 with: