mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
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>
123 lines
4.5 KiB
YAML
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."
|