Skip to content

Another step closer to automated releases... #292

Another step closer to automated releases...

Another step closer to automated releases... #292

Workflow file for this run

name: Build Artifacts
on:
push:
branches:
- main
tags:
- "v[0-9]+.[0-9]+.[0-9]"
pull_request:
branches:
- main
paths-ignore:
- "**.md"
- ".gitignore"
- "*.gitlab-ci.yml"
jobs:
windows:
name: Windows (x86_64)
uses: ./.github/workflows/build.yaml
with:
archive-name: melondsds_libretro-win32-x86_64
runs-on: windows-latest
target: win32
info-dir: info
lib-ext: dll
shell: msys2 {0}
cmake-args: -DENABLE_SCCACHE=ON -DSCCACHE="C:/Users/runneradmin/.cargo/bin/sccache.exe"
macos:
name: macOS (Universal)
uses: ./.github/workflows/build.yaml
with:
archive-name: melondsds_libretro-macos-universal
runs-on: macos-latest
target: macos-universal
lib-ext: dylib
cmake-args: -DCMAKE_OSX_ARCHITECTURES:STRING="arm64;x86_64" -DENABLE_OGLRENDERER=OFF
# Disabled OpenGL on macOS due to https://github.com/JesseTG/melonds-ds/issues/12
linux-x86_64:
name: Linux (x86_64)
uses: ./.github/workflows/build.yaml
with:
archive-name: melondsds_libretro-linux-x86_64
target: linux-x86_64
runs-on: ubuntu-latest
lib-ext: so
test-suite: true
linux-aarch64:
name: Linux (aarch64)
uses: ./.github/workflows/build.yaml
with:
archive-name: melondsds_libretro-linux-aarch64
target: linux-aarch64
runs-on: ubuntu-latest
lib-ext: so
cmake-args: -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DPKG_CONFIG_EXECUTABLE=/usr/bin/aarch64-linux-gnu-pkg-config
android:
name: Android
uses: ./.github/workflows/build.yaml
with:
lib-ext: so
target: android
archive-name: melondsds_libretro-android
cmake-args: -DENABLE_OGLRENDERER=OFF -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=24 -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
runs-on: ubuntu-latest
# Disabled OpenGL on Android due to https://github.com/JesseTG/melonds-ds/issues/23
ios:
name: iOS
uses: ./.github/workflows/build.yaml
with:
runs-on: macos-latest
target: ios
archive-name: melondsds_libretro-ios
info-dir: info
lib-ext: dylib
cmake-args: --toolchain ./cmake/toolchain/ios.toolchain.cmake -DPLATFORM=OS64 -DDEPLOYMENT_TARGET=14
# Disabled OpenGL on iOS due to https://github.com/JesseTG/melonds-ds/issues/23
tvos:
name: tvOS
uses: ./.github/workflows/build.yaml
with:
runs-on: macos-latest
target: tvos
archive-name: melondsds_libretro-tvos
info-dir: info
lib-ext: dylib
cmake-args: --toolchain ./cmake/toolchain/ios.toolchain.cmake -DPLATFORM=TVOS -DDEPLOYMENT_TARGET=14
# Disabled OpenGL on tvOS due to https://github.com/JesseTG/melonds-ds/issues/23
test-linux-x86_64:
name: Test Suite (Linux x86_64)
uses: ./.github/workflows/test.yaml
needs: [ linux-x86_64 ]
with:
archive-name: melondsds_libretro-linux-x86_64
target: linux-x86_64
runs-on: ubuntu-latest
secrets:
TESTFILE_REPO_TOKEN: ${{ secrets.TESTFILE_REPO_TOKEN }}
TESTFILE_REPO: ${{ secrets.TESTFILE_REPO }}
DSI_NAND_ARCHIVE: ${{ secrets.DSI_NAND_ARCHIVE }}
DSI_NAND: ${{ secrets.DSI_NAND }}
ARM7_BIOS: ${{ secrets.ARM7_BIOS }}
ARM9_BIOS: ${{ secrets.ARM9_BIOS }}
ARM7_DSI_BIOS: ${{ secrets.ARM7_DSI_BIOS }}
ARM9_DSI_BIOS: ${{ secrets.ARM9_DSI_BIOS }}
NDS_FIRMWARE: ${{ secrets.NDS_FIRMWARE }}
DSI_FIRMWARE: ${{ secrets.DSI_FIRMWARE }}
NDS_ROM: ${{ secrets.NDS_ROM }}
create-release:
name: Create Release
needs: [ windows, macos, linux-x86_64, linux-aarch64, android, ios, tvos, test-linux-x86_64 ]
runs-on: ubuntu-latest
steps:
- name: Check Out Source
uses: actions/checkout@v3
with:
fetch-depth: 0 # To ensure we have all tags
- name: Get Latest Changelog Version
id: changelog
uses: release-flow/keep-a-changelog-action@v2
with:
command: query
version: latest
- name: Get the Newest Tag
id: newest-tag
run: |
echo "version=`git tag --list "v[0-9]*.[0-9]*.[0-9]*" --sort=-v:refname | head -n1`" >> "$GITHUB_OUTPUT"
- name: Create Tag
if: "${{ steps.changelog.outputs.version != steps.newest-tag.outputs.version }}"
# If the latest tag is not the same as the latest changelog version, that means it's time for a new release
uses: joutvhu/create-tag@v1
with:
tag_name: "v${{ steps.changelog.outputs.version }}"
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
- name: Download Artifacts
if: "${{ steps.changelog.outputs.version != steps.newest-tag.outputs.version }}"
uses: actions/download-artifact@v3
with:
path: artifact
- name: Zip Release Artifacts
if: "${{ steps.changelog.outputs.version != steps.newest-tag.outputs.version }}"
shell: bash
run: |
for file in artifact/melondsds_libretro-*-Release; do
zip -r "${file}.zip" "$file"
done
- run: ls -halR
- name: Upload .info File Artifact
if: "${{ steps.changelog.outputs.version != steps.newest-tag.outputs.version }}"
uses: actions/upload-artifact@v3
with:
name: melondsds_libretro.info
path: artifact/melondsds_libretro-linux-x86_64-Release/cores/melondsds_libretro.info
- name: Create Release
if: "${{ steps.changelog.outputs.version != steps.newest-tag.outputs.version }}"
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.RELEASE_TOKEN }}
files: |
artifact/melondsds_libretro-win32-x86_64-Release.zip
artifact/melondsds_libretro-macos-universal-Release.zip
artifact/melondsds_libretro-linux-x86_64-Release.zip
artifact/melondsds_libretro-linux-aarch64-Release.zip
artifact/melondsds_libretro-android-Release.zip
artifact/melondsds_libretro-ios-Release.zip
artifact/melondsds_libretro-tvos-Release.zip