Skip to content

ci: Automated canary release pipeline#11618

Merged
anthonyshew merged 6 commits intomainfrom
shew/release-every-canary
Feb 1, 2026
Merged

ci: Automated canary release pipeline#11618
anthonyshew merged 6 commits intomainfrom
shew/release-every-canary

Conversation

@anthonyshew
Copy link
Copy Markdown
Contributor

Summary

Adds an automated canary release pipeline that publishes to npm whenever PRs merge to main. This eliminates manual release steps for pre-release versions while maintaining the existing manual workflow for stable releases.

  • New turborepo-canary.yml workflow triggers on push to main
  • Refactored turborepo-release.yml to support workflow_call for reuse
  • Skip detection prevents infinite loops when release PRs merge back
  • Comprehensive documentation in RELEASE.md

Key Changes

New Canary Workflow:

  • Triggers on push to main when crates/**, packages/**, cli/**, or .github/** change
  • Skips when the push is from a release PR merge (prevents infinite loops)
  • Uses GitHub's concurrency to queue/squash rapid merges
  • Creates auto-merging PRs to land version bumps

Release Workflow Refactoring:

  • Added workflow_call trigger with inputs/outputs for reuse
  • Added is-canary flag to differentiate canary vs manual releases
  • Exports stage-branch, version, previous-tag, docs-url for caller

Security Hardening:

  • Fixed script injection by using environment variables instead of direct ${{ }} interpolation
  • Added version format validation to prevent command injection
  • Improved error handling with proper URL validation

Documentation:

  • Added comprehensive release process documentation
  • Added Troubleshooting & Recovery section covering failure scenarios
  • Added Security Considerations section

Testing

To verify the canary workflow:

  1. Trigger manually with dry_run: true to test without publishing
  2. Merge a small PR to main and observe the canary workflow

Reviewer Notes

The skip detection relies on matching github.actor == "github-actions[bot]" AND commit message starting with release(turborepo):. This prevents infinite loops when the auto-merge PR lands.

- Fix script injection in skip detection by using env vars instead of direct interpolation
- Add version format validation to prevent command injection
- Improve PR creation error handling with proper URL validation
- Add comprehensive Troubleshooting & Recovery section to RELEASE.md
- Fix incorrect documentation link for turborepo-release.yml
@anthonyshew anthonyshew requested a review from a team as a code owner February 1, 2026 14:00
@anthonyshew anthonyshew requested review from tknickman and removed request for a team February 1, 2026 14:00
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Feb 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
examples-basic-web Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-designsystem-docs Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-gatsby-web Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-kitchensink-blog Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-nonmonorepo Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-svelte-web Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-tailwind-web Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
examples-vite-web Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
turbo-site Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm
turborepo-test-coverage Ready Ready Preview, Comment, Open in v0 Feb 1, 2026 2:20pm

@ghost ghost added the area: ci Internal CI for vercel/turborepo label Feb 1, 2026
@anthonyshew anthonyshew changed the title feat: Automated canary release pipeline ci: Automated canary release pipeline Feb 1, 2026
@anthonyshew anthonyshew merged commit a0c22ca into main Feb 1, 2026
97 of 98 checks passed
@anthonyshew anthonyshew deleted the shew/release-every-canary branch February 1, 2026 14:25
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 1, 2026

Coverage Report

Metric Coverage
Lines 75.88%
Functions 46.75%
Branches 0.00%

View full report

anthonyshew pushed a commit that referenced this pull request Feb 1, 2026
## Canary Release

Versioned docs: https://v2-8-2-canary-3.turborepo.dev

### Included Changes

- 469f9dd - fix: Upgrade ts-jest to 29.4.6 to fix brace-expansion ReDoS
vulnerabilities (#11623) (#11623)
- af6aef8 - fix: Upgrade inquirer to 8.2.7 to fix tmp vulnerability
(#11622) (#11622)
- 73e1a65 - fix: Consolidate canary releases into release workflow for
npm trusted publishing (#11624) (#11624)
- e192b8e - fix: Upgrade diff to fix DoS vulnerabilities (#11621)
(#11621)
- c79e54e - fix: Upgrade rehype packages to fix mdast-util-to-hast
vulnerability (#11616) (#11616)
- aceb210 - fix: Pass secrets explicitly in canary workflow (#11620)
(#11620)
- d6ca8cd - fix: Add explicit secrets declarations to release
workflow_call trigger (#11619) (#11619)
- a0c22ca - ci: Automated canary release pipeline (#11618) (#11618)

---
Release PR for turborepo v2.8.2-canary.3

Co-authored-by: Turbobot <turbobot@vercel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci Internal CI for vercel/turborepo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant