Skip to content

fix(build): Prevent release-please infinite loop on main branch #422

@WilliamBerryiii

Description

@WilliamBerryiii

Summary

When the release-please bot merges its PR to main, the main.yml workflow triggers again, running release-please in a loop. This wastes CI resources and can create confusing workflow runs.

Problem

The current main.yml workflow triggers on every push to main:

on:
  push:
    branches:
      - main

When release-please merges its PR (commits authored by hve-core-release-please[bot]), this triggers the workflow again, which runs all validation jobs and release-please again unnecessarily.

Root Cause

  • Commit author: hve-core-release-please[bot]
  • Commit message pattern: chore(main): release hve-core X.X.X
  • The workflow has no logic to detect and skip bot-authored commits

Proposed Solution

Add a gate job pattern to detect release-please bot commits and skip validation jobs:

jobs:
  should-run:
    name: Check Trigger Source
    runs-on: ubuntu-latest
    outputs:
      proceed: ${{ steps.check.outputs.proceed }}
    steps:
      - name: Check if release-please commit
        id: check
        run: |
          if [[ "${{ github.event.head_commit.author.name }}" == "hve-core-release-please[bot]" ]]; then
            echo "::notice title=Workflow Skipped::Release-please bot commit detected"
            echo "proceed=false" >> $GITHUB_OUTPUT
          else
            echo "proceed=true" >> $GITHUB_OUTPUT
          fi

  spell-check:
    needs: should-run
    if: needs.should-run.outputs.proceed == 'true'
    # ... existing config

Acceptance Criteria

  • Workflow does not run validation jobs when release-please bot commits to main
  • release-please job runs normally for human commits
  • Clear audit trail in Actions logs when workflow is skipped
  • No changes to release-please configuration or behavior

Research

Detailed research available at .copilot-tracking/research/2026-02-04-release-please-infinite-loop-prevention.md

Files to Modify

File Change
.github/workflows/main.yml Add gate job and conditional dependencies

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions