Skip to content

Nightly

Nightly #1684

Workflow file for this run

name: Nightly
# Timed-trigger
on:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '*/30 0 * * *'
env:
buildDir: '${{ github.workspace }}/build'
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
# Check if there was a commit in 24hours
build_check:
runs-on: ubuntu-latest
name: Check latest commit
outputs:
should_run: ${{ steps.should_run.outputs.should_run }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: print latest_commit
run: echo ${{ github.sha }}
- id: should_run
continue-on-error: true
name: check latest commit is less than a day
if: ${{ github.event_name == 'schedule' }}
run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "should_run=false" >> $GITHUB_OUTPUT
# Windows-builds
# MSVC
build_msvc:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-MSVC
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
# x86 builds
- name: diablo-x86
#packages: 'sdl2:x86-windows libsodium:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0600 -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-x86.zip'
- name: hellfire-x86
#packages: 'sdl2:x86-windows libsodium:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0600 -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-x86.zip'
- name: diablo-mini-x86
#packages: 'sdl2:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0501 -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNONET=ON -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'diablo-nightly-mini-x86.zip'
- name: hellfire-mini-x86
#packages: 'sdl2:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0501 -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNONET=ON -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'hellfire-nightly-mini-x86.zip'
- name: diablo-server-x86
#packages: 'sdl2:x86-windows libsodium:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0501 -DNOHOSTING=OFF -DHOSTONLY=ON -DINET_MODE=ON -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'diablo-nightly-server-x86.zip'
- name: hellfire-server-x86
#packages: 'sdl2:x86-windows libsodium:x86-windows'
cmakeargs: '-A Win32 -D_WIN32_WINNT=0x0501 -DNOHOSTING=OFF -DHOSTONLY=ON -DINET_MODE=ON -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'hellfire-nightly-server-x86.zip'
# x64 builds
- name: diablo
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-x64.zip'
- name: hellfire
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-x64.zip'
- name: diablo-hd2
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DASSET_MPL=2'
artifact: 'diablo-nightly-hd2-x64.zip'
- name: hellfire-hd2
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DASSET_MPL=2 -DHELLFIRE=ON'
artifact: 'hellfire-nightly-hd2-x64.zip'
- name: diablo-mini
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNONET=ON -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'diablo-nightly-mini-x64.zip'
- name: hellfire-mini
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNONET=ON -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'hellfire-nightly-mini-x64.zip'
- name: diablo-server
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DNOHOSTING=OFF -DHOSTONLY=ON -DINET_MODE=ON -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'diablo-nightly-server-x64.zip'
- name: hellfire-server
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DNOHOSTING=OFF -DHOSTONLY=ON -DINET_MODE=ON -DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON -DHAS_JOYSTICK=OFF -DHAS_DPAD=OFF -DHAS_GAMECTRL=OFF -DHAS_TOUCHPAD=OFF -DHAS_KBCTRL=OFF -DNOSOUND=ON -DSCREEN_WIDTH=640 -DSCREEN_HEIGHT=480 -DNOWIDESCREEN=ON'
artifact: 'hellfire-nightly-server-x64.zip'
- name: diablo-screen-reader
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DSCREEN_READER_INTEGRATION=ON'
artifact: 'diablo-nightly-scr-x64.zip'
- name: hellfire-screen-reader
#packages: 'sdl2:x64-windows libsodium:x64-windows'
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DSCREEN_READER_INTEGRATION=ON -DHELLFIRE=ON'
artifact: 'hellfire-nightly-scr-x64.zip'
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
# Download and build vcpkg, without installing any port. If content is cached already, it is a no-op.
- name: Create Build Environment
uses: lukka/[email protected]
with:
vcpkgGitCommitId: 'a62ce77d56ee07513b4b67de1ec2daeaebfae51a'
#setupOnly: true
# Now that vcpkg is installed, it is being used to run with the desired arguments.
#- name: Install Required Packages
# run: |
# vcpkg install ${{ matrix.packages }}
# # Start-Process -Wait -NoNewWindow -FilePath "$env:VCPKG_ROOT\vcpkg" -ArgumentList "install ${{ matrix.packages }}"
# # $VCPKG_ROOT/vcpkg install ${{ matrix.packages }}
# #shell: bash
- name: Configure CMake
shell: bash
working-directory: ${{ env.buildDir }}
run: cmake .. ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
- name: Build
working-directory: ${{ env.buildDir }}
shell: bash
# Execute the build (-j 2 : with two cores).
run: cmake --build . -j 2 --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# MingW 32bit
build_mingw:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-MingW
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
# x86 builds
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-mingw-x86.zip'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mingw-x86.zip'
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y cmake gcc-mingw-w64-i686 g++-mingw-w64-i686 pkg-config-mingw-w64-i686 dpkg-dev wget git sudo &&
sudo Packaging/windows/mingw-prep.sh
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}
run: cmake -S. -Bbuild ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.toolchain.cmake
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: cmake --build build -j $(nproc) --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: build/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# MingW 64bit
build_mingw_x64:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-MingW-x64
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
# x64 builds
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-mingw-x64.zip'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mingw-x64.zip'
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y cmake gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 pkg-config-mingw-w64-x86-64 dpkg-dev wget git sudo &&
sudo Packaging/windows/mingw-prep64.sh
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}
run: cmake -S. -Bbuild ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.toolchain.cmake
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: cmake --build build -j $(nproc) --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: build/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# MingW Win9x
build_w98:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-MingW-Win9x
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
# x86 builds
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF'
artifact: 'diablo-nightly-mingw-w9x.zip'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mingw-w9x.zip'
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y cmake gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools dpkg-dev wget git sudo &&
sudo Packaging/windows/mingw9x-prep.sh
- name: Configure CMake
shell: bash
working-directory: ${{ env.buildDir }}
run: cmake .. ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=../CMake/mingw9x.toolchain.cmake -DTARGET_PLATFORM=windows9x
- name: Build
working-directory: ${{ env.buildDir }}
shell: bash
run: cmake --build . -j $(nproc) --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# MingW WinXP
build_wXP:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-MingW-WinXP
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
# x86 builds
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF'
artifact: 'diablo-nightly-mingw-wx.zip'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mingw-wx.zip'
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y cmake gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools dpkg-dev wget git sudo &&
sudo Packaging/windows/mingw-prep.sh
- name: Configure CMake
shell: bash
working-directory: ${{ env.buildDir }}
run: cmake .. ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.toolchain.cmake -DTARGET_PLATFORM=windowsXP
- name: Build
working-directory: ${{ env.buildDir }}
shell: bash
run: cmake --build . -j $(nproc) --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# Linux-builds
# 64bit
build_linux64:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Linux-x64
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-x86_64-linux-gnu.tar.xz'
appimage: 'diablo-nightly-x86_64-linux-gnu.appimage'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-x86_64-linux-gnu.tar.xz'
appimage: 'hellfire-nightly-x86_64-linux-gnu.appimage'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: Packaging/nix/debian-host-prep.sh
#- name: Cache CMake build folder
# uses: actions/cache@v3
# with:
# path: build
# key: ${{ github.workflow }}-v1-${{ github.sha }}
# restore-keys: ${{ github.workflow }}-v1-
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: |
cmake -S. -Bbuild ${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=/usr -DCPACK=ON && \
cmake --build build -j $(getconf _NPROCESSORS_ONLN) --target package --config ${{env.BUILD_TYPE}}
- name: Package
run: Packaging/nix/LinuxReleasePackaging.sh && mv devilutionx.tar.xz devilutionx-x86_64-linux-gnu.tar.xz
- name: Package AppImage
run: Packaging/nix/AppImage.sh && mv devilutionx.appimage devilutionx-x86_64-linux-gnu.appimage
- name: Upload
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v5
with:
path: devilutionx-x86_64-linux-gnu.tar.xz
name: ${{ matrix.artifact }}
- name: Upload AppImage
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v5
with:
path: devilutionx-x86_64-linux-gnu.appimage
name: ${{ matrix.appimage }}
# aarch64
build_aarch:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Aarch-x64
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-aarch64.tar.xz'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_LIBSODIUM=OFF -DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-aarch64.tar.xz'
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: |
Packaging/nix/debian-cross-aarch64-prep.sh
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: |
cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=../CMake/aarch64-linux-gnu.toolchain.cmake \
${{ matrix.cmakeargs }} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=/usr -DCPACK=ON && \
cmake --build build -j $(getconf _NPROCESSORS_ONLN) --target package --config ${{env.BUILD_TYPE}}
- name: Package
run: Packaging/nix/LinuxReleasePackaging.sh && mv devilutionx.tar.xz devilutionx-aarch64.tar.xz
# AppImage cross-packaging is not implemented yet.
# - name: Package AppImage
# run: Packaging/nix/AppImage.sh && mv devilutionx.appimage devilutionx-aarch64.appimage
- name: Upload
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v5
with:
path: devilutionx-aarch64.tar.xz
name: ${{ matrix.artifact }}
# Mac-builds
build_mac:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Mac
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-mac.dmg'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mac.dmg'
runs-on: macos-15-intel
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: brew bundle install
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}
run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMACOSX_STANDALONE_APP_BUNDLE=ON -D CMAKE_OSX_DEPLOYMENT_TARGET=10.12 ${{ matrix.cmakeargs }}
- name: Build
working-directory: ${{github.workspace}}
shell: bash
# Execute the build (-j 2 : with two cores).
run: cmake --build build -j $(sysctl -n hw.physicalcpu) --target package --config ${{env.BUILD_TYPE}}
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.dmg
name: ${{ matrix.artifact }}
build_mac_arm:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Mac-Arm
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DDEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-mac-arm.dmg'
- name: hellfire
cmakeargs: '-DDEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-mac-arm.dmg'
runs-on: macos-14
steps:
- uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: brew bundle install
#- name: Cache CMake build folder
# uses: actions/cache@v4
# with:
# path: build
# key: ${{ github.workflow }}-v1-${{ github.sha }}
# restore-keys: ${{ github.workflow }}-v1-
#- name: Clean previous DMG
# working-directory: ${{github.workspace}}
# run: rm -f build/*.dmg
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: |
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMACOSX_STANDALONE_APP_BUNDLE=ON ${{ matrix.cmakeargs }} && \
cmake --build build -j $(sysctl -n hw.physicalcpu) --target package --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.dmg
name: ${{ matrix.artifact }}
# iOS-builds
build_ios:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-IOS
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-ios.ipa'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-ios.ipa'
runs-on: macos-15-intel
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{github.workspace}}
run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=../CMake/ios.toolchain.cmake -DENABLE_BITCODE=0 -DPLATFORM=OS64 -D CMAKE_OSX_DEPLOYMENT_TARGET=9.0 ${{ matrix.cmakeargs }}
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: >
cmake --build build -j $(sysctl -n hw.physicalcpu) --config ${{env.BUILD_TYPE}} &&
cd build &&
rm -rf Payload devilutionx.ipa &&
mkdir Payload &&
mv devilutionx.app Payload &&
zip -r devilutionx.ipa Payload
# Upload the created artifact
- name: Upload
uses: actions/upload-artifact@v5
with:
path: ${{ env.buildDir }}/devilutionx.ipa
name: ${{ matrix.artifact }}
compression-level: 0
# Android-builds
build_android:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Android
strategy:
fail-fast: false
matrix:
include:
- name: diablo
artifact: 'diablo-nightly-android.apk'
- name: hellfire
cmakearg0: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-android.apk'
runs-on: ubuntu-24.04
environment: android
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: |
sudo apt-get update
sudo apt-get install -y gettext
- name: set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
# CMake version 3.21.3 causes gradle to throw a NullPointerException during the build
# Removing it will cause gradle to fall back on 3.18.1 installed by the Android SDK
#- name: Remove system CMake
# run: rm /usr/local/bin/cmake
#- name: Accept SDK licenses
# run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
- name: Install CMake
run: |
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "cmake;3.31.0"
#- name: Cache CMake build folder
# uses: actions/cache@v3
# with:
# path: android-project/app/.cxx
# key: ${{ github.workflow }}-v4-${{ github.sha }}
# restore-keys: ${{ github.workflow }}-v4-
- name: Build
working-directory: ${{github.workspace}}
#env:
# GRADLE_ASSEMBLE: ${{env.BUILD_TYPE == 'Release' && 'assembleRelease' || 'assembleDebug'}}
shell: bash
run: cd android-project && ./gradlew assembleRelease -Pcmakearg0="${{ matrix.cmakearg0 }}" -Pcmakearg1="${{ matrix.cmakearg1 }}" -Pcmakearg2="${{ matrix.cmakearg2 }}"
- uses: ilharp/sign-android-release@v2 # Or use @nightly
name: Sign app APK
id: sign_app
with:
releaseDir: android-project/app/build/outputs/apk/release
signingKey: ${{ secrets.ANDROID_SIGNING_KEY }}
keyAlias: ${{ secrets.ANDROID_KEY_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
#buildToolsVersion: 36.0.0
- name: Rename
working-directory: ${{github.workspace}}
shell: bash
run: mv ${{steps.sign_app.outputs.signedFile}} android-project/app/build/outputs/apk/release/devilutionx.apk
- name: Upload
uses: actions/upload-artifact@v5
with:
#name: devilutionx-debug.apk
#path: android-project/app/build/outputs/apk/debug/app-debug.apk
name: ${{ matrix.artifact }}
#path: android-project/app/build/outputs/apk/release/app-release-signed.apk
path: android-project/app/build/outputs/apk/release/devilutionx.apk
# rg350-builds
build_rg350:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-RG350
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DZEROTIER=OFF'
artifact: 'diablo-nightly-rg350.opk'
- name: hellfire
cmakeargs: '-DZEROTIER=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-rg350.opk'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
# curl -L http://od.abstraction.se/opendingux/toolchain/opendingux-gcw0-toolchain.2021-10-22.tar.xz -o gcw0-toolchain.tar.xz &&
# curl -L http://od.abstraction.se/opendingux/toolchain/opendingux-gcw0-toolchain.2021-03-10.tar.xz -o gcw0-toolchain.tar.xz &&
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y curl cmake git squashfs-tools &&
curl -L https://github.com/OpenDingux/buildroot/releases/download/od-2022.09.22/opendingux-gcw0-toolchain.2022-09-22.tar.xz -o gcw0-toolchain.tar.xz &&
sudo mkdir -p /opt/gcw0-toolchain && sudo chown -R "${USER}:" /opt/gcw0-toolchain &&
tar -C /opt -xf gcw0-toolchain.tar.xz &&
cd /opt/gcw0-toolchain && ./relocate-sdk.sh
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: Packaging/OpenDingux/build.sh rg350 "${{ matrix.cmakeargs }}"
env:
TOOLCHAIN: /opt/gcw0-toolchain
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build-rg350/devilutionx-rg350.opk
# lepus-builds
build_lepus:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Lepus
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-lepus.opk'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-lepus.opk'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
# curl -L http://od.abstraction.se/opendingux/toolchain/opendingux-lepus-toolchain.2021-10-22.tar.xz -o lepus-toolchain.tar.xz &&
# curl -L http://od.abstraction.se/opendingux/toolchain/opendingux-lepus-toolchain.2021-03-11.tar.xz -o lepus-toolchain.tar.xz &&
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y curl cmake git squashfs-tools &&
curl -L https://github.com/OpenDingux/buildroot/releases/download/od-2022.09.22/opendingux-lepus-toolchain.2022-09-22.tar.xz -o lepus-toolchain.tar.xz &&
sudo mkdir -p /opt/lepus-toolchain && sudo chown -R "${USER}:" /opt/lepus-toolchain &&
tar -C /opt -xf lepus-toolchain.tar.xz &&
cd /opt/lepus-toolchain && ./relocate-sdk.sh
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: Packaging/OpenDingux/build.sh lepus "${{ matrix.cmakeargs }}"
env:
TOOLCHAIN: /opt/lepus-toolchain
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build-lepus/devilutionx-lepus.opk
# retrofw-builds
build_retrofw:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-RetroFW
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-DZEROTIER=OFF'
artifact: 'diablo-nightly-retrofw.opk'
- name: hellfire
cmakeargs: '-DZEROTIER=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-retrofw.opk'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
#sudo apt-get install -y curl git smpq &&
#curl -L https://github.com/retrofw/buildroot/releases/download/2018.02.11/mipsel-linux-uclibc_x64.tar.gz -o retrofw-toolchain.tar.xz &&
#sudo mkdir -p /opt/mipsel-linux-uclibc && sudo chown -R "${USER}:" /opt/mipsel-linux-uclibc &&
#tar -C /opt -xvf retrofw-toolchain.tar.xz
- name: Create Build Environment
run: >
sudo apt-get update &&
sudo apt-get install -y curl cmake git squashfs-tools gettext &&
curl -L https://github.com/retrofw/retrofw.github.io/releases/download/v2.3/mipsel-RetroFW-linux-uclibc_sdk-buildroot.tar.gz -o retrofw-toolchain.tar.gz &&
sudo mkdir -p /opt/retrofw-toolchain && sudo chown -R "${USER}:" /opt/retrofw-toolchain &&
tar -C /opt/retrofw-toolchain --strip-components=1 -xf retrofw-toolchain.tar.gz &&
cd /opt/retrofw-toolchain && ./relocate-sdk.sh
#TOOLCHAIN: /opt/mipsel-linux-uclibc
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: Packaging/OpenDingux/build.sh retrofw "${{ matrix.cmakeargs }}"
env:
TOOLCHAIN: /opt/retrofw-toolchain
- name: Upload
uses: actions/upload-artifact@v5
with:
#name: devilutionx-retrofw.opk.zip
name: ${{ matrix.artifact }}
path: build-retrofw/devilutionx-retrofw.opk
# ps4-builds
build_ps4:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-PS4
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-ps4.pkg'
- name: hellfire
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-ps4.pkg'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: |
sudo apt-get update && \
sudo apt-get install -y pacman-package-manager wget cmake git gettext && \
sudo tee -a /etc/pacman.conf > /dev/null <<TEXT
[pacbrew]
SigLevel = Optional TrustAll
Server = https://pacman.mydedibox.fr/pacbrew/packages/
TEXT
- name: Setup pacman packages
run: |
sudo pacman --noconfirm -Sy && \
sudo pacman --noconfirm -S ps4-openorbis ps4-openorbis-portlibs && \
echo "#include <endian.h>" | sudo tee /opt/pacbrew/ps4/openorbis/include/sys/endian.h
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: Packaging/ps4/build.sh "${{ matrix.cmakeargs }}"
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build-ps4/devilutionx-ps4.pkg
# ps5-builds
build_ps5:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-PS5
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-ps5.zip'
- name: hellfire
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-ps5.zip'
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: |
sudo apt-get update
sudo apt-get install cmake pkg-config clang-15 lld-15
sudo apt-get install build-essential autoconf libtool yasm nasm
sudo apt-get install smpq gperf pkgconf libarchive-tools autopoint po4a git curl doxygen wget
wget https://github.com/ps5-payload-dev/pacbrew-repo/releases/download/v0.27/ps5-payload-dev.tar.gz
sudo tar -xf ps5-payload-dev.tar.gz -C /
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: Packaging/ps5/build.sh "${{ matrix.cmakeargs }}"
- name: Upload
uses: actions/upload-artifact@v5
with:
path: build-ps5/devilutionx.zip
name: ${{ matrix.artifact }}
compression-level: 0
# vita-builds
build_vita:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-VITA
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-vita.vpk'
- name: hellfire
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-vita.vpk'
runs-on: ubuntu-latest
container: vitasdk/vitasdk:latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: apk add cmake ninja
- name: Configure CMake
run: |
cmake -S. -Bbuild -GNinja \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.cmakeargs }} \
-DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake
- name: Build
run: cmake --build build -j $(sysctl -n hw.physicalcpu) --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build/devilutionx.vpk
# n3ds-builds
build_n3ds:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Nintendo 3DS
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-3ds.3dsx'
cia: 'diablo-nightly-3ds.cia'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-3ds.3dsx'
cia: 'hellfire-nightly-3ds.cia'
runs-on: ubuntu-latest
container: devkitpro/devkitarm:latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
#- name: Install dependencies
# run: |
# tee /etc/apt/sources.list.d/bullseye-backports.list <<LIST
# deb http://deb.debian.org/debian bullseye-backports main
# LIST
# apt-get update
# apt-get install -y -t bullseye-backports cmake
# apt-get install -y --no-install-recommends --no-install-suggests \
# ffmpeg \
# gettext
- name: Create Build Environment
run: |
sudo apt-get install -y cmake wget
wget https://github.com/diasurgical/bannertool/releases/download/1.2.0/bannertool.zip
unzip -j "bannertool.zip" "linux-x86_64/bannertool" -d "/opt/devkitpro/tools/bin"
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18/makerom-v0.18-ubuntu_x86_64.zip
unzip "makerom-v0.18-ubuntu_x86_64.zip" "makerom" -d "/opt/devkitpro/tools/bin"
chmod a+x /opt/devkitpro/tools/bin/makerom
- name: Configure CMake
run: |
cmake -S. -Bbuild -GNinja \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.cmakeargs }} -DNINTENDO_3DS=ON \
-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake
- name: Build DevilutionX
run: cmake --build build -j$(nproc) --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build/devilutionx.3dsx
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.cia }}
path: build/devilutionx.cia
# switch-builds
build_switch:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Nintendo Switch
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF'
artifact: 'diablo-nightly-switch.nro'
- name: hellfire
cmakeargs: '-D DEVILUTIONX_SYSTEM_SDL2=OFF -DHELLFIRE=ON'
artifact: 'hellfire-nightly-switch.nro'
runs-on: ubuntu-latest
container: devkitpro/devkita64:latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
#- name: Install dependencies
# shell: bash
# run: |
# tee /etc/apt/sources.list.d/bullseye-backports.list <<LIST
# deb http://deb.debian.org/debian bullseye-backports main
# LIST
# apt-get update
# apt-get install -y -t bullseye-backports cmake
# apt-get install -y --no-install-recommends --no-install-suggests \
# gettext
- name: Create Build Environment
run: |
sudo apt-get install -y cmake
- name: Configure CMake
run: |
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.cmakeargs }} \
-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake
- name: Build DevilutionX
run: cmake --build build -j$(nproc) --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: ./build/devilutionx.nro
# xbox-builds
build_xbox:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-XBOX
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-xbox.zip'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-xbox.zip'
runs-on: ubuntu-24.04
env:
NXDK_DIR: /opt/nxdk
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
#fetch-depth: 0
- name: Create Build Environment
run: sudo apt-get update && sudo apt-get install -y clang llvm lld bison flex cmake git
- name: Clone NXDK Repo
shell: bash
run: git clone --recursive --depth 1 https://github.com/XboxDev/nxdk.git "$NXDK_DIR"
#- name: Clone NXDK Repo
# uses: actions/checkout@v5
# with:
# repository: XboxDev/nxdk
# path: "$NXDK_DIR"
- name: Build NXDK
shell: bash
run: PATH="${NXDK_DIR}/bin:$PATH" make -j $(nproc) -C "$NXDK_DIR" NXDK_ONLY=1 LTO=1 all cxbe
- name: Configure CMake
working-directory: ${{github.workspace}}
run: cmake -S. -Bbuild-xbox ${{ matrix.cmakeargs }} -DNXDK=ON -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=/opt/nxdk/share/toolchain-nxdk.cmake
- name: Build
working-directory: ${{github.workspace}}
shell: bash
run: cmake --build build-xbox -j $(nproc) --target package --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: build-xbox/devilutionx.zip
build_xboxone:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-XBOXONE
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-xboxone.zip'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-xboxone.zip'
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
#fetch-depth: 0
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Configure git
shell: cmd
run: |
git config --global core.filemode false
git config --global core.autocrlf false
- name: Build
shell: cmd
working-directory: ${{github.workspace}}
run: |
Packaging\xbox-one\build.bat ${{ matrix.cmakeargs }}
- name: Upload
if: ${{ !env.ACT }}
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: ${{ env.buildDir }}/devilutionx.zip
# amiga-builds
build_amiga:
needs: build_check
if: ${{ needs.build_check.outputs.should_run != 'false' }}
name: Nightly-Amiga M68K
strategy:
fail-fast: false
matrix:
include:
- name: diablo
cmakeargs: ''
artifact: 'diablo-nightly-amiga'
- name: hellfire
cmakeargs: '-DHELLFIRE=ON'
artifact: 'hellfire-nightly-amiga'
runs-on: ubuntu-24.04
container: amigadev/crosstools:m68k-amigaos-gcc10
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-tags: true
# fetch-depth: 0
- name: Create Build Environment
run: |
sudo apt-get update
sudo apt-get install -y cmake wget
Packaging/amiga/prep.sh
- name: Configure CMake
run: |
cmake -S. -Bbuild -GNinja \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.cmakeargs }} \
-DM68K_COMMON="-s -ffast-math -O3" \
-DM68K_CPU=68040 \
-DM68K_FPU=hard
- name: Build DevilutionX
run: cmake --build build --config ${{env.BUILD_TYPE}}
- name: Upload
uses: actions/upload-artifact@v5
with:
name: ${{ matrix.artifact }}
path: ./build/devilutionx
# Releases
release:
needs: [build_check, build_msvc, build_mingw, build_mingw_x64, build_w98, build_linux64, build_aarch, build_mac, build_ios, build_android, build_rg350, build_lepus, build_retrofw, build_ps4, build_ps5, build_vita, build_n3ds, build_switch, build_xbox, build_xboxone, build_amiga]
if: ${{ needs.build_check.outputs.should_run != 'false' }}
#runs-on: windows-latest
runs-on: ubuntu-latest
steps:
# Windows-builds (x86)
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-x86.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-x86.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mini-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-mini-x86.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mini-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-mini-x86.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-server-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-server-x86.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-server-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-server-x86.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mingw-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-mingw-x86.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mingw-x86.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-mingw-x86.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mingw-w9x.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-mingw-w9x.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mingw-w9x.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-mingw-w9x.zip
# Windows-builds (x64)
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-x64.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-hd2-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-hd2-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-hd2-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-hd2-x64.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mingw-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-mingw-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mingw-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-mingw-x64.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mini-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-mini-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mini-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-mini-x64.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-server-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-server-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-server-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-server-x64.zip
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-scr-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-scr-x64.zip
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-scr-x64.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-scr-x64.zip
# Linux-builds (x64)
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-x86_64-linux-gnu.tar.xz
- run: mv ${{github.workspace}}/devilutionx-x86_64-linux-gnu.tar.xz ${{github.workspace}}/diablo-nightly-x86_64-linux-gnu.tar.xz
- name: Download a diablo artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-x86_64-linux-gnu.appimage
- run: mv ${{github.workspace}}/devilutionx-x86_64-linux-gnu.appimage ${{github.workspace}}/diablo-nightly-x86_64-linux-gnu.appimage
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-x86_64-linux-gnu.tar.xz
- run: mv ${{github.workspace}}/devilutionx-x86_64-linux-gnu.tar.xz ${{github.workspace}}/hellfire-nightly-x86_64-linux-gnu.tar.xz
- name: Download a hellfire artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-x86_64-linux-gnu.appimage
- run: mv ${{github.workspace}}/devilutionx-x86_64-linux-gnu.appimage ${{github.workspace}}/hellfire-nightly-x86_64-linux-gnu.appimage
# Aarch64-builds (x64)
- name: Download a diablo aarch64-artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-aarch64.tar.xz
- run: mv ${{github.workspace}}/devilutionx-aarch64.tar.xz ${{github.workspace}}/diablo-nightly-aarch64.tar.xz
- name: Download a hellfire aarch64-artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-aarch64.tar.xz
- run: mv ${{github.workspace}}/devilutionx-aarch64.tar.xz ${{github.workspace}}/hellfire-nightly-aarch64.tar.xz
# Mac-builds
- name: Download a diablo mac-artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-mac.dmg
- run: mv ${{github.workspace}}/devilutionx.dmg ${{github.workspace}}/diablo-nightly-mac.dmg
- name: Download a hellfire mac-artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-mac.dmg
- run: mv ${{github.workspace}}/devilutionx.dmg ${{github.workspace}}/hellfire-nightly-mac.dmg
# iOS-builds
- name: Download a diablo iOS artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-ios.ipa
- run: mv ${{github.workspace}}/devilutionx.ipa ${{github.workspace}}/diablo-nightly-ios.ipa
- name: Download a hellfire iOS artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-ios.ipa
- run: mv ${{github.workspace}}/devilutionx.ipa ${{github.workspace}}/hellfire-nightly-ios.ipa
# Android-builds
- name: Download a diablo android artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-android.apk
- run: mv ${{github.workspace}}/devilutionx.apk ${{github.workspace}}/diablo-nightly-android.apk
- name: Download a hellfire android artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-android.apk
- run: mv ${{github.workspace}}/devilutionx.apk ${{github.workspace}}/hellfire-nightly-android.apk
# rg350-builds
- name: Download a diablo rg350 artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-rg350.opk
- run: mv ${{github.workspace}}/devilutionx-rg350.opk ${{github.workspace}}/diablo-nightly-rg350.opk
- name: Download a hellfire rg350 artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-rg350.opk
- run: mv ${{github.workspace}}/devilutionx-rg350.opk ${{github.workspace}}/hellfire-nightly-rg350.opk
# lepus-builds
- name: Download a diablo lepus artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-lepus.opk
- run: mv ${{github.workspace}}/devilutionx-lepus.opk ${{github.workspace}}/diablo-nightly-lepus.opk
- name: Download a hellfire lepus artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-lepus.opk
- run: mv ${{github.workspace}}/devilutionx-lepus.opk ${{github.workspace}}/hellfire-nightly-lepus.opk
# retrofw-builds
- name: Download a diablo retrofw artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-retrofw.opk
- run: mv ${{github.workspace}}/devilutionx-retrofw.opk ${{github.workspace}}/diablo-nightly-retrofw.opk
- name: Download a hellfire retrofw artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-retrofw.opk
- run: mv ${{github.workspace}}/devilutionx-retrofw.opk ${{github.workspace}}/hellfire-nightly-retrofw.opk
# ps4-builds
- name: Download a diablo ps4 artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-ps4.pkg
- run: mv ${{github.workspace}}/devilutionx-ps4.pkg ${{github.workspace}}/diablo-nightly-ps4.pkg
- name: Download a hellfire ps4 artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-ps4.pkg
- run: mv ${{github.workspace}}/devilutionx-ps4.pkg ${{github.workspace}}/hellfire-nightly-ps4.pkg
# ps5-builds
- name: Download a diablo ps5 artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-ps5.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-ps5.zip
- name: Download a hellfire ps5 artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-ps5.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-ps5.zip
# vita-builds
- name: Download a diablo vita artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-vita.vpk
- run: mv ${{github.workspace}}/devilutionx.vpk ${{github.workspace}}/diablo-nightly-vita.vpk
- name: Download a hellfire vita artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-vita.vpk
- run: mv ${{github.workspace}}/devilutionx.vpk ${{github.workspace}}/hellfire-nightly-vita.vpk
# n3ds-builds
- name: Download a diablo n3ds artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-3ds.3dsx
- run: mv ${{github.workspace}}/devilutionx.3dsx ${{github.workspace}}/diablo-nightly-3ds.3dsx
- name: Download a diablo n3ds artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-3ds.cia
- run: mv ${{github.workspace}}/devilutionx.cia ${{github.workspace}}/diablo-nightly-3ds.cia
- name: Download a hellfire n3ds artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-3ds.3dsx
- run: mv ${{github.workspace}}/devilutionx.3dsx ${{github.workspace}}/hellfire-nightly-3ds.3dsx
- name: Download a hellfire n3ds artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-3ds.cia
- run: mv ${{github.workspace}}/devilutionx.cia ${{github.workspace}}/hellfire-nightly-3ds.cia
# switch-builds
- name: Download a diablo switch artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-switch.nro
- run: mv ${{github.workspace}}/devilutionx.nro ${{github.workspace}}/diablo-nightly-switch.nro
- name: Download a hellfire switch artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-switch.nro
- run: mv ${{github.workspace}}/devilutionx.nro ${{github.workspace}}/hellfire-nightly-switch.nro
# xbox-builds
- name: Download a diablo xbox artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-xbox.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-xbox.zip
- name: Download a hellfire xbox artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-xbox.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-xbox.zip
# xboxone-builds
- name: Download a diablo xboxone artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-xboxone.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/diablo-nightly-xboxone.zip
- name: Download a hellfire xboxone artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-xboxone.zip
- run: mv ${{github.workspace}}/devilutionx.zip ${{github.workspace}}/hellfire-nightly-xboxone.zip
# amiga-builds
- name: Download a diablo amiga artifact
uses: actions/download-artifact@v6
with:
name: diablo-nightly-amiga
- run: mv ${{github.workspace}}/devilutionx ${{github.workspace}}/diablo-nightly-amiga
- name: Download a hellfire amiga artifact
uses: actions/download-artifact@v6
with:
name: hellfire-nightly-amiga
- run: mv ${{github.workspace}}/devilutionx ${{github.workspace}}/hellfire-nightly-amiga
# release notes
- name: Create release notes
run: |
echo 'Latest nightly builds' > RELEASE_NOTE.md
echo '' >> RELEASE_NOTE.md
echo 'For the list of changes see [changelog](docs/CHANGELOG.md#DevilX).' >> RELEASE_NOTE.md
echo '' >> RELEASE_NOTE.md
echo '### **Packages**' >> RELEASE_NOTE.md
echo '<table><thead><tr>' >> RELEASE_NOTE.md
echo '<th><em>Diablo</em></th>' >> RELEASE_NOTE.md
echo '<th>Environment</th>' >> RELEASE_NOTE.md
echo '<th><em>Hellfire</em></th>' >> RELEASE_NOTE.md
echo '</tr></thead><tbody><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-android.apk">android.apk</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Android</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-android.apk">android.apk</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-lepus.opk">lepus.opk</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Lepus</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-lepus.opk">lepus.opk</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-retrofw.opk">retrofw.opk</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>RetroFW</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-retrofw.opk">retrofw.opk</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-rg350.opk">rg350.opk</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>RG350</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-rg350.opk">rg350.opk</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-ps4.pkg">ps4.pkg</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>PS4</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-ps4.pkg">ps4.pkg</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-ps5.zip">ps5.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>PS5</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-ps5.zip">ps5.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-aarch64.tar.xz">aarch64.tar.xz</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>aarch64</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-aarch64.tar.xz">aarch64.tar.xz</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mac.dmg">mac.dmg</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Mac</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mac.dmg">mac.dmg</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-ios.ipa">ios.ipa</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>iOS</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-ios.ipa">ios.ipa</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-vita.vpk">vita.vpk</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Vita</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-vita.vpk">vita.vpk</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-3ds.3dsx">3ds.3dsx</a></td>' >> RELEASE_NOTE.md
echo '<td align=center rowspan=2><code>Nintendo 3DS</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-3ds.3dsx">3ds.3dsx</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-3ds.cia">3ds.cia</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-3ds.cia">3ds.cia</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-switch.nro">switch.nro</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Nintendo Switch</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-switch.nro">switch.nro</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-xbox.zip">xbox.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>XBOX</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-xbox.zip">xbox.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-xboxone.zip">xboxone.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>XBOXONE/SERIES</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-xboxone.zip">xboxone.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-amiga">amiga</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Amiga</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-amiga">amiga</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-x64.zip">x64.zip</a> <sup><a href="#fn-1" id="user-content-fnref-1" data-footnote-ref="">1</a></sup></td>' >> RELEASE_NOTE.md
echo '<td rowspan=5 align=center><code>Windows x64</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-x64.zip">x64.zip</a> <sup><a href="#fn-1" id="user-content-fnref-1" data-footnote-ref="">1</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mingw-x64.zip">mingw-x64.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mingw-x64.zip">mingw-x64.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-hd2-x64.zip">hd2-x64.zip</a> <sup><a href="#fn-2" id="user-content-fnref-2" data-footnote-ref="">2</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-hd2-x64.zip">hd2-x64.zip</a> <sup><a href="#fn-2" id="user-content-fnref-2" data-footnote-ref="">2</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mini-x64.zip">mini-x64.zip</a> <sup><a href="#fn-3" id="user-content-fnref-3" data-footnote-ref="">3</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mini-x64.zip">mini-x64.zip</a> <sup><a href="#fn-3" id="user-content-fnref-3" data-footnote-ref="">3</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-server-x64.zip">srv-x64.zip</a> <sup><a href="#fn-4" id="user-content-fnref-4" data-footnote-ref="">4</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-server-x64.zip">srv-x64.zip</a> <sup><a href="#fn-4" id="user-content-fnref-4" data-footnote-ref="">4</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-scr-x64.zip">scr-x64.zip</a> <sup><a href="#fn-5" id="user-content-fnref-5" data-footnote-ref="">5</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><img align=center src="https://github.githubassets.com/assets/accessibility-317cd9a9f485.png" width=20 height=20/></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-scr-x64.zip">scr-x64.zip</a> <sup><a href="#fn-5" id="user-content-fnref-5" data-footnote-ref="">5</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-x86.zip">x86.zip</a> <sup><a href="#fn-1" id="user-content-fnref-1" data-footnote-ref="">1</a></sup></td>' >> RELEASE_NOTE.md
echo '<td rowspan=4 align=center><code>Windows x86</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-x86.zip">x86.zip</a> <sup><a href="#fn-1" id="user-content-fnref-1" data-footnote-ref="">1</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mingw-x86.zip">mingw-x86.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mingw-x86.zip">mingw-x86.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mini-x86.zip">mini-x86.zip</a> <sup><a href="#fn-3" id="user-content-fnref-3" data-footnote-ref="">3</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mini-x86.zip">mini-x86.zip</a> <sup><a href="#fn-3" id="user-content-fnref-3" data-footnote-ref="">3</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-server-x86.zip">srv-x86.zip</a> <sup><a href="#fn-4" id="user-content-fnref-4" data-footnote-ref="">4</a></sup></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-server-x86.zip">srv-x86.zip</a> <sup><a href="#fn-4" id="user-content-fnref-4" data-footnote-ref="">4</a></sup></td>' >> RELEASE_NOTE.md
echo '</tr><tr>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/diablo-nightly-mingw-w9x.zip">mingw-w9x.zip</a></td>' >> RELEASE_NOTE.md
echo '<td align=center><code>Windows 98</code></td>' >> RELEASE_NOTE.md
echo '<td align=center><a href="../../releases/download/devilx-nightly/hellfire-nightly-mingw-w9x.zip">mingw-w9x.zip</a></td>' >> RELEASE_NOTE.md
echo '</tr></tbody></table>' >> RELEASE_NOTE.md
echo '<section data-footnotes=""><ol><li id="user-content-fn-1">' >> RELEASE_NOTE.md
echo '<p>requires <a href="https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist" rel="nofollow">VC++ Runtime</a></p>' >> RELEASE_NOTE.md
echo '</li><li id="user-content-fn-2">' >> RELEASE_NOTE.md
echo '<p>hd build - uses upscaled (2x) assets (can be prepared using <a href="https://github.com/pionere/d1-graphics-tool/releases">d1-graphics-tool</a>)</p>' >> RELEASE_NOTE.md
echo '</li><li id="user-content-fn-3">' >> RELEASE_NOTE.md
echo '<p>minimal build - no internet, controller or sound support</p>' >> RELEASE_NOTE.md
echo '</li><li id="user-content-fn-4">' >> RELEASE_NOTE.md
echo '<p>server build - no controller or sound support</p>' >> RELEASE_NOTE.md
echo '</li><li id="user-content-fn-5">' >> RELEASE_NOTE.md
echo '<p>build with screen-reader support</p>' >> RELEASE_NOTE.md
echo '</li></ol></section>' >> RELEASE_NOTE.md
#- name: Show content of workspace
# run: find $RUNNER_WORKSPACE
# shell: bash
# uses: pionere/delete-tag-and-release@v1
- name: Delete tag and release
uses: dev-drprasad/[email protected]
with:
delete_release: true
tag_name: devilx-nightly
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Sleep a bit to let GitHub recover from the shock of tag-delete
# run: Start-Sleep -s 60
# shell: powershell
- name: Sleep for 60 seconds
run: sleep 60s
shell: bash
- name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: devilx-nightly
body_path: ${{ github.workspace }}/RELEASE_NOTE.md
draft: false
prerelease: true
token: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: true
files: |
${{github.workspace}}/diablo-nightly-android.apk
${{github.workspace}}/diablo-nightly-lepus.opk
${{github.workspace}}/diablo-nightly-retrofw.opk
${{github.workspace}}/diablo-nightly-rg350.opk
${{github.workspace}}/diablo-nightly-ps4.pkg
${{github.workspace}}/diablo-nightly-ps5.zip
${{github.workspace}}/diablo-nightly-aarch64.tar.xz
${{github.workspace}}/diablo-nightly-mac.dmg
${{github.workspace}}/diablo-nightly-ios.ipa
${{github.workspace}}/diablo-nightly-vita.vpk
${{github.workspace}}/diablo-nightly-3ds.3dsx
${{github.workspace}}/diablo-nightly-3ds.cia
${{github.workspace}}/diablo-nightly-switch.nro
${{github.workspace}}/diablo-nightly-xbox.zip
${{github.workspace}}/diablo-nightly-xboxone.zip
${{github.workspace}}/diablo-nightly-amiga
${{github.workspace}}/diablo-nightly-x64.zip
${{github.workspace}}/diablo-nightly-mingw-x64.zip
${{github.workspace}}/diablo-nightly-hd2-x64.zip
${{github.workspace}}/diablo-nightly-mini-x64.zip
${{github.workspace}}/diablo-nightly-server-x64.zip
${{github.workspace}}/diablo-nightly-scr-x64.zip
${{github.workspace}}/diablo-nightly-x86.zip
${{github.workspace}}/diablo-nightly-mingw-x86.zip
${{github.workspace}}/diablo-nightly-mini-x86.zip
${{github.workspace}}/diablo-nightly-server-x86.zip
${{github.workspace}}/diablo-nightly-mingw-w9x.zip
${{github.workspace}}/hellfire-nightly-android.apk
${{github.workspace}}/hellfire-nightly-lepus.opk
${{github.workspace}}/hellfire-nightly-retrofw.opk
${{github.workspace}}/hellfire-nightly-rg350.opk
${{github.workspace}}/hellfire-nightly-ps4.pkg
${{github.workspace}}/hellfire-nightly-ps5.zip
${{github.workspace}}/hellfire-nightly-aarch64.tar.xz
${{github.workspace}}/hellfire-nightly-mac.dmg
${{github.workspace}}/hellfire-nightly-ios.ipa
${{github.workspace}}/hellfire-nightly-vita.vpk
${{github.workspace}}/hellfire-nightly-3ds.3dsx
${{github.workspace}}/hellfire-nightly-3ds.cia
${{github.workspace}}/hellfire-nightly-switch.nro
${{github.workspace}}/hellfire-nightly-xbox.zip
${{github.workspace}}/hellfire-nightly-xboxone.zip
${{github.workspace}}/hellfire-nightly-amiga
${{github.workspace}}/hellfire-nightly-x64.zip
${{github.workspace}}/hellfire-nightly-mingw-x64.zip
${{github.workspace}}/hellfire-nightly-hd2-x64.zip
${{github.workspace}}/hellfire-nightly-mini-x64.zip
${{github.workspace}}/hellfire-nightly-server-x64.zip
${{github.workspace}}/hellfire-nightly-scr-x64.zip
${{github.workspace}}/hellfire-nightly-x86.zip
${{github.workspace}}/hellfire-nightly-mingw-x86.zip
${{github.workspace}}/hellfire-nightly-mini-x86.zip
${{github.workspace}}/hellfire-nightly-server-x86.zip
${{github.workspace}}/hellfire-nightly-mingw-w9x.zip
#env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}