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