build: migrate from Gradle to the Kotlin Toolchain#49
Conversation
80d1f0e to
04522db
Compare
Co-authored-by: Cursor <cursoragent@cursor.com>
04522db to
e89f243
Compare
|
@claude please review this PR. |
Review: migrate from Gradle to the Kotlin ToolchainSolid, well-scoped migration. Broker source under What's done well
Substantive concern: branch decoration leaks into release-time
|
| Area | Behavior on main |
Behavior on this PR | Verdict |
|---|---|---|---|
MetaReleaseService runtime load of release.properties |
works | works (writeReleaseProperties stages it in the resources root) | unchanged |
CI artifact upload at build/libs/ |
yes (Gradle application) |
yes (package plugin) | unchanged |
Released Docker image tags [<version>, <commit>, latest] |
[1.2.4, abc, latest] |
[1.2.4-<sha>, abc, latest] on detached HEAD |
regression, see concern above |
| Tag created at HEAD | v1.2.4 (axion) |
v1.2.4 (release plugin nextReleaseVersion bypasses decorate) |
unchanged |
Detekt + ktlint enforcement on ./kotlin check |
yes | yes | unchanged |
| Jib base image / ports / env / user | yes | yes (module.yaml mirrors faithfully) | unchanged |
The bulk of this PR is good and lands an ambitious migration cleanly. The branch-decoration-on-detached-HEAD issue is the one thing I'd want fixed before merging, since it would silently change the published Docker image tag scheme on the first post-merge release.
Summary
Replaces the Gradle build with the Kotlin Toolchain.
What's preserved
gradle/libs.versions.toml— single source of truth for all versions, reused as-is by the Toolchain. Every coordinate inmodule.yaml,plugins/*/module.yaml, andplugins/*/plugin.yamlis a$libs.*reference.detekt.yml,.editorconfig,docker-compose.yml, all broker source undersrc/— unchanged.MetaReleaseServiceand its tests — byte-identical tomain(verified viagit diff main -- src/main/kotlin/.../MetaReleaseService.kt src/test/...). The release plugin'swriteReleasePropertiestask action publishes the legacyrelease.propertiesformat so the existingProperties.load()consumer keeps working with zero source churn.What replaces what
./gradlew build./kotlin build./gradlew test./kotlin test./gradlew check./kotlin check(runs detekt + ktlint via theirchecks:registrations + tests)./gradlew run./kotlin run./gradlew currentVersion./kotlin do currentVersion./gradlew release./kotlin do release./gradlew jib./kotlin do jib(or./kotlin do jibDockerBuild/jibBuildTar)./gradlew ktlintFormat./kotlin do ktlintFormatgenerateReleasePropertiestaskwriteReleasePropertiestask (auto-wired intogenerated.resources)