docs: add INSTALL.md and update project documentation for release pipeline

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
Rukira 2026-08-24 16:13:38 +01:00
parent e1844ff919
commit 33e23bf422
4 changed files with 133 additions and 9 deletions

View file

@ -0,0 +1,23 @@
# 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.
## 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.
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.

View file

@ -56,17 +56,19 @@ Currently, the project contains no automated test suite (`src/jvmTest` is empty)
---
## 3. Build Automation & Release Pipeline
## 3. Build Automation & Release Pipeline (Completed)
The project contains packaging configurations in `composeApp/build.gradle.kts` and a `release.sh` script, but lacks automated CI/CD workflows.
Automated multi-platform packaging and release pipeline implemented via GitHub Actions (`.github/workflows/release.yml`) and documented in `INSTALL.md` and `docs/plans/feature-6-release-pipeline.md`.
### Tasks:
1. **GitHub Actions CI Workflow**
- Automated compile, lint, and test execution on pull requests and pushes to `main`.
- Matrix builds testing on macOS (`macos-latest`) and Windows (`windows-latest`).
2. **Automated Distribution Packaging**
- Automated artifact generation for `.dmg` (macOS), `.msi` / `.zip` (Windows), and `.deb` (Linux) on GitHub releases.
- Code signing and notarization configuration for macOS distributions.
### Implemented:
1. **GitHub Actions Release Pipeline**
- Automated semantic patch version computation and git tagging on push to `main` and `workflow_dispatch`.
- Matrix builds on macOS (`macos-latest`), Windows (`windows-latest`), and Linux (`ubuntu-latest`).
2. **Automated Distribution Packaging & GitHub Releases**
- Automated artifact generation and release publishing for `.dmg` (macOS), `.msi` (Windows), and `.deb` (Linux).
- Dynamic version injection via `-PappVersion` in `composeApp/build.gradle.kts`.
3. **Installation Documentation**
- Detailed `INSTALL.md` guide covering installation and security prompts (Gatekeeper / SmartScreen) across all platforms.
---