Skip to content
This repository was archived by the owner on Feb 1, 2026. It is now read-only.

eden-nightly: Update icons to white background color on nightly builds #1573

eden-nightly: Update icons to white background color on nightly builds

eden-nightly: Update icons to white background color on nightly builds #1573

Workflow file for this run

name: Build
run-name: ${{ github.event.inputs.job_to_run && format('Build {0}', github.event.inputs.job_to_run) || github.event.pull_request.title ||'Auto Release' }}
concurrency:
group: build-eden-${{ github.ref }}-${{ github.event.inputs.job_to_run || github.event_name }}
cancel-in-progress: true
on:
schedule:
- cron: '0 0 * * *'
pull_request:
branches:
- main
workflow_dispatch:
inputs:
job_to_run:
type: choice
description: 'Choose target build platform'
options: [release, info, source, appimage, android, windows, macos, bsd]
default: 'release'
jobs:
info:
if: |
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'info'
runs-on: ubuntu-latest
name: "Info"
outputs:
should_skip: ${{ steps.compare_count.outputs.should_skip }}
env:
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
GH_REPO: ${{ github.repository }}
steps:
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false
- name: Get the latest release count
run: |
GH_AUTH_HEADER=""
if [ -n "$GH_TOKEN" ]; then
GH_AUTH_HEADER="Authorization: token $GH_TOKEN"
fi
api_url="https://api.github.com/repos/$GH_REPO"
latest_release_info=$(curl -H "$GH_AUTH_HEADER" "$api_url/releases/latest")
last_release_tag=$(echo "$latest_release_info" | jq -r '.tag_name')
echo "${last_release_tag}"
old_count="${last_release_tag##*-}"
echo "OLD_COUNT=$old_count" >> "$GITHUB_ENV"
- name: Generate changelog
run: |
chmod +x ./changelog.sh
./changelog.sh
- name: Compare Count
id: compare_count
run: |
NEW_COUNT=$(cat ~/count)
echo "-- Release Count Check:"
echo " Previous Release Count: $OLD_COUNT"
echo " Current Source Count: $NEW_COUNT"
if [ "${{ github.event_name }}" != "pull_request" ] && [ "$NEW_COUNT" = "$OLD_COUNT" ]; then
echo "::notice title=Release Skipped::No new commits detected (Current count: $NEW_COUNT). Release will be skipped."
echo "-- [SKIP] No new commits detected. Release will be skipped."
SKIP="true"
else
echo "-- [PROCEED] New changes detected. Starting release process."
SKIP="false"
fi
echo "should_skip=$SKIP" >> "$GITHUB_OUTPUT"
- name: Upload artifacts
uses: actions/upload-artifact@v6.0.0
with:
name: info-artifacts
path: |
~/tag
~/count
~/changelog
source:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'source'
)
runs-on: ubuntu-latest
name: "Source"
strategy:
matrix:
target: [Source]
steps:
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false
- name: Pack source code
run: |
chmod +x ./source.sh
./source.sh
- name: Upload source code
uses: actions/upload-artifact@v6.0.0
with:
name: source
path: artifacts
appimage:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'appimage'
)
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
include:
- target: steamdeck
runs-on: ubuntu-latest
optimize: Normal
- target: steamdeck
runs-on: ubuntu-latest
optimize: PGO
- target: rog
runs-on: ubuntu-latest
optimize: Normal
- target: rog
runs-on: ubuntu-latest
optimize: PGO
- target: common
runs-on: ubuntu-latest
optimize: Normal
- target: common
runs-on: ubuntu-latest
optimize: PGO
- target: legacy
runs-on: ubuntu-latest
optimize: Normal
- target: legacy
runs-on: ubuntu-latest
optimize: PGO
- target: aarch64
runs-on: ubuntu-24.04-arm
optimize: Normal
container:
image: ghcr.io/pkgforge-dev/archlinux:latest
options: --privileged --device /dev/fuse
name: "Appimage ${{ matrix.target }} ${{ matrix.optimize }}"
env:
TARGET: ${{ matrix.target }}
OPTIMIZE: ${{ matrix.optimize }}
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false
- name: Install dependencies
run: |
chmod +x ./linux-dependencies.sh
./linux-dependencies.sh
- name: Install sccache
if: ${{ matrix.optimize == 'Normal' }}
uses: Eden-CI/sccache-action@v0.0.2
with:
disable_annotations: true
- name: Clone Eden
run: |
git clone 'https://git.eden-emu.dev/eden-emu/eden.git' ./eden
- name: Compile Eden ${{ matrix.target }}
run: |
chmod +x ./eden-appimage.sh
./eden-appimage.sh
- name: Upload appimage
uses: actions/upload-artifact@v6.0.0
with:
name: eden-${{ matrix.target}}-${{ matrix.optimize }}-appimage
path: eden/appimage
- name: Upload appbundle
uses: actions/upload-artifact@v6.0.0
with:
name: eden-${{ matrix.target}}-${{ matrix.optimize }}-appbundle
path: eden/appbundle
android:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'android'
)
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [Replace, Coexist, Optimized, Legacy, ChromeOS]
name: "Android (${{ matrix.target }})"
env:
TARGET: ${{ matrix.target }}
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v6.0.1
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt-get install glslang-tools libvulkan-dev python3-requests optipng -y
- name: Install sccache
uses: Eden-CI/sccache-action@v0.0.2
with:
disable_annotations: true
- name: Clone Eden
run: |
git clone 'https://git.eden-emu.dev/eden-emu/eden.git' ./eden
- name: Compile Eden android
run: |
chmod +x ./eden-android.sh
./eden-android.sh
- name: Upload artifact
uses: actions/upload-artifact@v6.0.0
with:
name: eden-android-${{ matrix.target }}
path: eden/src/android/artifacts/
windows:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'windows'
)
runs-on: ${{ matrix.runs-on }}
name: "Windows ${{ matrix.toolchain }} ${{ matrix.optimize }} (${{ matrix.arch }})"
strategy:
fail-fast: false
matrix:
include:
- toolchain: MSVC
optimize: normal
arch: x86_64
runs-on: windows-latest
- toolchain: Clang
optimize: normal
arch: x86_64
runs-on: windows-latest
# - toolchain: Clang
# optimize: PGO
# arch: x86_64
# runs-on: windows-latest
# - toolchain: MSYS2
# optimize: PGO
# arch: x86_64
# runs-on: windows-latest
- toolchain: MSYS2
msystem: MINGW64
optimize: normal
arch: x86_64
runs-on: windows-latest
- toolchain: MSYS2
msystem: CLANGARM64
optimize: normal
arch: arm64
runs-on: windows-11-arm
defaults:
run:
shell: ${{ matrix.toolchain == 'MSYS2' && 'msys2 {0}' || 'bash {0}' }}
env:
TOOLCHAIN: ${{ matrix.toolchain }}
ARCH: ${{ matrix.arch }}
OPTIMIZE: ${{ matrix.optimize }}
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v6.0.1
- name: Set up MSVC
if: ${{ matrix.toolchain != 'MSYS2' }}
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: Set up MSYS2
if: ${{ matrix.toolchain == 'MSYS2' }}
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: true
cache: false
install: autoconf automake-wrapper automake autoconf-archive base-devel git libtool make p7zip zip unzip
pacboy: >-
boost:p sccache:p clang:p cmake:p enet:p fmt:p glslang:p libusb:p lld:p llvm:p lz4:p mbedtls:p ninja:p nlohmann-json:p
opus:p qt6-tools:p qt6-translations:p qt6-svg:p rapidjson:p toolchain:p python-pip:p vulkan-memory-allocator:p vulkan-devel:p zlib:p zstd:p
jbigkit:p xz:p libdeflate:p bzip2:p lerc:p graphite2:p crt-git:p libwebp:p libtiff:p brotli:p
- name: Install vulkan-sdk
if: ${{ matrix.toolchain != 'MSYS2' }}
shell: powershell
run: |
./install-vulkan-sdk.ps1
- name: Install sccache
if: ${{ matrix.optimize == 'normal' }}
uses: Eden-CI/sccache-action@v0.0.2
with:
disable_annotations: true
- name: Install LLVM
if: ${{ matrix.toolchain != 'MSYS2' && matrix.toolchain == 'Clang' }}
shell: powershell
run: |
./install-llvm.ps1
- name: Clone Eden
run: |
git clone 'https://git.eden-emu.dev/eden-emu/eden.git' ./eden
cd ./eden
echo "VERSION=$(git rev-list --count HEAD)" >> "${GITHUB_ENV}"
- name: Compile Eden Windows
run: |
chmod +x ./eden-windows.sh
./eden-windows.sh
- name: Upload Eden
uses: actions/upload-artifact@v6.0.0
with:
name: eden-windows-${{ matrix.toolchain }}-${{ matrix.optimize }}-${{ matrix.arch }}
path: eden/build/bin/
macos:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'macos'
)
runs-on: macos-latest
name: "MacOS (${{ matrix.target }})"
strategy:
matrix:
target: [arm64]
env:
TARGET: ${{ matrix.target }}
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v6
- name: Clone Eden
run: |
git clone 'https://git.eden-emu.dev/eden-emu/eden.git' ./eden
- name: Install dependencies
run: |
brew install --formula --quiet autoconf automake boost sccache glslang hidapi libiconv libtool mbedtls nasm speexdsp vulkan-loader vulkan-headers vulkan-utility-libraries
- name: Install sccache
uses: Eden-CI/sccache-action@v0.0.2
with:
disable_annotations: true
- name: Compile Eden MacOS (${{ matrix.target }})
run: |
chmod +x ./eden-macos.sh
./eden-macos.sh
- name: Upload
uses: actions/upload-artifact@v6.0.0
with:
name: eden-macos-${{ matrix.target }}
path: eden/build/artifacts/
bsd:
needs: [info]
if: |
!cancelled() && (
github.event_name == 'schedule' ||
github.event_name == 'pull_request' ||
github.event.inputs.job_to_run == 'release' ||
github.event.inputs.job_to_run == 'bsd'
)
name: ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [FreeBSD, Solaris]
env:
TARGET: ${{ matrix.target }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPILERCHECK: content
CCACHE_SLOPPINESS: time_macros
steps:
- name: Checkout repository
uses: actions/checkout@v6.0.1
- name: Clone Eden
run: |
git clone 'https://git.eden-emu.dev/eden-emu/eden.git' ./eden
- name: Restore ccache
uses: actions/cache/restore@v5
id: restore-ccache
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ runner.os }}-${{ matrix.target }}-ccache-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-${{ matrix.target }}-ccache-
- name: Compile Eden FreeBSD
if: matrix.target == 'FreeBSD'
uses: vmactions/freebsd-vm@v1.3.0
with:
usesh: true
envs: 'TARGET CCACHE_DIR CCACHE_COMPILERCHECK CCACHE_SLOPPINESS'
run: |
chmod +x ./BSD-dependencies.sh ./eden-BSD.sh
./BSD-dependencies.sh
./eden-BSD.sh
- name: Compile Eden Solaris
if: matrix.target == 'Solaris'
uses: vmactions/solaris-vm@v1.2.0
with:
usesh: true
envs: 'TARGET CCACHE_DIR CCACHE_COMPILERCHECK CCACHE_SLOPPINESS'
run: |
chmod +x ./BSD-dependencies.sh ./eden-BSD.sh
./BSD-dependencies.sh && ./eden-BSD.sh
- name: Save ccache
if: github.ref_name == 'main'
uses: actions/cache/save@v5
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-ccache.outputs.cache-primary-key }}
- name: Upload
uses: actions/upload-artifact@v6.0.0
with:
name: eden-${{ matrix.target }}
path: eden/build/artifacts/
release:
needs: [info, source, appimage, android, windows, macos, bsd]
if: |
github.ref_name == 'main' &&
(github.event_name == 'schedule' || github.event.inputs.job_to_run == 'release') &&
needs.info.outputs.should_skip != 'true'
name: "Release"
permissions:
actions: read
security-events: write
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v7.0.0
with:
pattern: "*"
merge-multiple: true
- name: Generate changelog
run: |
echo "TAG=$(cat tag)" >> "${GITHUB_ENV}"
echo "COUNT=$(cat count)" >> "${GITHUB_ENV}"
echo "BODY<<EOF" >> "${GITHUB_ENV}"
cat changelog >> "${GITHUB_ENV}"
echo "EOF" >> "${GITHUB_ENV}"
- name: Release Eden
uses: softprops/action-gh-release@v2.5.0
with:
name: "Eden Unofficial Nightly Release: ${{ env.COUNT }}"
tag_name: "${{ env.TAG }}"
body: "${{ env.BODY }}"
prerelease: false
draft: false
generate_release_notes: false
fail_on_unmatched_files: false
make_latest: true
files: |
*.AppImage*, *.AppBundle*, *.zip, *.7z, *.tar.gz, *.exe, *.apk