refactor(release): simplify detached publish flow
Keep the detached release commit and retry-safe package publishes, but drop the draft and tag reuse logic so the release workflow stays focused on preventing dev rewrites while syncing version files back onto the latest dev tip.
This commit is contained in:
+5
-29
@@ -5,33 +5,6 @@ import { $ } from "bun"
|
||||
|
||||
const output = [`version=${Script.version}`]
|
||||
const sha = process.env.GITHUB_SHA ?? (await $`git rev-parse HEAD`.text()).trim()
|
||||
const repo = process.env.GH_REPO
|
||||
|
||||
async function releaseView() {
|
||||
if (repo) return await $`gh release view v${Script.version} --json tagName,databaseId --repo ${repo}`.json()
|
||||
return await $`gh release view v${Script.version} --json tagName,databaseId`.json()
|
||||
}
|
||||
|
||||
async function ensureRelease(notesFile?: string) {
|
||||
const existing = repo
|
||||
? await $`gh release view v${Script.version} --json tagName,databaseId --repo ${repo}`.nothrow()
|
||||
: await $`gh release view v${Script.version} --json tagName,databaseId`.nothrow()
|
||||
if (existing.exitCode === 0) return await releaseView()
|
||||
if (notesFile) {
|
||||
if (repo) {
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}" --notes-file ${notesFile} --repo ${repo}`
|
||||
return await releaseView()
|
||||
}
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}" --notes-file ${notesFile}`
|
||||
return await releaseView()
|
||||
}
|
||||
if (repo) {
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}" --repo ${repo}`
|
||||
return await releaseView()
|
||||
}
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}"`
|
||||
return await releaseView()
|
||||
}
|
||||
|
||||
if (!Script.preview) {
|
||||
await $`bun script/changelog.ts --to ${sha}`.cwd(process.cwd())
|
||||
@@ -42,11 +15,14 @@ if (!Script.preview) {
|
||||
const dir = process.env.RUNNER_TEMP ?? "/tmp"
|
||||
const notesFile = `${dir}/opencode-release-notes.txt`
|
||||
await Bun.write(notesFile, body)
|
||||
const release = await ensureRelease(notesFile)
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}" --notes-file ${notesFile}`
|
||||
const release = await $`gh release view v${Script.version} --json tagName,databaseId`.json()
|
||||
output.push(`release=${release.databaseId}`)
|
||||
output.push(`tag=${release.tagName}`)
|
||||
} else if (Script.channel === "beta") {
|
||||
const release = await ensureRelease()
|
||||
await $`gh release create v${Script.version} -d --target ${sha} --title "v${Script.version}" --repo ${process.env.GH_REPO}`
|
||||
const release =
|
||||
await $`gh release view v${Script.version} --json tagName,databaseId --repo ${process.env.GH_REPO}`.json()
|
||||
output.push(`release=${release.databaseId}`)
|
||||
output.push(`tag=${release.tagName}`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user