-
Notifications
You must be signed in to change notification settings - Fork 89
Releasing
When performing a scheduled release, first check in with Franco (or Matt if Franco isn't available) and Kitty to see if there are any pull requests that need to be merged before releasing. Once they say we are ready for release, follow the steps below. If you run into errors or other issues during the release steps, you can reach out to Ben for help (or Franco if Ben isn't available).
When releasing during normal work hours, you should block people from merging PRs while you're releasing. To "block" PRs do the following (requires admin privilege):
-
Let the team know via Teams in the
Core - Releases🔒 channel (@ the channel for visibility) -
Go to the repo settings -> "Branches"
-
Under "Branch protection rules" edit the entry for
main -
Under "Require approvals" change the number from 1 to 6 and save the changes.

To release a of Calcite Components you must be a member of the admin team for Calcite Components. Then follow these steps
-
Review the PR created by
release-please(titled "chore: release main") to make sure the changelog(s) and package versioning looks correct -
add the
skip visual snapshotslabel -
Make sure rest of the PR checks are passing, specifically e2e tests
-
Approve and install the PR (you will need to use Admin privilege to override the 6 approval rule added above)
-
Wait for the release's Deploy Latest action to finish.
-
Ensure the released package(s) were deployed to NPM and that GitHub Releases were created
- You can check the NPM version on the website or on the CLI with:
npm view @esri/calcite-components version
- You can check the NPM version on the website or on the CLI with:
-
Reach out to Ben for investigation if something went wrong (this is unlikely now that everything is completely automated)
-
Change the
mainbranch's required approvals back to 1 and save the changes (see the section above)
A GitHub Action will automatically bump the versions in calcite-components-examples and open a PR on Wednesday night after the release. Make sure to test the samples when there are major changes. Here is the script if any changes are needed.
next releases are useful for testing incoming changes between releases. They are deployed by the CI and happen if changes between releases have 'deployable' commits. A deployable commit is:
- a commit of type
featorfix - a commit that introduces a breaking change
next releases should be fully automated by CI. If you need to disable next releases, you can do so by setting the NEXT_RELEASE_ENABLED GitHub Secret to anything but true. If you need to manually release next, you can run the following commands from the root directory:
npm run clean
npm install
npm test
npm run version:next
# verify the changelog and package versions look correct
npm run publish:next
npm run util:push-tagsNOTE: If need to change anything after running
version:next, make sure to amend the previous commit and recreate all of the tags before continuing.
The following are best practices for limiting regressions and releasing patches when necessary.
- When installing big items, author(s) should post in the internal channel (Core - Releases 🔒) and public channel (Calcite Components) to keep an eye out for issues related to the changes. This should happen after the item's PR is merged and
nextis deployed so users can start testing early.
- The soonest a patch can occur after a release is one week. This is to allow enough time for users to find any other regressions so that we don't need to release multiple patches.
- Once we decide a patch is needed, notify the public channel (Calcite Components) about the known issues and plans for an incoming patch.
- Inform the team in the internal release channel to hold off on risky installs, revert any that landed, and to (re)install after the patch.
- Check-in daily with the team in the internal release channel about known issues, reported regressions, and fix statuses.
- Remind the team two days before and the day of the scheduled patch to make sure everything is included.
- Monorepo
- Global Config
- Coding Conventions
- Testing Conventions
- Patching Packages
- Deprecation Guidance
- Continuous Integration
- GitHub Secrets
- Troubleshoot Build Errors
- Tips and Tricks
- NPM FAQ
- Issue Verification
- Wiki Conventions
- Styling Conventions
- CSS Transitions
- Restricting User Input
- ItemHidden Property
- What Happens When You Scale Vector-Based Icons
- Internationalization
- Introduction
- Getting Started
- Naming Schema
- Semantic Tokens
- Component Tokens
- Web Platform
- Build
- Documentation
- Testing
- Contributing