-
Notifications
You must be signed in to change notification settings - Fork 14
Release Process
This isn't perfect. There are manual steps that could be automated. There will be variations. RCs and patch releases are slightly different. Hopefully you don't have to worry about this since @zpao does this. But if you are doing a release and you need an adult, contact @zpao.
The process below assumes some repositories checked out into a shared directory. For simplicity, let's assume you used ~/code
.
~/code
├── react (git clone [email protected]:facebook/react.git)
├── react-gh-pages (git clone -b gh-pages [email protected]:facebook/react.git react-gh-pages)
└── react-bower (git clone [email protected]:reactjs/react-bower.git)
You'll also want to check out cdnjs and jsdelivr. The build process isn't set up to automatically commit to these yet, so we'll do this manually.
Note: Not all of these apply to RCs.
- create branch (X.Y-stable)
- update version (remove -rc, -alpha, etc)
- start in package.json
-
grunt build
will ensure other locations are updated (src/.../React.js, npm-react/package.json) - docs/_config.yml should be updated too. Not as vital, will get updated with script, but could result in multiple commits.
- Freeze npm modules. This ensures branches will always be built from the exact same dependencies unless explicitly changed.
rm -rf node_modules
npm install
npm shrinkwrap
- Add all changes in
react
, commit, tag (vX.Y.Z) - Push it.
git push -u upstream vX.Y-stable
- Build the release
grunt release
- This will clean out any possible artifacts from previous builds and build a fresh release.
-
react-bower
will have the JS files, a commit with a message, and a tag. -
react-gh-pages
will build all of the docs, making sure the version is updated.
- Push
react-bower
-git push && git push --tags
- Don't push
react-gh-pages
yet.
Make sure you do this before pushing react-gh-pages
. We don't want dead links.
- ssh to devserver
- Have
react-bower
checked out somewhere. Make sure you've pulled and are checked out to the right branch. ~/www/scripts/react/cdnize_bower path/to/react-bower
From react
... (use --tag X.Y.Z-rc1
format for pre-releases)
cd build
npm publish react.tgz
npm publish react-tools.tgz
gem push react-source-0.10.0.gem
- Update
react-rails
, push that. (don't know what this is, don't worry about it)
You did write this, right? Hopefully before you did any of this. Now that all of the release artifacts are in place, we can update the site to mention them.
- Make sure you're still on the
-stable
branch - Add blog post, starter kit. Commit.
- This should have been built in the
grunt release
step, but we haven't commited since then. - This is ignored by default (to prevent accidents), so
git add -f docs/downloads/react-0.10.0.zip
. - We want to cherry-pick this latest commit to the master branch, but not quite yet. We want to make sure our content there doesn't differ so when we cut a new stable branch in the future, we're not missing anything.
- This should have been built in the
- Push stable branch to github.
-
cd docs && rake release
- This updates
react-gh-pages
with the changes, but doesn't create a commit.
- This updates
-
cd ../../react-gh-pages
and add, commit.
- Get @vjeux to update the base JSFiddle we link to on the site.
- Probably make sure the site & examples all work. Preferably before publishing
- Use files from
react-bower
to create pull requests to cdnjs and jsdelivr. - Get JSFiddle, JSBin to update to latest release.
- Update the FB page, Twitter. Call you mom. etc.
- Add release notes to GitHub based on the changelog: https://github.com/facebook/react/tags
Mostly the same as above. Except no branching. Use git cherry-pick
to pull commits from master. If you change package dependencies, make sure you install them and npm shrinkwrap
again.
All docs changes should land in master first.
- cherry-pick commits into latest
-stable
branch. cd docs && rake release
cd ../../react-gh-pages
- Add all relevant files. Chances are, the changes you have in
js/
don't belong, so don't add blindly. - commit & push
Hopefully you didn't just say that but if you did. Be careful. As long as you haven't pushed anything anywhere, this easy to recover from. Just undo some commits, throw away some tags. If you have pushed, we can still recover but depending on what happened, we might need to do another version bump.