Enhanced the version check to also verify if releases exist.
Now builds will proceed if:
1. Upstream SHA has changed (new version), OR
2. Release/tag doesn't exist (first run or manual deletion)
This fixes the issue where builds would be skipped even when
releases were missing. The workflow will now automatically
rebuild if a release is deleted or doesn't exist yet.
Changes applied to all three platforms (Android, Linux, Windows).
Use cases this handles:
- First run when no releases exist
- Manual release deletion requiring rebuild
- Per-platform release management (if one platform's release is deleted)
Removed Profile-Guided Optimization (PGO) build variants from the
Linux build matrix to significantly reduce CI build time.
Removed builds:
- Normal PGO x86_64
- Optimized PGO x86_64_v3
Kept builds:
- Normal x86_64 (generic compatibility)
- Optimized x86_64_v3 (modern CPUs)
This change reduces the Linux build matrix from 4 variants to 2,
cutting build time roughly in half while still providing both
generic and optimized builds for different CPU generations.
Updated release descriptions and Discord notifications to reflect
the removed PGO variants.
Resolves race condition when multiple workflows try to push to
LATEST_VERSION simultaneously. The issue occurred when Android,
Linux, and Windows builds all completed at the same time and tried
to update the same file.
Solution:
- Added git pull --rebase before push to sync with remote changes
- Implemented retry loop (up to 5 attempts with 2s delay)
- Added error handling to gracefully handle no-change commits
This allows all three workflows to successfully update LATEST_VERSION
without conflicts, with the last one to complete having the final value.
Exclude debug symbol files (.pdb) from the Windows release package
to reduce file size and remove unnecessary debug information from
production releases. The packaging step now filters out .pdb files
before creating the final zip archive.
Enhanced release descriptions to include:
- Direct link to the Citron upstream commit that the build is based on
- Build details including platform, type, and date
- Better context for users about what version they're downloading
Each release now shows:
- **Citron Upstream Commit:** [SHA] with clickable link to git.citron-emu.org
- Platform-specific build details (Android arm64, Linux variants, Windows x64)
- Build configuration (LTO, Qt6, optimizations)
- Release date
This makes it easier for users to:
- Track which Citron version they're using
- Compare with upstream changes
- Understand build configuration
Implements intelligent build skipping by checking if the upstream Citron
repository has new commits before building. This optimization prevents
wasting CI resources on rebuilding the same version.
How it works:
- Each workflow now starts with a check-version job that fetches the
upstream commit SHA from git.citron-emu.org
- Compares it with LATEST_VERSION file in this repository
- Only proceeds with build if the SHA has changed
- Updates LATEST_VERSION file after successful release with [skip ci]
Benefits:
- Saves GitHub Actions minutes by skipping redundant builds
- Reduces unnecessary Discord notifications
- Still runs on manual workflow_dispatch for testing
- Maintains daily schedule check for new upstream commits
Applied to all three platforms: Android, Linux, and Windows workflows.
This repository builds upon the excellent work of previous contributors:
- pkgforge-dev for the original Citron AppImage build scripts and infrastructure
- CollectingW for the Citron-Nightly build workflows and automation
Changes made in this commit:
- Updated all repository links from pkgforge-dev/Citron-AppImage and
CollectingW/Citron-Nightly to Zephyron-Dev/Citron-CI
- Added Discord webhook notifications for successful builds (Android, Linux, Windows)
- Integrated automated notifications with build metadata (version, date, download links)
Build workflows included:
- Android: Daily APK builds for arm64-v8a
- Linux: Multiple variants (x86_64, x86_64_v3, PGO optimized) as AppImages
- Windows: x64 builds with Qt6 support
All builds run daily at 12 AM UTC and can be triggered manually via workflow_dispatch.