Release Pipeline System
Homeboy release automation is a local-first planner/executor for component releases. It turns component metadata, conventional commits, extension release actions, and git state into a reviewable release plan.
Current Model
The release command is intentionally not a generic shell workflow runner. Core owns the release graph and safety checks; extensions contribute domain-specific prepare, package, and publish behavior through release actions declared in their manifests.
component config + git history
|
v
release planner
|
+-- core steps: preflight, changelog, version, git, deploy, cleanup
|
+-- extension actions: prepare, package, publish.<target>
v
structured release plan + execution resultsCore Step Kinds
Common executable step kinds include:
preflight.default_branchpreflight.git_identitypreflight.working_treepreflight.remote_syncpreflight.bump_policypreflight.lintpreflight.testpreflight.changelog_bootstrapchangelog.finalizeversiongit.commitpackageartifacts.inventorygit.taggit.pushgithub.releasedeploycleanuppost_releasepublish.<target>
Some preflight and changelog planning steps are plan-only. They appear in the release plan for visibility but are not executed as mutating steps.
Extension Boundary
Extensions should own ecosystem-specific release semantics:
- how to package a Rust crate, WordPress plugin, Node project, or Swift artifact
- how to publish to GitHub, Homebrew, crates.io, npm, or another registry
- how to run platform-specific prepare checks before packaging
- how to report skipped or auth-blocked publish attempts in a structured way
Core should own generic sequencing, state, git operations, output contracts, and failure handling.
Commands
Preview a release without executing mutating steps:
homeboy release --dry-run <component_id>Execute the release plan:
homeboy release <component_id>Useful companion commands:
homeboy changes <component_id>
homeboy version show <component_id>
homeboy changelog show <component_id>Execution Behavior
Release execution:
- Resolves the component and extension context.
- Builds a release plan from git history, component metadata, and extension capabilities.
- Runs executable steps in dependency order.
- Stops on failure and returns structured step results.
- Leaves plan-only steps visible for review without executing them.
Release requires a clean working tree except for files the release process owns, such as version targets and changelog targets.
Historical Terminology
Older docs and changelog entries may mention extension_run,
extension_action, or generic extension.run release steps. Treat those as
historical terminology unless the current release planner emits those step kinds.
Current release execution is built around known core step kinds and declared
extension release actions.