Skip to content

Release-Please v4 publish workflow not triggering automatically - requires manual re-tagging #35

@gnapse

Description

@gnapse

Problem Description

Our npm publishing workflow systematically fails to trigger automatically when Release-Please creates tags, requiring manual re-tagging of the same commit to successfully publish packages to npm.

Observed Behavior

  1. ✅ Release-Please creates proper release commits and tags (e.g., v2.2.0)
  2. ❌ Publish workflow (on: push: tags: - "v*") does not trigger automatically
  3. ✅ Manual re-tagging of the same commit immediately triggers the workflow and succeeds
  4. 🔄 This pattern has been consistent across multiple releases (v2.0.1, v2.1.0, v2.2.0)

Root Cause Analysis

Based on research and testing, this appears to be caused by multiple GitHub Actions limitations:

1. GitHub Actions Fundamental Limitation

  • Actions in a workflow run can't trigger new workflow runs when using GITHUB_TOKEN
  • Release-Please uses GITHUB_TOKEN to create tags
  • The publish workflow listening for push: tags: doesn't get triggered
  • Manual re-tagging works because it's done by a different actor

2. Webhook Rate Limiting (2024)

  • GitHub introduced new webhook rate limits: 1500 triggered events per repository every 10 seconds
  • Release-Please may hit this limit during rapid commit/release/tag creation
  • This explains the intermittent failures

3. Timing Race Conditions

  • Release-Please creates commits, releases, and tags in rapid succession
  • GitHub's webhook delivery system can't keep up with the sequence
  • Manual re-tagging gives webhooks time to process properly

Evidence

  • Search results show this is a known issue affecting many projects using Release-Please v4
  • GitHub community discussions confirm workflows cannot reliably trigger other workflows
  • The issue has been reported across 2024-2025 timeframe

Potential Solutions

Option 1: Use Personal Access Token (PAT)

Replace GITHUB_TOKEN with a PAT in release-please workflow:

- uses: googleapis/release-please-action@v4
  with:
    token: ${{ secrets.RELEASE_PLEASE_TOKEN }}  # PAT instead of GITHUB_TOKEN

Option 2: Use workflow_run Event

Change publish workflow to trigger on workflow completion:

on:
  workflow_run:
    workflows: ["Release Please"]
    types: [completed]

Option 3: Combine Workflows

Move npm publishing into the release-please workflow itself using the releases_created output.

Option 4: Add Workflow Dispatch Trigger

Add manual trigger capability as fallback:

on:
  push:
    tags:
      - "v*"
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag to publish'
        required: true

Current Workaround

Until a permanent solution is implemented, the current workaround is:

# Delete and re-create the tag
git tag -d v<version>
git push origin :v<version>
git tag v<version> <commit-sha>
git push origin v<version>

References

Next Steps

We should implement one of the proposed solutions to eliminate the need for manual re-tagging on every release.

Metadata

Metadata

Assignees

No one assigned

    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