Nightly Release #5
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
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 0 * * *" | |
name: Nightly Release | |
permissions: {} | |
jobs: | |
"Package_Source": | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
runs-on: ubuntu-latest | |
container: | |
image: "ghcr.io/naev/naev-release:latest" | |
steps: | |
- name: Checkout Naev Repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
path: source | |
submodules: true | |
- name: Package Dist | |
run: | | |
meson setup build source -Dexecutable=disabled -Ddocs_c=disabled -Ddocs_lua=disabled | |
meson dist -C build --no-tests --include-subprojects | |
- name: Collect Artifacts | |
run: | | |
mkdir -p build/dist | |
cp -r source/utils/ci/itch source/utils/ci/steam source/utils/ci/gh build/dist/ | |
cp source/utils/buildAppImage.sh build/dist | |
cp source/utils/buildUniversalBundle.sh build/dist | |
cp -r source/extras/macos/dmg_assets build/dist | |
cp source/extras/macos/entitlements.plist build/dist | |
mv build/meson-dist/naev-*.tar.xz build/dist/source.tar.xz | |
cp source/dat/VERSION build/dist | |
- name: Upload Source Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-dist | |
path: ${{ github.workspace }}/build/dist/source.tar.xz | |
if-no-files-found: error | |
- name: Upload Version Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-version | |
path: ${{ github.workspace }}/build/dist/VERSION | |
if-no-files-found: error | |
- name: Upload AppImage Packaging Script Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-appimage-packaging | |
path: ${{ github.workspace }}/build/dist/buildAppImage.sh | |
if-no-files-found: error | |
- name: Upload Universal Bundle Packaging Script Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-macos-packaging | |
path: ${{ github.workspace }}/build/dist/buildUniversalBundle.sh | |
if-no-files-found: error | |
- name: Upload DMG Assets Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-macos-dmg | |
path: ${{ github.workspace }}/build/dist/dmg_assets | |
if-no-files-found: error | |
include-hidden-files: true | |
- name: Upload Entitlements PLIST Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-macos-entitlements | |
path: ${{ github.workspace }}/build/dist/entitlements.plist | |
if-no-files-found: error | |
- name: Upload GitHub Deployment Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-github-deployment | |
path: ${{ github.workspace }}/build/dist/gh/* | |
if-no-files-found: error | |
- name: Upload Steam Deployment Script Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-steam-deployment | |
path: ${{ github.workspace }}/build/dist/steam/* | |
if-no-files-found: error | |
- name: Upload Itch Deployment Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-itch-deployment | |
path: ${{ github.workspace }}/build/dist/itch/* | |
if-no-files-found: error | |
include-hidden-files: true | |
"Linux_Naev_Release": | |
needs: "Package_Source" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: "ghcr.io/naev/naev-steamruntime:latest" | |
volumes: | |
- ${{ github.workspace }}:${{ github.workspace }} | |
steps: | |
- name: Get Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-dist | |
- name: Extract Source | |
run: | | |
mkdir source | |
tar -xf source.tar.xz -C source --strip 1 | |
- name: Meson Setup | |
run: | | |
meson setup build source \ | |
--native-file='source/utils/build/linux_steamruntime.ini' \ | |
--buildtype=debug \ | |
--force-fallback-for=glpk,SuiteSparse \ | |
-Dsteamruntime=true \ | |
-Dprefix="/usr" \ | |
-Dinstaller=true \ | |
-Db_lto=true \ | |
-Dauto_features=enabled \ | |
-Ddocs_c=disabled \ | |
-Ddocs_lua=disabled | |
- name: Meson Compile | |
run: | | |
meson compile -C build | |
- name: Meson Install | |
run: | | |
meson install -C build | |
env: | |
DESTDIR: ${{ github.workspace }}/staging | |
- name: Compile AppImage | |
run: | | |
./source/utils/buildAppImage.sh -d -n -s source -b build | |
- name: Collect Steam Linux64 Artifacts | |
run: | | |
mkdir -p build/dist/ | |
mv staging/usr/bin/naev build/dist/naev.x64 | |
chmod +x build/dist/naev.x64 | |
tar -cJvf build/dist/naev-appdir.tar.xz -C build/dist/ AppDir | |
tar -cJvf build/dist/naev-ndata.tar.xz -C staging/usr/share/naev dat | |
- name: Upload Naev Binary Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-steamruntime | |
path: ${{ github.workspace }}/build/dist/naev.x64 | |
- name: Upload Naev Data Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-ndata | |
path: ${{ github.workspace }}/build/dist/naev-ndata.tar.xz | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-linux-appdir-x86-64 | |
path: "${{ github.workspace }}/build/dist/naev-appdir.tar.xz" | |
"Linux_Package_Release": | |
needs: | |
[ | |
Package_Source, | |
Linux_Naev_Release | |
] | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: "ghcr.io/naev/naev-release:latest" | |
steps: | |
- name: Get AppImage Packaging Script | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-appimage-packaging | |
- name: Get AppDir | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-linux-appdir-x86-64 | |
- name: Package AppImage | |
run: | | |
chmod +x buildAppImage.sh | |
tar -Jxf naev-appdir.tar.xz | |
./buildAppImage.sh -d -n -p -a "./AppDir" -b build | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-linux-x86-64 | |
path: "${{ github.workspace }}/build/dist/*" | |
"Windows_Naev_Release": | |
needs: "Package_Source" | |
runs-on: ubuntu-latest | |
container: | |
image: "ghcr.io/naev/naev-windows:latest" | |
steps: | |
- name: Get Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-dist | |
- name: Extract Source | |
run: | | |
mkdir source | |
tar -xf source.tar.xz -C source --strip 1 | |
- name: Meson Setup | |
run: | | |
meson setup build source \ | |
--prefix="$(pwd)"/build/windows \ | |
--bindir=. \ | |
-Dndata_path=. \ | |
--cross-file='source/utils/build/windows_cross_mingw_ucrt64.ini' \ | |
--buildtype=debug \ | |
--force-fallback-for=glpk,SuiteSparse \ | |
-Dinstaller=true \ | |
-Drelease=true \ | |
-Db_lto=true \ | |
-Dauto_features=enabled \ | |
-Ddocs_c=disabled \ | |
-Ddocs_lua=disabled | |
- name: Meson Compile | |
run: | | |
meson compile -C build | |
- name: Meson Install | |
run: | | |
meson install -C build | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-win64 | |
path: ${{ github.workspace }}/build/dist/* | |
if-no-files-found: error | |
"Darwin_Compile_Naev": | |
needs: "Package_Source" | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: naev-macos | |
arch: x86_64 | |
deploymenttarget: "10.13" | |
config: macos_cross_osxcross.ini | |
- image: naev-macos | |
arch: aarch64 | |
deploymenttarget: "12.0" | |
config: macos_aarch64_cross_osxcross.ini | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: "ghcr.io/naev/${{ matrix.image }}:latest" | |
env: | |
BUILDARCH: "${{ matrix.arch }}" | |
HOST: "${{ matrix.arch }}-apple-darwin23" | |
MACOSX_DEPLOYMENT_TARGET: "${{ matrix.deploymenttarget }}" | |
steps: | |
- name: Configure Build Environment | |
run: | | |
echo "Configuring MacPorts packages and build env variables for $BUILDARCH." | |
if [[ "$BUILDARCH" == "aarch64" ]] then | |
rm -f /usr/lib/osxcross/macports | |
ln -s /usr/lib/osxcross/macports.aarch64 /usr/lib/osxcross/macports | |
elif [[ "$BUILDARCH" == "x86_64" ]] then | |
rm -f /usr/lib/osxcross/macports | |
ln -s /usr/lib/osxcross/macports.x86_64 /usr/lib/osxcross/macports | |
# Fallback | |
else | |
rm -f /usr/lib/osxcross/macports | |
ln -s /usr/lib/osxcross/macports.x86_64 /usr/lib/osxcross/macports | |
fi | |
- name: Get Source | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-dist | |
- name: Extract Source | |
run: | | |
mkdir source | |
tar -xf source.tar.xz -C source --strip 1 | |
- name: Meson Setup | |
run: | | |
meson setup build source \ | |
--prefix="$(pwd)"/build/macos/Naev.app \ | |
--bindir=Contents/MacOS \ | |
-Dndata_path=Contents/Resources \ | |
--cross-file='source/utils/build/${{ matrix.config }}' \ | |
--buildtype=debug \ | |
-Dinstaller=false \ | |
-Drelease=true \ | |
-Db_lto=true \ | |
-Dauto_features=enabled \ | |
-Ddocs_c=disabled \ | |
-Ddocs_lua=disabled | |
- name: Meson Compile | |
run: | | |
meson compile -C build | |
- name: Meson Install | |
run: | | |
meson install -C build | |
- name: Fix zip name | |
run: | | |
mv build/dist/naev-macos.zip build/dist/naev-macos-${{ matrix.arch }}.zip | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-macos-${{ matrix.arch }} | |
path: ${{ github.workspace }}/build/dist/naev-macos-${{ matrix.arch }}.zip | |
if-no-files-found: error | |
"Darwin_Package_Release": | |
needs: | |
[ | |
Package_Source, | |
Darwin_Compile_Naev | |
] | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: "ghcr.io/naev/naev-macos:latest" | |
steps: | |
- name: Get Universal Bundle Packaging Script | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-macos-packaging | |
- name: Get DMG Assets | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-macos-dmg | |
path: dmg_assets | |
- name: Get Entitlements PLIST | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-macos-entitlements | |
- name: Get x86_64 macOS Bundle | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-macos-x86_64 | |
- name: Get ARM64 macOS Bundle | |
uses: actions/download-artifact@v4 | |
with: | |
name: naev-macos-aarch64 | |
- name: Package Universal Bundle | |
run: | | |
mkdir -p arm64 x86_64 | |
chmod +x buildUniversalBundle.sh | |
unzip naev-macos-aarch64.zip -d arm64 | |
unzip naev-macos-x86_64.zip -d x86_64 | |
./buildUniversalBundle.sh -d -i ./dmg_assets -e ./entitlements.plist -a ./arm64 -x ./x86_64 -b ./build | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: naev-macos | |
path: "${{ github.workspace }}/build/dist/*" | |
"Upload_Naev_Release": | |
permissions: | |
contents: write # to generate pre-release (marvinpinto/action-automatic-releases) | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- releasetype: github | |
- releasetype: steam | |
- releasetype: itch | |
runs-on: ubuntu-latest | |
container: | |
image: "ghcr.io/naev/naev-release:latest" | |
needs: | |
[ | |
Package_Source, | |
Linux_Package_Release, | |
Windows_Naev_Release, | |
Darwin_Package_Release, | |
] | |
if: ${{ github.repository == 'naev/naev' }} | |
steps: | |
- name: Checkout Naev Repository | |
uses: actions/checkout@v4 | |
if: ${{ matrix.releasetype == 'github' }} | |
- name: Create Release Staging and Output Areas | |
run: | | |
mkdir -p temp build/{staging,dist/{lin64,macos,win64}} | |
working-directory: ${{ github.workspace }} | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ${{ github.workspace }}/build/staging | |
- name: Create Github Release | |
if: ${{ matrix.releasetype == 'github' }} | |
uses: "marvinpinto/action-automatic-releases@latest" | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
automatic_release_tag: "nightly" | |
prerelease: true | |
title: "Nightly Build" | |
- name: Build and Upload Github Release | |
if: ${{ matrix.releasetype == 'github' }} | |
run: | | |
chmod -R +x build/staging/naev-github-deployment | |
cp -r build/staging/naev-github-deployment/* "$(pwd)" | |
./GHDeploy.sh -n -t "$(pwd)/build/staging" -o "$(pwd)/build/dist" -r "nightly" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and Upload itch.io Release | |
if: ${{ matrix.releasetype == 'itch' }} | |
run: | | |
chmod -R +x build/staging/naev-itch-deployment | |
cp -r build/staging/naev-itch-deployment/* "$(pwd)" | |
./ItchDeploy.sh -n -t "$(pwd)/build/staging" -o "$(pwd)/build/dist" | |
env: | |
BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }} | |
- name: Build and Upload Steam Release | |
if: ${{ matrix.releasetype == 'steam' }} | |
run: | | |
chmod -R +x build/staging/naev-steam-deployment | |
cp -r build/staging/naev-steam-deployment/* "$(pwd)" | |
./SteamDeploy.sh -n -t "$(pwd)/build/staging" -o "$(pwd)/build/dist" | |
env: | |
STEAMCMD_USER: ${{ secrets.STEAMCMD_USER }} | |
STEAMCMD_PASS: ${{ secrets.STEAMCMD_PASS }} | |
TFA_IMAP: ${{ secrets.TFA_IMAP }} | |
TFA_PASS: ${{ secrets.TFA_PASS }} | |
TFA_USER: ${{ secrets.TFA_USER }} |