Skip to content

ci: add release workflow with multi-platform builds#64

Merged
linroid merged 6 commits intomainfrom
ci/release-workflow
Feb 13, 2026
Merged

ci: add release workflow with multi-platform builds#64
linroid merged 6 commits intomainfrom
ci/release-workflow

Conversation

@linroid
Copy link
Owner

@linroid linroid commented Feb 13, 2026

Summary

  • Add GitHub Actions release workflow triggered by v* tag push that builds CLI native binaries (6 platforms), Android APK, Desktop packages (5 platforms), and Web distribution, then creates a GitHub Release with all artifacts and auto-generated changelog
  • Add environment-based Android release signing config so CI can sign APKs via secrets while local dev builds are unaffected

Build matrix

Job Platforms
CLI (GraalVM native) macOS arm64, macOS x64, Linux x64, Linux arm64, Windows x64, Windows arm64
Android APK (signed if secrets configured)
Desktop macOS .dmg, Linux .deb (x64 + arm64), Windows .msi (x64 + arm64)
Web WasmJs zip

Required secrets (for signed Android APK)

  • ANDROID_KEYSTORE_BASE64
  • ANDROID_KEYSTORE_PASSWORD
  • ANDROID_KEY_ALIAS
  • ANDROID_KEY_PASSWORD

Test plan

  • Push a test tag v0.0.1-test to trigger the workflow
  • Verify all 13 build jobs pass
  • Verify artifacts appear on the GitHub Release page
  • Delete the test release/tag afterward

🤖 Generated with Claude Code

Add a GitHub Actions workflow triggered by tag push (v*) that builds
all distributable artifacts and creates a GitHub Release with
auto-generated changelog.

Build matrix:
- CLI native binaries (macOS arm64/x64, Linux x64/arm64, Windows x64/arm64)
- Android APK with optional release signing via secrets
- Desktop packages (macOS .dmg, Linux .deb x64/arm64, Windows .msi x64/arm64)
- Web (WasmJs) distribution zip

Also add environment-based Android release signing config to
app/android/build.gradle.kts, reading keystore from env vars so
local dev builds are unaffected.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

linroid and others added 3 commits February 13, 2026 15:15
Replace hardcoded version constants with a build-time generated value
from the `kdown.version` Gradle property. The release workflow passes
the version extracted from the git tag via `-Pkdown.version=X.Y.Z`.

- Add `kdown.version` property to gradle.properties (default: 0.0.1-dev)
- Generate `KDownBuildVersion.kt` in library:api at build time
- Wire KDownVersion.DEFAULT and KDown.VERSION to the generated constant
- Pass `-Pkdown.version` in all release workflow Gradle commands
- Use kdown.version for Android versionName

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generate KDOWN_BUILD_REVISION from `git rev-parse --short HEAD` at
build time and expose it as KDownVersion.REVISION.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all KDown.VERSION usages with KDownVersion.DEFAULT (and
KDownVersion.REVISION in CLI output) and remove the companion
object constant.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

github-actions bot commented Feb 13, 2026

Test Results

1 216 tests  ±0   1 216 ✅ ±0   12s ⏱️ -1s
   88 suites ±0       0 💤 ±0 
   88 files   ±0       0 ❌ ±0 

Results for commit 28412b1. ± Comparison against base commit 3f248b0.

♻️ This comment has been updated with latest results.

linroid and others added 2 commits February 13, 2026 15:26
Enable isMinifyEnabled and isShrinkResources for the release build
type with ProGuard rules for kotlinx-serialization, Ktor, and Netty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move ProGuard rules to root proguard-rules.pro shared by Android and
  Desktop builds
- Add logback-classic to CLI and Desktop for Ktor server logging
- Add log4j-api as runtimeOnly for Desktop ProGuard hierarchy resolution
- Enable ProGuard with optimization for Desktop release builds
- Derive Desktop packageVersion from kdown.version Gradle property
- Use GITHUB_RUN_NUMBER for Android versionCode (defaults to 1 locally)
- Strip unused files from Android APK (kotlin builtins, Jansi natives,
  Netty native-image metadata, version files, LICENSE files)
- Add iOS Config.xcconfig for version management

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@linroid linroid merged commit b466d6d into main Feb 13, 2026
6 checks passed
@linroid linroid deleted the ci/release-workflow branch February 13, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant