Skip to content

Commit 5300474

Browse files
committed
update release process instructions.
1 parent f131ff0 commit 5300474

File tree

1 file changed

+21
-82
lines changed

1 file changed

+21
-82
lines changed

RELEASE.md

+21-82
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ release.
88
There are four release channels, `lts`, `release`, `beta` and `canary`.
99
Each has it's own section below.
1010

11-
In this guide, we are assuming that the remote `origin` is `[email protected]:emberjs/data.git`
11+
In this guide, we are assuming that the remote `origin` is `[email protected]:emberjs/data.git`,
12+
this remote needs to exist and `origin/master` `origin/beta` `origin/release` etc. need to be the upstreams of the local `master` `beta` `release` branches etc.
1213

1314
## Getting Setup To Do A Release
1415

@@ -18,7 +19,9 @@ In order to release `ember-data` you must first ensure the following things:
1819
- You have an account on `npm` and belongs to the `ember-data` organization on NPM
1920
- You have `publish` rights within the `ember-data` organization on NPM
2021
- You have configured your NPM account to use `2fa` (two factor authentication)
21-
- You have installed `pnpm` and `node` globally
22+
- You have logged into your NPM account on your machine (typically sessions preserve nearly forever once you have)
23+
- You have configured `GITHUB_AUTH` token for `lerna-changelog` to be able to gather info for the release notes.
24+
- You have installed `pnpm` and `node` globally (or better, via `volta`)
2225

2326
## Release Order
2427

