diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b465dab4..5892cd7a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,9 @@ name: Release # Builds the macOS, Windows, and Linux desktop apps, an Android APK, an iOS -# IPA, and the Anbernic RG34XXSP (Stock OS 64-bit MOD / PortMaster) port on -# the self-hosted Mac runner, and publishes them as a GitHub Release. +# IPA, a Nintendo Switch fused NRO (experimental), and the Anbernic RG34XXSP +# (Stock OS 64-bit MOD / PortMaster) port on the self-hosted Mac runner, and +# publishes them as a GitHub Release. # # Versioning: # - First ever release is 0.1.0. @@ -179,6 +180,14 @@ jobs: scripts/build_ios.sh --fetch --device --release \ --version "${{ steps.ver.outputs.version }}" + - name: Build Switch + run: | + set -euo pipefail + # Fused NRO; needs native switch-tools (nacptool/elf2nro) and/or + # Docker on the Mac self-hosted runner; see docs/switch-build.md. + scripts/build_switch.sh --fetch --fused \ + --version "${{ steps.ver.outputs.version }}" + - name: Build Anbernic RG34XXSP port run: | set -euo pipefail @@ -239,6 +248,14 @@ jobs: [ -f "$ipa" ] || { echo "::error::$ipa not found (expected from scripts/build_ios.sh --device)"; exit 1; } cp "$ipa" "$outdir/gen1recomp-${v}-ios.ipa" + nro="dist/switch/gen1recomp-${v}-switch.nro" + [ -f "$nro" ] || { echo "::error::$nro not found (expected from scripts/build_switch.sh --fused)"; exit 1; } + cp "$nro" "$outdir/gen1recomp-${v}-switch.nro" + # Sidecar written by build_fused.sh when the fused NRO succeeds. + if [ -f "${nro}.sha256" ]; then + cp "${nro}.sha256" "$outdir/gen1recomp-${v}-switch.nro.sha256" + fi + # Anbernic handheld port (suffix names the CFW it targets, so a # future RG35XX/other-CFW pack can ship alongside it). rg34="dist/rg34xxsp/gen1recomp-rg34xxsp-stockos64-mod.zip" @@ -349,18 +366,26 @@ jobs: fi printf 'Release notes:\n%s\n' "$notes" + release_files=( + "dist/release/gen1recomp-${v}-macos.zip" + "dist/release/gen1recomp-${v}-windows.zip" + "dist/release/gen1recomp-${v}-linux.zip" + "dist/release/gen1recomp-${v}-android.apk" + "dist/release/gen1recomp-${v}-ios.ipa" + "dist/release/gen1recomp-${v}-switch.nro" + "dist/release/gen1recomp-${v}-rg34xxsp-stockos64-mod.zip" + "dist/release/gen1recomp-${v}.love" + "dist/release/sha256sums.txt" + ) + if [ -f "dist/release/gen1recomp-${v}-switch.nro.sha256" ]; then + release_files+=("dist/release/gen1recomp-${v}-switch.nro.sha256") + fi + gh release create "$tag" \ --target "$GITHUB_SHA" \ --title "$v" \ --notes "$notes" \ - "dist/release/gen1recomp-${v}-macos.zip" \ - "dist/release/gen1recomp-${v}-windows.zip" \ - "dist/release/gen1recomp-${v}-linux.zip" \ - "dist/release/gen1recomp-${v}-android.apk" \ - "dist/release/gen1recomp-${v}-ios.ipa" \ - "dist/release/gen1recomp-${v}-rg34xxsp-stockos64-mod.zip" \ - "dist/release/gen1recomp-${v}.love" \ - "dist/release/sha256sums.txt" + "${release_files[@]}" echo "Published release $tag"