Skip to content
Latchkey

semantic-release commits do not match the commit convention in CI

The @semantic-release/commit-analyzer maps commit messages to release levels using a convention (Angular / Conventional Commits by default). Free-form messages with no recognized type produce no release, even when the code changed meaningfully.

What this error means

semantic-release reports "no release" for commits like "update code" or "wip", while a "feat:" or "fix:" commit would have triggered one.

semantic-release
[semantic-release] Analyzing commit: update login page
[semantic-release] The commit should not trigger a release
[semantic-release] Analysis of 5 commits complete: no release

Common causes

Messages lack a conventional type prefix

Without feat:, fix:, or a BREAKING CHANGE: footer, the analyzer has nothing to map to a release level.

A different preset than the team writes for

The config uses the Angular preset but authors write for a different convention, so types are unrecognized.

How to fix it

Write conventional commit messages

  1. Prefix commits with a recognized type: feat, fix, perf, etc.
  2. Put breaking changes in a BREAKING CHANGE: footer for a major.
  3. Enforce the format with commitlint on pull requests.
commit messages
feat(auth): support SSO login
fix(api): return 404 for missing user

Match the preset to your convention

Set the preset the analyzer uses so your team-authored types are recognized.

.releaserc plugins
["@semantic-release/commit-analyzer", { "preset": "conventionalcommits" }]

How to prevent it

  • Adopt Conventional Commits and enforce with commitlint.
  • Align the analyzer preset with the convention you write for.
  • Keep squash titles conventional so merges still trigger releases.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →