wow-backup/docs/plans/feature-6-release-pipeline.md
Rukira 51bc86ec6d feat(release): add Forgejo release step to GitHub Actions pipeline
Co-authored-by: Junie <junie@jetbrains.com>
2026-08-24 16:56:00 +01:00

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.