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>
24 lines
1.7 KiB
Markdown
24 lines
1.7 KiB
Markdown
# 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.
|