mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-28 19:11:03 +08:00
chore(jetbrains): open CLI pin bump PR after release
This commit is contained in:
@@ -35,7 +35,9 @@ concurrency: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.version || inpu
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
issues: write # kilocode_change - label automated JetBrains CLI pin bump PRs
|
||||
packages: write
|
||||
pull-requests: write # kilocode_change - create automated JetBrains CLI pin bump PRs
|
||||
|
||||
jobs:
|
||||
version:
|
||||
|
||||
@@ -6,6 +6,7 @@ import { parseArgs } from "util"
|
||||
|
||||
const repo = process.env.GH_REPO ?? process.env.GITHUB_REPOSITORY ?? "Kilo-Org/kilocode"
|
||||
const file = "packages/kilo-jetbrains/package.json"
|
||||
const label = "jetbrains-cli-pin-bump"
|
||||
const asset = [
|
||||
"kilo-darwin-arm64.zip",
|
||||
"kilo-darwin-x64.zip",
|
||||
@@ -101,10 +102,12 @@ async function pr(version: string) {
|
||||
const view = await $`gh pr view ${branch} --repo ${repo} --json url --jq .url`.quiet().nothrow()
|
||||
if (view.exitCode === 0 && view.stdout.toString().trim()) {
|
||||
await $`gh pr edit ${branch} --repo ${repo} --title ${title} --body ${desc}`
|
||||
await tag(branch)
|
||||
console.log(view.stdout.toString().trim())
|
||||
return
|
||||
}
|
||||
const url = await $`gh pr create --repo ${repo} --base main --head ${branch} --title ${title} --body ${desc}`.text()
|
||||
await tag(branch)
|
||||
console.log(url.trim())
|
||||
}
|
||||
|
||||
@@ -138,3 +141,11 @@ async function ensure(branch: string, sha: string) {
|
||||
}
|
||||
await $`gh api --method POST ${`repos/${repo}/git/refs`} -f ref=${`refs/heads/${branch}`} -f sha=${sha}`.quiet()
|
||||
}
|
||||
|
||||
async function tag(branch: string) {
|
||||
await $`gh label create ${label} --repo ${repo} --color 1D76DB --description ${"JetBrains pinned CLI version bump"}`.quiet().nothrow()
|
||||
const result = await $`gh pr edit ${branch} --repo ${repo} --add-label ${label}`.quiet().nothrow()
|
||||
if (result.exitCode !== 0) {
|
||||
console.warn(`Warning: failed to add ${label} label to ${branch}`)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,6 +188,8 @@ The JetBrains plugin has two independent CLI controls. Use the commands below di
|
||||
|
||||
`set-pin.ts` refuses versions whose CLI release or runtime assets do not exist, so it cannot create a pin that would 404 during runtime download.
|
||||
|
||||
Stable CLI releases also attempt this PR automatically after publishing and label it `jetbrains-cli-pin-bump`. The CLI release workflow logs the PR URL when creation succeeds and logs a warning without failing the release if PR creation fails.
|
||||
|
||||
For the full release process (resolve version, pin verification, prepare, changelog, publish), load the `release-jetbrains` skill: `.kilo/skills/release-jetbrains/SKILL.md`.
|
||||
|
||||
### Server Protocol
|
||||
|
||||
@@ -48,6 +48,8 @@ bun .kilo/skills/release-jetbrains/script/set-pin.ts --latest --pr
|
||||
|
||||
Merge the generated pin PR first, then re-run `check-pin.ts` and dispatch prepare. Do not dispatch prepare from a local-only pin edit.
|
||||
|
||||
Stable CLI releases also try to open this pin bump PR automatically after publishing. The PR is labeled `jetbrains-cli-pin-bump`. Release publishing does not fail if creating the PR fails; inspect the publish log for either the PR URL or the warning with manual follow-up instructions.
|
||||
|
||||
## Create Release Tag And PR
|
||||
|
||||
1. Open the GitHub Actions workflow:
|
||||
|
||||
@@ -6,6 +6,11 @@ import { fileURLToPath } from "url"
|
||||
|
||||
console.log("=== publishing ===\n")
|
||||
|
||||
// kilocode_change start - keep JetBrains CLI pin reviewable outside CLI release commits
|
||||
const jetbrainsPkg = fileURLToPath(new URL("../packages/kilo-jetbrains/package.json", import.meta.url))
|
||||
const jetbrainsPin = await Bun.file(jetbrainsPkg).text()
|
||||
// kilocode_change end
|
||||
|
||||
// kilocode_change start - consume changesets on the publish runner so changelog
|
||||
// changes are included in the release commit. Previously this ran in the
|
||||
// version job on a separate runner whose workspace was discarded.
|
||||
@@ -42,6 +47,13 @@ const pkgjsons = await Array.fromAsync(
|
||||
).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist")))
|
||||
|
||||
for (const file of pkgjsons) {
|
||||
// kilocode_change start - create a follow-up PR for JetBrains CLI pin bumps
|
||||
if (file === jetbrainsPkg) {
|
||||
console.log("preserved JetBrains CLI pin:", file)
|
||||
await Bun.file(file).write(jetbrainsPin)
|
||||
continue
|
||||
}
|
||||
// kilocode_change end
|
||||
let pkg = await Bun.file(file).text()
|
||||
pkg = pkg.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`)
|
||||
console.log("updated:", file)
|
||||
@@ -122,3 +134,34 @@ await import(`../packages/kilo-vscode/script/publish.ts`)
|
||||
|
||||
const dir = fileURLToPath(new URL("..", import.meta.url))
|
||||
process.chdir(dir)
|
||||
|
||||
// kilocode_change start - non-blocking JetBrains CLI pin bump PR after stable CLI release
|
||||
await createJetbrainsPinPr()
|
||||
// kilocode_change end
|
||||
|
||||
// kilocode_change start
|
||||
async function createJetbrainsPinPr() {
|
||||
console.log("\n=== jetbrains cli pin bump pr ===\n")
|
||||
if (!Script.release) {
|
||||
console.log("Skipping JetBrains CLI pin bump PR: not a release build")
|
||||
return
|
||||
}
|
||||
if (Script.preview) {
|
||||
console.log(`Skipping JetBrains CLI pin bump PR for pre-release v${Script.version}`)
|
||||
return
|
||||
}
|
||||
const result = await $`bun .kilo/skills/release-jetbrains/script/set-pin.ts --version ${Script.version} --pr`.nothrow()
|
||||
const out = result.stdout.toString().trim()
|
||||
const err = result.stderr.toString().trim()
|
||||
if (result.exitCode === 0) {
|
||||
if (out) console.log(out)
|
||||
const url = out.match(/https:\/\/github\.com\/\S+\/pull\/\d+/)?.[0]
|
||||
if (url) console.log(`::notice title=JetBrains CLI pin bump PR::${url}`)
|
||||
return
|
||||
}
|
||||
console.warn("JetBrains CLI pin bump PR creation failed; release will continue.")
|
||||
if (out) console.warn(out)
|
||||
if (err) console.warn(err)
|
||||
console.warn("::warning title=JetBrains CLI pin bump PR failed::Release completed, but the JetBrains CLI pin bump PR was not created. Check the logs above and create it manually if needed.")
|
||||
}
|
||||
// kilocode_change end
|
||||
|
||||
Reference in New Issue
Block a user