Some checks are pending
Release Pipeline / Bump Version & Create Tag (push) Waiting to run
Release Pipeline / Package Linux (DEB) (push) Blocked by required conditions
Release Pipeline / Package macOS (DMG) (push) Blocked by required conditions
Release Pipeline / Package Windows (MSI) (push) Blocked by required conditions
Release Pipeline / Create GitHub & Forgejo Releases (push) Blocked by required conditions
Co-authored-by: Junie <junie@jetbrains.com>
1.7 KiB
1.7 KiB
Feature 6: Build Automation & Release Pipeline
Status: ✅ Completed
Context
Automated multi-platform packaging and release pipeline for WoW Backup using GitHub Actions. Whenever changes are merged/pushed to the main branch, the pipeline calculates the next release version and tag, compiles native distributables for macOS, Windows, and Linux, and attaches all packaged binaries to a published GitHub Release as well as a published Forgejo Release on git.asarius.site (rukira/wow-backup).
Deliverables
- Dynamic Versioning in Gradle:
composeApp/build.gradle.ktsdynamically readsappVersionvia-PappVersion=...or defaults to1.0.0.BuildConfig.ktand native distribution packaging tasks respect the injected version.
- GitHub Actions Workflow (
.github/workflows/release.yml):- Automated semantic patch version computation and git tagging on push to
mainandworkflow_dispatch. - Parallel runner matrix (
macos-latest,windows-latest,ubuntu-latest) packaging.dmg,.msi, and.deb. - Automated GitHub Release creation with attached artifacts and release notes.
- Automated Forgejo Release creation on
git.asarius.site(rukira/wow-backup) with attached distribution packages usingFORGEJO_PAT.
- Automated semantic patch version computation and git tagging on push to
- Installation Guide (
INSTALL.md):- Detailed user installation guide for macOS (Gatekeeper bypass), Windows (SmartScreen bypass), and Linux (APT/DPKG).
- Linked directly from
README.md.
Verification
./gradlew :composeApp:generateBuildConfig -PappVersion=1.2.3generatesBuildConfig.VERSION = "1.2.3".- Packaging tasks (
packageDmg,packageMsi,packageDeb) are wired and functional. - Workflow YAML syntax validated.