-
Notifications
You must be signed in to change notification settings - Fork 170
ci(release): introduce new release workflow #3989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
This is exciting. One things I'd like to see, though I haven't looked deeply enough to see if this accomplishes it, is for the PR to be regenerated if more changes come in. That way we don't get one version bump per change but rather one per publish. |
There's a check to update the existing PR rather than make a new one. Would love to just use the changesets action because I'm sure I'm just reinventing the wheel in all the ways they already have. |
Implements 3-tier progressive fallback for GitHub's 65k character limit: - Tier 1: Full changelog with all package details - Tier 2: Package list only (no changelog content) - Tier 3: Minimal - package count with link to commit Prevents pipeline failures with large monorepo changelogs. Part of Phase 1 (Critical) - beachball workflow improvements.
- Add type guards for 404, network, and rate limit errors - Create custom NetworkError and RateLimitError classes - Update check-packages-need-publishing to use error type guards - Distinguish between expected 404s and actual failures - Provide clear, actionable error messages Part of Phase 2 (High Priority) - beachball workflow improvements.
- Auto-creates releases with changelog extraction - Creates git tags for published packages - Handles existing releases gracefully - Extracts changelog sections for each version - Provides detailed summary of successes/skips/errors Part of Phase 3 (Medium Priority) - beachball workflow improvements.
Version Bump Stage: - Add PR body size management with 3-tier fallback - Add pre-fetch existing PR before push (prevents corruption) - Add smart force-push vs fast-forward detection - Add sequential lock to prevent concurrent runs Publish Stage: - Add check for packages needing publishing - Add partial publish failure detection - Add NPM authentication pre-check - Add GitHub releases automation after publish - Add detailed logging for all operations Integrates all Phase 1, 2, and 3 improvements from changesets/action analysis.
- Add dedicated job to preview version bumps - Show which packages would be published - Run check-packages-need-publishing in dry-run mode - Provides early feedback on PR changes before merge Helps catch publishing issues early in PR review process.
Platforms Impacted
Description of changes
This is the first in a series of changes to redo the publish flow for FURN.
The current release uses beachball, which requires a CI workflow (in Azure Pipelines) that on every commit to main:
This workflow has two main issues:
To fix this, I propose a new workflow, very similar to Changesets as used by rnx-kit, except still using beachball under the hood.
The new workflow is as follows:
Developers in FURN still use the familiar change files, but now:
Verification
After this merges, I'd expect a PR to be generated.
Pull request checklist
This PR has considered (when applicable):