Skip to content

Release Steps

This page explains the release lifecycle that runs when semantic-release is executed. If you are new to the overall model, read How it Works first.

After tests pass and semantic-release starts, it evaluates the repository state and executes release steps in a fixed order.

StepPurpose
Verify ConditionsConfirm required configuration and credentials are available.
Get Last ReleaseFind the most recent release by reading Git tags/history.
Analyze CommitsDetermine whether to release and which version type to produce.
Verify ReleaseValidate the computed release metadata before publishing.
Generate NotesBuild release notes for the commits included in this release.
Create Git TagTag the release version in Git.
PreparePerform pre-publish updates such as assets or files.
PublishPublish artifacts to configured destinations and channels.
NotifyReport success or failure through provider integrations.

The order is important. A failure in an early step prevents later steps from running.

Each lifecycle step is implemented by plugins. Some steps are optional, some are required for a valid release pipeline.

  • analyzeCommits is required to decide version impact
  • Most other steps depend on which plugins you configure
  • If multiple plugins implement the same step, they execute in plugin order

For plugin responsibilities and execution details, see Plugins.

The analyzeCommits step is the decision point for whether a release is created.

  • No relevant commits since the last release means no new release
  • fix commits typically result in a patch release
  • feat commits typically result in a minor release
  • BREAKING CHANGE results in a major release

Commit parsing depends on your configured commit analyzer and presets. See How it Works for the conceptual model and Configuration for setup details.

The same steps run regardless of branch type, but release outcomes vary with branch strategy and channel configuration.

  • Release branches publish regular versions
  • Maintenance branches publish within defined ranges
  • Pre-release branches publish pre-release identifiers

See Supported Branching Models and Release Workflow Configuration for branch behavior and constraints.

To keep releases deterministic, run semantic-release only in CI and only after all required checks pass.

For implementation guidance, see: