- 6-week release cycle
- weekly beta
- Channels
- Release (stable)
- Beta
- Canary
- SemVer
- Patch
- Minor (point)
- Major
- Check out
beta
branch andgit pull
- Make sure any master commits that are conceptually
[{BUGFIX,DOC} {beta,release}]
are cherry-picked. git push origin beta
, andlet ciBranch = kick off a CI build
PRIOR_VERSION=v2.5.0-beta.1 ./bin/changelog.js | uniq | pbcopy
- Open
CHANGELOG.md
, paste in the results of the previous script, and clean it up for human-readability.- e.g. [BUGFIX beta] -> [BUGFIX], [DEPRECATE beta] -> [DEPRECATE], ...
- Revert [BUGFIX ...] -> [BUGFIX] Revert ...
- rm [DOC] (usually)
- rm other trivial things
- Backport CHANGELOG to master
await ciBranch
- if CI succeeds, process
- if CI fails and it's a fix that doesn't need to be on master (e.g. linting or merge conflicts accidentally checked in), fix and retry.
- otherwise, start over
- Update
package.json
andVERSION
file to use new version number - git add/commit -m "Release v2.5.0-beta.2."
git tag v2.5.0-beta.2
git push origin v2.5.0-beta.2
, andlet ciTag = kick off a CI build
(to produce the assets)git push origin beta
git checkout beta
rm -rf dist && mkdir dist && cp ../components-ember/* dist/
- Go to https://github.com/emberjs/ember.js/releases
- Click on the most recent tag (2.5.0-beta.2), and then click "Edit"
- Start with
### Changelog
and copy/paste the changelog into the box - Make the title
Ember 2.5.0-beta.2
and check "This is a prerelease" for betas - Update builds page
- Deploy
Starting point: https://gist.github.com/rwjblue/fb945e55c70d698d4074
- In Ember bower repo,
git co -b lts-2-4
,git push origin
- In
bin/publish_to_s3.js
andbin/bower_ember_build
, add relevant "lts-2-4" lines (see https://github.com/emberjs/ember.js/commit/618de4fa036ab33dc760343decd355ede7b822bb) - Follow usual stable point-release steps (release the LTS as
2.4.${++latest}
)
- Ensure that all commits that are tagged for release are in the release.
- Review commits by hand since last beta was cut.
- You may run into trouble since commits are at canary, but
release
is from a branch 6 weeks ago - @rwjblue: I have a changelog generator script that correctly links commits to PRs
- It looks at all commits on beta branch, finds the original commit where that come from, and finds the originating PR
- If I happen to run that tool again, it tells me that I have already run it so I don't accidentally run it twice
- @rwjblue: I manually scan commits looking for "bugfix beta" and cherry-pick them into the beta branch (which is imminently becoming the
release
branch)- Automating "look for bugfix beta commits since last beta release" seems like an easy win (@tomdale)
- Push
beta
branch to get CI to run - Run
PRIOR_VERSION=<tag> ./bin/changelog.js | uniq | pbcopy
- Clean up commits in CHANGELOG
- e.g. [BUGFIX beta] -> [BUGFIX], [DEPRECATE beta] -> [DEPRECATE], ...
- Remove
[DOC]
changes (who cares) - Improve formatting (you're now in a Markdown document, so wrap code in ``s.
- Collapse all "beta" sections into final release
- E.g., commits from "beta.1", "beta.2", "beta.3" should just go under "2.4.0" or whatever
- Commit CHANGELOG
- Edit
package.json
to correct version (2.4.0) - Edit
VERSION
file to correct value- Seems easy to automate fixing this. Replace reading
VERSION
with readingpackage.json
so you only have to change it in one place
- Seems easy to automate fixing this. Replace reading
- Commit
package.json
/version
tags - Add commit message: "Release v2.4.0"
git tag v2.4.0
git push origin v2.4.0
to push JUST the tag. This lets us run the tag first on CI, which does the correct deploy to S3, Bower, etc.- THEN wait for CI build to finish
- Go to github and disable branch protection for the release branch
- Backup the current release branch:
git push origin release:release-version
- To make this the current
release
branch:git push -f origin beta:release
- This promotes the
beta
branch on your machine (that has all of the release commits) the newrelease
branch onorigin
- This promotes the
- If you are paranoid like rojax, "freeze" this version of Ember in amber:
mv ember-beta ember-release-v2.4
- Go to github and enable branch protection for the release branch
- Go to GitHub and add a new release
- Add title:
Ember 2.4
- Copy and paste CHANGELOG
# generate-api-docs.rb
require 'yaml'
data = YAML.load_file("../components-ember/ember-docs.json")
data["project"]["sha"] = ENV['VERSION']
File.open("data/api.yml", "w") do |f|
YAML.dump(data, f)
end
- Check out
master
branch and pull to get latestcanary
on your local machine nombom
and run those tests!- Branch locally to
beta
git checkout -b beta
- Manually disable features
- Change everything in
packages/@ember/canary-features.ts
'sDEFAULT_FEATURES
export fromnull
tofalse
to ensure they are stripped - Any feature that has been GOed gets changed to true
- Change everything in
- Run
ember s -prod
- Run tests at
http://localhost:4200/tests/index.html
- Run production tests
http://localhost:4200/tests/index.html?dist=prod&prod=true
- Now we have to look at the commit just prior to branching 2.4.0.beta-1. Then find the commit after that to start the new branch at.
PRIOR_VERSION=v2.4.0-beta.1^ HEAD=master ./bin/changelog.js | uniq | pbcopy
- Clean up changelog. Make sure the changelog from the stable release you just did is included.
- Update
package.json
andVERSION
file to use new version number git tag v2.5.0-beta.1
git push origin v2.5.0-beta.1
git push -f origin beta:beta