Files
ARMSX2/.github/workflows/nightly_release.yml
T
86643ee20d CI: build and publish the libretro core in the nightly
Lands the libretro build CI from WizzardSK's PR #6. PR #4 added
the core frontend (yaps2_libretro.so) but not the CI to build it;
add linux_build_libretro.yml β€” a native aarch64 build of the
Qt-less core (driven by the frontend's Vulkan context sharing, so
no X11/Wayland/SDL WSI), packaged as a stripped .tar.zst β€” and
wire it into nightly_release.yml alongside the qt/sdl/macos jobs,
with a matching release-notes line.

Co-Authored-By: WizzardSK <42868978+WizzardSK@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 16:27:41 -07:00

123 lines
4.5 KiB
YAML

name: πŸŒ™ Nightly Release
# yaps2 fork: build the aarch64 artifacts and publish them as a single rolling
# "nightly" pre-release on this repo. The `nightly` tag/release is deleted and
# recreated each run, so its download URLs always point at the latest build.
#
# Assets:
# * yaps2-linux-arm64-qt-…​.AppImage (desktop / dev + Rocknix / Batocera)
# * yaps2-linux-arm64-qt-…​.tar.zst (same Qt build, portable no-FUSE tarball)
# * yaps2-linux-arm64-sdl-…​.tar.zst (bare-kmsdrm handhelds)
# * yaps2-macos-arm64-…​.tar.zst (EXPERIMENTAL native Apple Silicon .app)
on:
schedule:
- cron: "0 7 * * *" # 07:00 UTC daily
workflow_dispatch: # …and on demand.
permissions:
contents: write
jobs:
build_qt:
if: github.repository == 'yaps2/yaps2'
name: "Qt Tarball (arm64)"
uses: ./.github/workflows/linux_build_qt.yml
with:
jobName: "Qt Portable Build (arm64)"
artifactPrefixName: "yaps2-linux-arm64-qt"
compiler: clang
cmakeflags: ""
buildTarball: true
fetchTags: true
secrets: inherit
build_sdl:
if: github.repository == 'yaps2/yaps2'
name: "SDL Handheld (arm64)"
uses: ./.github/workflows/linux_build_sdl.yml
with:
jobName: "SDL Handheld Build (arm64)"
artifactPrefixName: "yaps2-linux-arm64-sdl"
fetchTags: true
secrets: inherit
build_libretro:
if: github.repository == 'yaps2/yaps2'
name: "libretro Core (arm64)"
uses: ./.github/workflows/linux_build_libretro.yml
with:
jobName: "libretro Core Build (arm64)"
artifactPrefixName: "yaps2-linux-arm64-libretro"
fetchTags: true
secrets: inherit
build_macos:
if: github.repository == 'yaps2/yaps2'
name: "macOS arm64 (experimental)"
uses: ./.github/workflows/macos_build.yml
with:
jobName: "macOS arm64 Build (experimental)"
artifactPrefixName: "yaps2-macos-arm64"
fetchTags: true
secrets: inherit
publish_nightly:
# Wait for the experimental macOS job too (so its artifact is ready if it
# succeeded) but only REQUIRE the Linux builds β€” a macOS failure must never
# block the handheld release. !cancelled() lets us run after build_macos fails.
if: >-
${{ !cancelled()
&& github.repository == 'yaps2/yaps2'
&& needs.build_qt.result == 'success'
&& needs.build_sdl.result == 'success' }}
name: "Publish Nightly"
needs:
- build_qt
- build_sdl
- build_libretro
- build_macos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Download all artifacts
uses: actions/download-artifact@v8
with:
path: ci-artifacts
- name: Stage release assets
run: |
mkdir -p out
find ci-artifacts -type f \( -name '*.tar.zst' -o -name '*.AppImage' \) -exec cp -v {} out/ \;
echo "Assets to publish:"
ls -la out
- name: Publish rolling nightly release
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
DATE=$(date -u +%Y-%m-%d)
SHA=$(git rev-parse --short HEAD)
TAG=nightly
# Move the rolling tag+release to the current commit.
gh release delete "$TAG" --repo "$GITHUB_REPOSITORY" --yes --cleanup-tag || true
gh release create "$TAG" out/* \
--repo "$GITHUB_REPOSITORY" \
--target "$GITHUB_SHA" \
--title "yaps2 Nightly ($DATE)" \
--prerelease \
--notes "Automated nightly build of yaps2 (aarch64 Linux) from \`main\` @ ${SHA} on ${DATE}.
**Assets**
- \`*-qt-*.AppImage\` β€” Qt AppImage for desktop / dev and Wayland handhelds (Rocknix / Batocera). Needs FUSE.
- \`*-qt-*.tar.zst\` β€” the same Qt build as a portable tarball (no FUSE; run \`./AppRun\`).
- \`*-sdl-*.tar.zst\` β€” SDL3 build for bare-kmsdrm handhelds (VK_KHR_display direct-display). Extract next to a compatible base system; run \`./yaps2-sdl\`.
- \`*-libretro-*.tar.zst\` β€” **EXPERIMENTAL** libretro core (\`yaps2_libretro.so\`) for RetroArch and other libretro frontends. Vulkan context sharing; drop the \`.so\` in your frontend's cores dir. Absent on days the libretro build failed.
- \`*-macos-arm64-*.tar.zst\` β€” **EXPERIMENTAL** native Apple Silicon \`.app\` (ad-hoc signed, not notarized; right-click > Open). Unproven β€” may not run. Absent on days the macOS build failed."