@@ -38,7 +41,7 @@ Twitter the Crosslinking the announcement to the following Discord channels.
3841
- [#dev-ember-data](https://discordapp.com/channels/480462759797063690/480501977931972608)
3942
- [#ember-data](https://discordapp.com/channels/480462759797063690/486549196837486592)
4043

41-
### LTS
44+
### LTS Release
4245

4346
1. Checkout the correct branch
4447

@@ -61,14 +64,13 @@ Twitter the Crosslinking the announcement to the following Discord channels.
6164

6265
2. Generate the Changelog
6366

67+
> Note: If this is the first release of the LTS and there are no changes, just add an entry for the next patch version stating we are promoting the release to LTS.
68+
6469
The Changelog is generated with [lerna-changelog](https://github.com/lerna/lerna-changelog).
6570

66-
The primary task prior to generating the changelog is confirming that all pull requests that have been merged since the
67-
last release have been labeled with the appropriate lerna-changelog labels and the titles have been updated to ensure
68-
they represent something that would make sense to our users. Some great information on why this is important can be
69-
found at keepachangelog.com, but the overall guiding principle here is that changelogs are for humans, not machines.
71+
The changelog is generated based on labels applied to PRs since the last release. These labels are configured in the root `package.json`. Before merging PRs reviewers should always ensure a meaningful title for the changelog exists.
7072

71-
For the first release of an LTS, `previous-version` will be the last released version of the `release` channel.
73+
For the first release of an LTS, `previous-version` will be the last released version of the `release` channel: e.g. `v4.8.1`
7274

7375
For subsequent versions it will be whatever version number we previously published for this LTS.
7476

@@ -106,7 +108,7 @@ git push origin lts-<majorVersion>-<minorVersion> // Note: alternatively, you ca
106108
- Edit the tag, adding a meaningful title and attaching the changelog (see other releases for examples)
107109
- Publish the release!
108110

109-
### Release
111+
### Latest / Stable Release
110112

111113
1. Checkout the `release` branch and ensure it is in-sync with `origin/release`.
112114

@@ -131,33 +133,11 @@ git push origin lts-<majorVersion>-<minorVersion> // Note: alternatively, you ca
131133
git reset --hard origin/release;
132134
```
133135

134-
2. Update associated lockstep dependencies
135-
136-
**For our first release of the cycle only, we must also update our test harness:**
137-
138-
a. ensure that the `ember-source` version in `package.json` and relevant `packages/` matches only the minor range for the `ember-data` version we are releasing
139-
140-
E.G. `"ember-data": "3.4.1"` should have `"ember-source": "~3.4.0"`. For betas/canary, pointing at the last minor release is OK.
141-
142-
See https://github.com/emberjs/data/issues/5607 for the importance of this step.
143-
144-
b. ensure that the last two LTS releases of Ember (and only the last two) are included in `ember-try.js`.
145-
146-
See https://github.com/emberjs/data/issues/5607 for the importance of this step.
147-
148-
c. ensure the same for `azure-pipelines.yml`
149-
d. ensure the same for `.github/workflows/main.yml`
150-
151-
3. Delete the Beta Changelog
152-
153-
If this is the first stable release for this major/minor, in `CHANGELOG.md` delete
154-
the `beta` version entries associated with this release.
155-
156-
4. Generate the Changelog
136+
2. Generate the Changelog
157137

158138
IT IS IMPORTANT THAT ALL CHANGES ARE ON THE REMOTE BRANCH SPECIFIED BY HEAD
159139

160-
`previous-version` will be whatever version we previously published as a `release`
140+
`previous-version` will be whatever version we previously published as a `release`. E.g. if our last release was `4.8.4` and now we are publishing `4.9.0` then we would use `--from=v4.8.4`
161141

162142
```
163143
pnpm exec lerna-changelog --from=PREVIOUS_VERSION_TAG
@@ -174,13 +154,6 @@ git push origin lts-<majorVersion>-<minorVersion> // Note: alternatively, you ca
174154
git push origin release;
175155
```
176156

177-
Note it is prudent to make a PR to release to make sure there are no errors.
178-
179-
```
180-
git add CHANGELOG.md;
181-
git commit -m "Update Changelog for v<new-version>";
182-
git push origin name/release-new-version;
183-
184157
5. Publish the release
185158

186159
```
@@ -195,7 +168,9 @@ Note it is prudent to make a PR to release to make sure there are no errors.
195168
- Edit the tag, adding a meaningful title and attaching the changelog (see other releases for examples)
196169
- Publish the release!
197170

198-
### Beta
171+
### Manual Beta Releases
172+
173+
> Note: Most Beta Releases should be handled by the `Canary-Mirror-Beta Release` workflow, which should be manually triggered from the actions page.
199174
200175
1. Checkout the `#beta` branch and ensure it is in-sync with `origin/beta`.
201176

@@ -220,48 +195,12 @@ Note it is prudent to make a PR to release to make sure there are no errors.
220195
git reset --hard origin/beta;
221196
```
222197

223-
2. Generate the Changelog
224-
225-
IT IS IMPORTANT THAT ALL CHANGES ARE ON THE REMOTE BRANCH SPECIFIED BY HEAD
226-
227-
```
228-
pnpm exec lerna-changelog --from=PREVIOUS_VERSION_TAG
229-
```
230-
231-
- prepend a new section title for this version with Today's date to `CHANGELOG.md`
232-
- insert changelog script output to `CHANGELOG.md` underneath this new section title
233-
- edit changelog output to be as user-friendly as possible (drop [INTERNAL] changes, non-code changes, etc.)
234-
- commit the changelog and push the change upstream
235-
236-
```
237-
git add CHANGELOG.md;
238-
git commit -m "Update Changelog for v<new-beta-version>";
239-
git push origin beta;
240-
```
241-
242-
Note it is prudent to make a PR to beta to make sure there are no errors.
243-
244-
```
245-
git add CHANGELOG.md;
246-
git commit -m "Update Changelog for v<new-beta-version>";
247-
git push origin name/beta-new-beta-version;
248-
249-
3. Publish the weekly beta
198+
2. Publish the weekly beta
250199

251200
```
252201
node ./scripts/publish.js beta
253202
```
254-
255-
4. Update the Release Notes on Github
256-
257-
- Visit [Ember Data Releases](https://github.com/emberjs/data/releases)
258-
- Click on the "more recent tags"
259-
- Click on the tag just published
260-
- Edit the tag, adding a meaningful title and attaching the changelog (see other releases for examples)
261-
- Click pre-release for beta releases
262-
- Publish the release!
263-
264-
### Canary
203+
### Canary Releases
265204

266205
1. Checkout the `#master` branch and ensure it is in-sync with `origin/master`.
267206

@@ -297,9 +236,9 @@ Congrats, you are finished!
297236

298237
#### Canary Auto Publish
299238

300-
New canary versions are published to npm every Wednesday at 12pm PST by the `Alpha Release` GitHub action.
301-
It will always increment the pre-release version of what's currently in the root `package.json`. For example from `3.25.0-alpha.1`
302-
to `3.25.0-alpha.2`. **It requires a human to manually bump minor and major versions and publish**.
239+
New canary versions are published to npm every Tuesday and Friday at 12pm PST by the `Alpha Release` GitHub action. They can also be published using the workflow trigger.
240+
241+
It will always increment the pre-release version of what's currently in the root `package.json`. For example from `3.25.0-alpha.1` to `3.25.0-alpha.2`. **It requires a human to manually bump minor and major versions and publish**.
303242

304243
To try out the script that will be executed in the GitHub action, use:
305244
`node scripts/publish.js canary --dryRun --force --skipSmokeTest`. The `--dryRun` param will skip auto committing the

0 commit comments

Comments
 (0)