-
Notifications
You must be signed in to change notification settings - Fork 10
Description
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
- ✅ Release-Please creates proper release commits and tags (e.g.,
v2.2.0
) - ❌ Publish workflow (
on: push: tags: - "v*"
) does not trigger automatically - ✅ Manual re-tagging of the same commit immediately triggers the workflow and succeeds
- 🔄 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
Labels
No labels