wow-backup/docs/plans/feature-6-release-pipeline.md
Rukira ccfb187601
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
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

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

  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.