Skip to content

ci: enforce conventional commit format on PR titles to prevent release-please failures #805

@pszymkowiak

Description

@pszymkowiak

Problem

Release-please stopped creating releases after v0.31.0 because merge commits on master had non-conventional titles like Next Release or Release v0.31.0 — develop → master (#666). Release-please logs: commit could not be parsed: unexpected token.

This caused:

  • No stable release for weeks (stuck at 0.31.0)
  • Manual release needed for 0.33.0
  • Homebrew-core stuck at old version
  • User confusion about versions

Solution

Add a CI check that blocks merge if the PR title doesn't match conventional commit format:

^(feat|fix|chore|docs|ci|refactor|perf|test|build|style)(\(.+\))?!?: .+

Where to enforce

  • All PRs targeting master — must be feat:, fix:, chore:, etc.
  • All PRs targeting develop — same rule (so develop → master squash merges are already compliant)

Implementation

GitHub Action using amannn/action-semantic-pull-request or similar:

name: PR Title Check
on:
  pull_request:
    types: [opened, edited, synchronize]
    branches: [master, develop]

jobs:
  check-title:
    runs-on: ubuntu-latest
    steps:
      - uses: amannn/action-semantic-pull-request@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Also document

  • develop → master must be squash merged (not merge commit)
  • The squash title becomes the commit message on master
  • Release-please parses this commit message to determine version bump

Context

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions