From 9a64fb5f5358b6951543e7336c1cdfa0e4f1aa1c Mon Sep 17 00:00:00 2001 From: chris1111 Date: Sun, 4 Oct 2026 22:07:48 -0400 Subject: [PATCH 1/3] Add rolling alpha release workflow Update the GitHub Actions release flow to verify expected artifacts, mark alpha/beta tagged releases as prereleases, and publish a rolling `Clover-Build-Alpha` release for master and manual dispatch builds. Also refresh the README badges to show the latest release and the rolling alpha version. --- .github/workflows/main.yml | 55 +++++++++++++++++++++++++++++++++++++- README.md | 3 ++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 27ed4c66f7..32c53a3f6e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,6 +8,12 @@ on: - '*' pull_request: workflow_dispatch: + inputs: + alpha_build: + description: 'Publish as Clover-Build-Alpha rolling_release' + required: false + default: true + type: boolean jobs: build-macos: @@ -60,7 +66,20 @@ jobs: CLOVERX64.efi.zip Clover_r*.pkg - - name: Publish Release + - name: Verify Release Assets + run: | + shopt -s nullglob + missing=() + for pattern in '*.7z' 'CloverV2*.zip' 'CLOVERX64.efi.zip' 'Clover_r*.pkg'; do + files=($pattern) + if [ ${#files[@]} -eq 0 ]; then missing+=("$pattern"); fi + done + if [ ${#missing[@]} -gt 0 ]; then + echo "::error::Missing expected release artifact(s): ${missing[*]}" + exit 1 + fi + + - name: Publish Tagged Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v3 with: @@ -70,3 +89,37 @@ jobs: CLOVERX64.efi.zip Clover_r*.pkg generate_release_notes: true + prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }} + + - name: Remove Existing Alpha Release Assets + if: (github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master') + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if ! gh release view Clover-Build-Alpha >/dev/null 2>&1; then + echo "Clover-Build-Alpha release does not exist yet; skipping asset cleanup." + exit 0 + fi + + gh release view Clover-Build-Alpha --json assets --jq '.assets[].name' | + while IFS= read -r asset; do + gh release delete-asset Clover-Build-Alpha "$asset" --yes + done + + - name: Publish Alpha Rolling Release + if: (github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master') + uses: softprops/action-gh-release@v3 + with: + tag_name: Clover-Build-Alpha + name: "Clover Build Alpha (${{ env.GIT_SHA }})" + body: | + Automated alpha build from commit `${{ env.GIT_SHA }}` on branch `${{ github.ref_name }}`. + This is a rolling pre-release and will be overwritten by future alpha builds. + files: | + *.7z + CloverV2*.zip + CLOVERX64.efi.zip + Clover_r*.pkg + generate_release_notes: false + prerelease: true + make_latest: false diff --git a/README.md b/README.md index da74457e10..4da0f547ea 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # CloverBootloader -[![CI](https://github.com/CloverHackyColor/CloverBootloader/actions/workflows/main.yml/badge.svg)](https://github.com/CloverHackyColor/CloverBootloader/actions/workflows/main.yml) [![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://github.com/CloverHackyColor/CloverBootloader/blob/master/LICENSE) +[![CI](https://github.com/CloverHackyColor/CloverBootloader/actions/workflows/main.yml/badge.svg)](https://github.com/CloverHackyColor/CloverBootloader/actions/workflows/main.yml) [![License](https://img.shields.io/badge/License-BSD%202--Clause-orange.svg)](https://github.com/CloverHackyColor/CloverBootloader/blob/master/LICENSE) [![Latest Release](https://img.shields.io/github/v/release/CloverHackyColor/CloverBootloader?style=flat&label=Latest%20Release)](https://github.com/CloverHackyColor/CloverBootloader/releases/latest) +[![Version](https://img.shields.io/github/v/tag/CloverHackyColor/CloverBootloader?filter=Clover-Build-Alpha*&style=flat&label=Version&cacheSeconds=60)](https://github.com/CloverHackyColor/CloverBootloader/releases) CloverLogo From 0d4385fbf9f9dca59c1273b88528383772321559 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Oct 2026 02:14:33 +0000 Subject: [PATCH 2/3] Initial plan From f3539df5a20bc8ca54061fba3b90b02bc95ee3c6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Oct 2026 02:16:07 +0000 Subject: [PATCH 3/3] Apply remaining changes Co-authored-by: chris1111 <6248794+chris1111@users.noreply.github.com> --- .github/workflows/main.yml | 41 ++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 32c53a3f6e..2c09e8ba09 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,6 +21,9 @@ jobs: runs-on: macos-latest permissions: contents: write + concurrency: + group: ${{ ((github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master')) && 'clover-alpha-release' || format('build-{0}', github.run_id) }} + cancel-in-progress: false steps: - uses: actions/checkout@v7 with: @@ -91,21 +94,6 @@ jobs: generate_release_notes: true prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }} - - name: Remove Existing Alpha Release Assets - if: (github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master') - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - if ! gh release view Clover-Build-Alpha >/dev/null 2>&1; then - echo "Clover-Build-Alpha release does not exist yet; skipping asset cleanup." - exit 0 - fi - - gh release view Clover-Build-Alpha --json assets --jq '.assets[].name' | - while IFS= read -r asset; do - gh release delete-asset Clover-Build-Alpha "$asset" --yes - done - - name: Publish Alpha Rolling Release if: (github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master') uses: softprops/action-gh-release@v3 @@ -123,3 +111,26 @@ jobs: generate_release_notes: false prerelease: true make_latest: false + + - name: Remove Stale Alpha Release Assets + if: (github.event_name == 'workflow_dispatch' && inputs.alpha_build == true) || (github.event_name == 'push' && github.ref == 'refs/heads/master') + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if ! gh release view Clover-Build-Alpha >/dev/null 2>&1; then + echo "Clover-Build-Alpha release does not exist yet; skipping asset cleanup." + exit 0 + fi + + shopt -s nullglob + current=(*.7z CloverV2*.zip CLOVERX64.efi.zip Clover_r*.pkg) + gh release view Clover-Build-Alpha --json assets --jq '.assets[].name' | + while IFS= read -r asset; do + keep=false + for f in "${current[@]}"; do + if [ "$f" = "$asset" ]; then keep=true; break; fi + done + if [ "$keep" = false ]; then + gh release delete-asset Clover-Build-Alpha "$asset" --yes + fi + done