mirror of
https://github.com/anomalyco/opencode.git
synced 2026-02-01 22:48:16 +00:00
ci: add failure case for changelog
This commit is contained in:
@@ -19,14 +19,7 @@ if (!Script.preview) {
|
||||
const log =
|
||||
await $`git log v${previous}..HEAD --oneline --format="%h %s" -- packages/opencode packages/sdk packages/plugin packages/tauri packages/desktop`.text()
|
||||
|
||||
const commits = log
|
||||
.split("\n")
|
||||
.filter((line) => line && !line.match(/^\w+ (ignore:|test:|chore:|ci:)/i))
|
||||
.join("\n")
|
||||
|
||||
const opencode = await createOpencode()
|
||||
const session = await opencode.client.session.create()
|
||||
console.log("generating changelog since " + previous)
|
||||
const commits = log.split("\n").filter((line) => line && !line.match(/^\w+ (ignore:|test:|chore:|ci:)/i))
|
||||
|
||||
const team = [
|
||||
"actions-user",
|
||||
@@ -41,20 +34,25 @@ if (!Script.preview) {
|
||||
"opencode-agent[bot]",
|
||||
]
|
||||
|
||||
const raw = await opencode.client.session
|
||||
.prompt({
|
||||
path: {
|
||||
id: session.data!.id,
|
||||
},
|
||||
body: {
|
||||
model: {
|
||||
providerID: "opencode",
|
||||
modelID: "gemini-3-flash",
|
||||
async function generateChangelog() {
|
||||
const opencode = await createOpencode()
|
||||
const session = await opencode.client.session.create()
|
||||
console.log("generating changelog since " + previous)
|
||||
|
||||
const raw = await opencode.client.session
|
||||
.prompt({
|
||||
path: {
|
||||
id: session.data!.id,
|
||||
},
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: `
|
||||
body: {
|
||||
model: {
|
||||
providerID: "opencode",
|
||||
modelID: "gemini-3-flash",
|
||||
},
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: `
|
||||
Analyze these commits and generate a changelog of all notable user facing changes, grouped by area.
|
||||
|
||||
Each commit below includes:
|
||||
@@ -62,7 +60,7 @@ if (!Script.preview) {
|
||||
- [areas: ...] showing which areas of the codebase were modified
|
||||
|
||||
Commits between ${previous} and HEAD:
|
||||
${commits}
|
||||
${commits.join("\n")}
|
||||
|
||||
Group the changes into these categories based on the [areas: ...] tags (omit any category with no changes):
|
||||
- **TUI**: Changes to "opencode" area (the terminal/CLI interface)
|
||||
@@ -105,20 +103,34 @@ if (!Script.preview) {
|
||||
- Added OIDC_BASE_URL support for custom GitHub App installations (@elithrar)
|
||||
</example>
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
.then((x) => x.data?.parts?.find((y) => y.type === "text")?.text)
|
||||
for (const line of raw?.split("\n") ?? []) {
|
||||
if (line.startsWith("- ")) {
|
||||
notes.push(line)
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
.then((x) => x.data?.parts?.find((y) => y.type === "text")?.text)
|
||||
opencode.server.close()
|
||||
return raw
|
||||
}
|
||||
|
||||
const timeout = new Promise<null>((resolve) => setTimeout(() => resolve(null), 120_000))
|
||||
const raw = await Promise.race([generateChangelog(), timeout])
|
||||
|
||||
if (raw) {
|
||||
for (const line of raw.split("\n")) {
|
||||
if (line.startsWith("- ")) {
|
||||
notes.push(line)
|
||||
}
|
||||
}
|
||||
console.log("---- Generated Changelog ----")
|
||||
console.log(notes.join("\n"))
|
||||
console.log("-----------------------------")
|
||||
} else {
|
||||
console.log("Changelog generation timed out, using raw commits")
|
||||
for (const commit of commits) {
|
||||
const message = commit.replace(/^\w+ /, "")
|
||||
notes.push(`- ${message}`)
|
||||
}
|
||||
}
|
||||
console.log("---- Generated Changelog ----")
|
||||
console.log(notes.join("\n"))
|
||||
console.log("-----------------------------")
|
||||
opencode.server.close()
|
||||
|
||||
const compare =
|
||||
await $`gh api "/repos/sst/opencode/compare/v${previous}...HEAD" --jq '.commits[] | {login: .author.login, message: .commit.message}'`.text()
|
||||
|
||||
Reference in New Issue
Block a user