Another step closer to automated releases... #292
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |