mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-28 11:05:31 +08:00
fix(jetbrains): use gradle release metadata
This commit is contained in:
@@ -49,7 +49,7 @@ jobs:
|
||||
- name: Save reviewed release metadata
|
||||
run: |
|
||||
cp packages/kilo-jetbrains/CHANGELOG.md "$RUNNER_TEMP/jetbrains-CHANGELOG.md"
|
||||
cp packages/kilo-jetbrains/package.json "$RUNNER_TEMP/jetbrains-package.json"
|
||||
cp packages/kilo-jetbrains/gradle.properties "$RUNNER_TEMP/jetbrains-gradle.properties"
|
||||
|
||||
- name: Checkout release tag
|
||||
uses: actions/checkout@v6
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
- name: Restore reviewed release metadata
|
||||
run: |
|
||||
cp "$RUNNER_TEMP/jetbrains-CHANGELOG.md" packages/kilo-jetbrains/CHANGELOG.md
|
||||
cp "$RUNNER_TEMP/jetbrains-package.json" packages/kilo-jetbrains/package.json
|
||||
cp "$RUNNER_TEMP/jetbrains-gradle.properties" packages/kilo-jetbrains/gradle.properties
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
@@ -111,7 +111,7 @@ jobs:
|
||||
|
||||
- name: Verify plugin
|
||||
working-directory: packages/kilo-jetbrains
|
||||
run: ./gradlew verifyPlugin -Pproduction=true -Pkilo.version="$VERSION" -Pkilo.channel="$CHANNEL"
|
||||
run: ./gradlew verifyPlugin -Pproduction=true -Pkilo.channel="$CHANNEL"
|
||||
env:
|
||||
VERSION: ${{ steps.release.outputs.version }}
|
||||
CHANNEL: ${{ steps.release.outputs.marketplace_channel }}
|
||||
@@ -129,7 +129,7 @@ jobs:
|
||||
|
||||
- name: Publish to JetBrains Marketplace
|
||||
working-directory: packages/kilo-jetbrains
|
||||
run: ./gradlew publishPlugin -Pproduction=true -Pkilo.version="$VERSION" -Pkilo.channel="$CHANNEL"
|
||||
run: ./gradlew publishPlugin -Pproduction=true -Pkilo.channel="$CHANNEL"
|
||||
env:
|
||||
VERSION: ${{ steps.release.outputs.version }}
|
||||
CHANNEL: ${{ steps.release.outputs.marketplace_channel }}
|
||||
|
||||
@@ -58,12 +58,12 @@ The PR updates:
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `packages/kilo-jetbrains/package.json` | JetBrains plugin package version. |
|
||||
| `packages/kilo-jetbrains/gradle.properties` | JetBrains plugin version in `kilo.jetbrains.version`. |
|
||||
| `packages/kilo-jetbrains/CHANGELOG.md` | Release notes packaged into the plugin. |
|
||||
|
||||
Review and edit `packages/kilo-jetbrains/CHANGELOG.md` before merging. This changelog entry is rendered into JetBrains `<change-notes>`, so it appears on the Marketplace and inside IntelliJ plugin UI.
|
||||
Review `packages/kilo-jetbrains/gradle.properties` and edit `packages/kilo-jetbrains/CHANGELOG.md` before merging. This changelog entry is rendered into JetBrains `<change-notes>`, so it appears on the Marketplace and inside IntelliJ plugin UI.
|
||||
|
||||
The PR can change release metadata such as `packages/kilo-jetbrains/package.json` and `packages/kilo-jetbrains/CHANGELOG.md`, but it does not change the tagged source code that will be built.
|
||||
The PR can change release metadata such as `packages/kilo-jetbrains/gradle.properties` and `packages/kilo-jetbrains/CHANGELOG.md`, but it does not change the tagged source code that will be built.
|
||||
|
||||
## Merge and Publish
|
||||
|
||||
@@ -84,7 +84,7 @@ Publishing behavior:
|
||||
| `x.y.z-rc.n` | `eap` | Prerelease |
|
||||
| `x.y.z` | default | Stable release |
|
||||
|
||||
The workflow checks out `jetbrains/v<version>` for verification, signing, and Marketplace publishing. It overlays the reviewed `packages/kilo-jetbrains/CHANGELOG.md` from the merged PR before rendering release notes and before `publishPlugin`, so Marketplace metadata and the GitHub Release use the reviewed changelog.
|
||||
The workflow checks out `jetbrains/v<version>` for verification, signing, and Marketplace publishing. It overlays the reviewed `packages/kilo-jetbrains/gradle.properties` and `packages/kilo-jetbrains/CHANGELOG.md` from the merged PR before rendering release notes and before `publishPlugin`, so the Marketplace plugin version, Marketplace notes, and GitHub Release use the reviewed metadata.
|
||||
|
||||
## Installing RC Builds
|
||||
|
||||
|
||||
@@ -42,10 +42,11 @@ fun gitTag(): String? {
|
||||
|
||||
val release = providers.gradleProperty("production").map { it.toBoolean() }.orElse(false).get()
|
||||
val override = providers.gradleProperty("kilo.version").orNull?.trim()?.takeIf { it.isNotEmpty() }
|
||||
val ver = override?.let(::checked) ?: if (release) checked(
|
||||
gitTag()?.removePrefix("jetbrains/v")
|
||||
?: error("Missing JetBrains plugin version. Publish builds must run from a jetbrains/v<version> tag."),
|
||||
) else checked(gitTag()?.removePrefix("jetbrains/v") ?: "0.0.0-dev")
|
||||
val prop = providers.gradleProperty("kilo.jetbrains.version").orNull?.trim()?.takeIf { it.isNotEmpty() }
|
||||
val tag = gitTag()?.removePrefix("jetbrains/v")
|
||||
val ver = override?.let(::checked) ?: prop?.let(::checked) ?: if (release) checked(
|
||||
tag ?: error("Missing JetBrains plugin version. Publish builds must set kilo.jetbrains.version or run from a jetbrains/v<version> tag."),
|
||||
) else checked(tag ?: "0.0.0-dev")
|
||||
|
||||
val channel = providers.gradleProperty("kilo.channel").map { it.trim() }.orElse("default")
|
||||
val splitPort = providers.gradleProperty("kilo.splitModeServerPort").orNull?.let(::port) ?: fallback()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
kotlin.stdlib.default.dependency=false
|
||||
kilo.jetbrains.version=7.0.1-rc.4
|
||||
org.gradle.configuration-cache=true
|
||||
org.gradle.caching=true
|
||||
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"test": "./gradlew test",
|
||||
"test:ci": "bun script/test-ci.ts"
|
||||
},
|
||||
"version": "7.0.1-rc.4",
|
||||
"version": "7.3.17",
|
||||
"dependencies": {},
|
||||
"devDependencies": {},
|
||||
"peerDependencies": {}
|
||||
|
||||
@@ -5,7 +5,7 @@ import { $ } from "bun"
|
||||
import semver from "semver"
|
||||
import { parseArgs } from "util"
|
||||
|
||||
const pkgfile = new URL("../packages/kilo-jetbrains/package.json", import.meta.url).pathname
|
||||
const props = new URL("../packages/kilo-jetbrains/gradle.properties", import.meta.url).pathname
|
||||
const log = new URL("../packages/kilo-jetbrains/CHANGELOG.md", import.meta.url).pathname
|
||||
const repo = process.env.GH_REPO ?? process.env.GITHUB_REPOSITORY ?? "Kilo-Org/kilocode"
|
||||
|
||||
@@ -67,9 +67,9 @@ if (dry) {
|
||||
}
|
||||
|
||||
await $`git checkout -B ${branch} ${sha}`
|
||||
await writepkg(ver)
|
||||
await writeprops(ver)
|
||||
await writelog(ver, entry)
|
||||
await $`git add packages/kilo-jetbrains/package.json packages/kilo-jetbrains/CHANGELOG.md`
|
||||
await $`git add packages/kilo-jetbrains/gradle.properties packages/kilo-jetbrains/CHANGELOG.md`
|
||||
|
||||
const changed = await $`git diff --cached --quiet`.nothrow()
|
||||
if (changed.exitCode !== 0) await $`git commit -m ${`release(jetbrains): v${ver}`}`
|
||||
@@ -203,10 +203,13 @@ function entries(notes: string) {
|
||||
return groups
|
||||
}
|
||||
|
||||
async function writepkg(ver: string) {
|
||||
const pkg = await Bun.file(pkgfile).json()
|
||||
pkg.version = ver
|
||||
await Bun.write(pkgfile, `${JSON.stringify(pkg, null, 2)}\n`)
|
||||
async function writeprops(ver: string) {
|
||||
const current = await Bun.file(props).text()
|
||||
const line = `kilo.jetbrains.version=${ver}`
|
||||
const next = current.match(/^kilo\.jetbrains\.version=/m)
|
||||
? current.replace(/^kilo\.jetbrains\.version=.*$/m, line)
|
||||
: `${current.trim()}\n${line}\n`
|
||||
await Bun.write(props, next.endsWith("\n") ? next : `${next}\n`)
|
||||
}
|
||||
|
||||
async function writelog(ver: string, entry: string) {
|
||||
@@ -229,7 +232,7 @@ function regex(ver: string) {
|
||||
function body(ver: string, kind: string, from: string, tag: string, sha: string, notes: string) {
|
||||
return `## Summary
|
||||
- Prepare JetBrains ${kind} release ${ver}.
|
||||
- Review and edit \`packages/kilo-jetbrains/CHANGELOG.md\` before merging.
|
||||
- Review \`packages/kilo-jetbrains/gradle.properties\` and edit \`packages/kilo-jetbrains/CHANGELOG.md\` before merging.
|
||||
|
||||
JetBrains-Version: ${ver}
|
||||
JetBrains-Kind: ${kind}
|
||||
|
||||
@@ -69,8 +69,8 @@ if (existing.exitCode !== 0) throw new Error(`${tag} does not exist`)
|
||||
const sha = (await $`git rev-list -n 1 ${tag}`.text()).trim()
|
||||
if (sha !== commit) throw new Error(`${tag} points at ${sha}, expected ${commit}`)
|
||||
|
||||
const pkg = await Bun.file("packages/kilo-jetbrains/package.json").json()
|
||||
if (pkg.version !== ver) throw new Error(`packages/kilo-jetbrains/package.json version is ${pkg.version}, expected ${ver}`)
|
||||
const prop = await props()
|
||||
if (prop !== ver) throw new Error(`packages/kilo-jetbrains/gradle.properties kilo.jetbrains.version is ${prop}, expected ${ver}`)
|
||||
|
||||
const changelog = await Bun.file("packages/kilo-jetbrains/CHANGELOG.md").text()
|
||||
if (!changelog.includes(`## [${ver}]`)) throw new Error(`CHANGELOG.md is missing section for ${ver}`)
|
||||
@@ -102,3 +102,11 @@ function need(body: string, key: string) {
|
||||
if (!value) throw new Error(`PR body is missing ${key}`)
|
||||
return value
|
||||
}
|
||||
|
||||
async function props() {
|
||||
const text = await Bun.file("packages/kilo-jetbrains/gradle.properties").text()
|
||||
const line = text.split(/\r?\n/).find((item) => item.startsWith("kilo.jetbrains.version="))
|
||||
const value = line?.split("=", 2)[1]?.trim()
|
||||
if (!value) throw new Error("packages/kilo-jetbrains/gradle.properties is missing kilo.jetbrains.version")
|
||||
return value
|
||||
}
|
||||
|
||||
@@ -50,14 +50,7 @@ const pkgjsons = await Array.fromAsync(
|
||||
new Bun.Glob("**/package.json").scan({
|
||||
absolute: true,
|
||||
}),
|
||||
).then((arr) =>
|
||||
arr.filter(
|
||||
(x) =>
|
||||
!x.includes("node_modules") &&
|
||||
!x.includes("dist") &&
|
||||
!x.endsWith("/packages/kilo-jetbrains/package.json"), // kilocode_change
|
||||
),
|
||||
)
|
||||
).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist")))
|
||||
|
||||
for (const file of pkgjsons) {
|
||||
let pkg = await Bun.file(file).text()
|
||||
|
||||
+1
-8
@@ -42,14 +42,7 @@ const pkgjsons = await Array.fromAsync(
|
||||
new Bun.Glob("**/package.json").scan({
|
||||
absolute: true,
|
||||
}),
|
||||
).then((arr) =>
|
||||
arr.filter(
|
||||
(x) =>
|
||||
!x.includes("node_modules") &&
|
||||
!x.includes("dist") &&
|
||||
!x.endsWith("/packages/kilo-jetbrains/package.json"), // kilocode_change
|
||||
),
|
||||
)
|
||||
).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist")))
|
||||
|
||||
for (const file of pkgjsons) {
|
||||
let pkg = await Bun.file(file).text()
|
||||
|
||||
@@ -76,8 +76,6 @@ export async function preserveAllVersions(options: PreserveOptions = {}): Promis
|
||||
info(`Target version: ${targetVersion}`)
|
||||
|
||||
for await (const path of glob.scan({ absolute: true })) {
|
||||
if (path.endsWith("/packages/kilo-jetbrains/package.json")) continue
|
||||
|
||||
// Skip excluded paths
|
||||
if (excludes.some((ex) => path.includes(ex.replace(/\*\*/g, "")))) {
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user