Skip to content

Nightly Release

Nightly Release #5

Workflow file for this run

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 }}