# 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 1. **Dynamic Versioning in Gradle**: - `composeApp/build.gradle.kts` dynamically reads `appVersion` via `-PappVersion=...` or defaults to `1.0.0`. - `BuildConfig.kt` and native distribution packaging tasks respect the injected version. 2. **GitHub Actions Workflow (`.github/workflows/release.yml`)**: - Automated semantic patch version computation and git tagging on push to `main` and `workflow_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 using `FORGEJO_PAT`. 3. **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.3` generates `BuildConfig.VERSION = "1.2.3"`. - Packaging tasks (`packageDmg`, `packageMsi`, `packageDeb`) are wired and functional. - Workflow YAML syntax validated.