Release Management
Automate the release process: aggregate changelogs from commits, determine the version bump, update version files, tag, and publish.
Workflow​
runPipeline(
listCommitsSinceLastRelease
.then(allObject({
versionBump: iterate().map(classifyCommit).collect().then(determineVersionBump),
changelog: generateChangelog,
}))
.then(applyVersionBump)
.then(tryCatch(
(throwError) => buildAndTest.unwrapOr(throwError).drop()
.then(tagRelease)
.then(publish),
rollbackVersion,
)),
);
Stages​
- List commits — get all commits since the last release tag.
- Parallel analysis:
- Classify commits — each commit is categorized (feature, fix, breaking, chore). The results determine the version bump (major/minor/patch).
- Generate changelog — an LLM writes human-readable release notes from the commit list.
- Apply version bump — update
package.json,Cargo.toml, or whatever version files exist. - Build, test, tag, publish — wrapped in
tryCatchso failures roll back the version bump.
Key points​
allruns version analysis and changelog generation concurrently — they don't depend on each other.- Commit classification is per-commit via
.iterate().map(), so the agent sees one commit at a time. - The changelog agent sees all commits but doesn't classify them — it writes prose.
tryCatchensures a failed publish doesn't leave the repo in a half-released state.