rtk-ai/rtk

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

Open

#805 opened on 2026年3月25日

GitHub で見る
 (2 comments) (0 reactions) (1 assignee)Rust (2,914 forks)batch import
area:cieffort-smallenhancementgood first issuehelp wantedpriority:medium

Repository metrics

Stars
 (48,085 stars)
PR merge metrics
 (平均マージ 11d 1h) (30d で 45 merged PRs)

説明

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

  • v0.31.0 worked because PR #704 was squash merged with feat: 9-tool AI agent support
  • v0.33.0 had to be released manually because PR #780 was merge committed with Next Release

コントリビューターガイド