docs/maintenance/Releases.mdx
Users > Releases describes how our automatic releases are done. There is generally no maintenance activity we need to take for the weekly releases.
However, there are two kinds of releases we infrequently go through that each require manual effort.
Per Users > Releases > Major Releases, we infrequently release major versions with accumulated breaking changes.
recommended sets for 5.0.0].CHANGELOG.md files) that mention deprecated code and/or a todo for the new major version, and create corresponding issues in that milestone.
/deprecated|todo/i/v8/i/todo.*v?8/imain in the project repository (not a personal fork):
v${major}v${major}-canary-auto-releasev${major}-canary-auto-release to main modifying ci.yml workflow and README.md [example: chore: add auto-canary release for v6]:
ci.yml:
push: > branches: at the beginning of the file, add a - v${major} list item.publish_canary_version_v${major} step the same as publish_canary_version except:
if condition's branch check to: if: github.ref == 'refs/heads/v${major}'.npx nx release publish --tag rc-v${major} --verbose.README.md:
v${major}--typescript-eslint.netlify.app preview deploy environment on Netlify that you create for the branch.docusaurus.config.mts: updating the supportedMajorVersion variablemain once reviewed and rebase the v${major} branch.v${major} branch (GitHub doesn't by default): see close-v8-issues.yml for referenceMajor versions are our only real chance to change the values in our stable recommended* and stylistic* configs.
In parallel to the general PR flow of the major version:
v${major} channel on the typescript-eslint Discordv${major} branch making the corresponding changes [example: Configs: Apply changes to config presets for v6]In parallel to the shared config changes work, make sure to test out the beta version on popular community projects willing to try it out.
v${major} branch, send a draft PR to each project with the new beta version.If there are behavioral breaking changes in the new major version, consider also creating a tracking issue showing support across popular plugins. To do this:
There may be additional changes to preset configs discovered as part of the community testing. If that's the case:
If possible, we prefer to avoid making a second round of config changes. These should only be done for feedback that consistently comes up in community testing.
v${major} to main [example: v6.0.0].v${major} branch.
BREAKING CHANGE:, and second line should briefly summarize the changes.BREAKING CHANGE: as the first line in order for nx release to recognize it as a breaking change in the release notes. If you miss this it just means more manual work when writing the release documentation.v${major} branch.v${major} branch that adds the old major version to Users > Releases > Old Release Documentationv${major} branch.main by temporarily enabling that merge setting for the repo.:::note
Non-breaking changes can be merged to main or the major branch.
They don't need any special treatment.
:::
nx release will automatically generate the release notes on GitHub, however this will be disorganized and unhelpful for users. We need to reorganize the release notes so that breaking changes are placed at the top to make them most visible. If any migrations are required, we must list the steps to make it easy for users.
CURRENT_MAJOR_VERSION environment variable to the new major version integer, such as 9v${major} branches listed in Users > Releases > Old Release DocumentationPer Users > Releases > Out-of-Band Releases, we may manually trigger a new release for a rare emergency such as a critical regression. If that happens: