-
Notifications
You must be signed in to change notification settings - Fork 46.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Release Checklist #10620
Comments
Should we add a note for running through the browser fixtures as well? Just in case we failed to review the browser fixtures before merging a DOM change. |
I thought about it, but this is already a ton of work by this point. How much more work would going through DOM fixtures be? If we automate publishing them then maybe we can have QA people help go through them. @sophiebits had ideas about it. |
@aweary Dan and I discussed that a bit - we expect that when changes land to DOM related things, we'll run through the DOM fixtures, and when we make packaging changes we test the packaging fixtures then. We agreed that doing a "smoke test" of the packaging fixtures is probably good for a release, rather than re-doing all of the fixture testing by hand. We also do a step where we sync React into Facebook, and do pretty extensive manual testing of our internal uses of React, so anything that went into a sync should be very well tested. |
@flarnie 👍 added |
It would take a good chunk of time, but maybe we can just add it as non-blocking and defer it to someone else who has the time who can give it a 👍 for the release? I'm sure myself, @nhunzaker or @jquense would be happy to contribute on that front. I just worry since there's currently nothing in place that enforces that DOM fixtures be checked when DOM changes are merged, so if we mess up and forget we could slip a regression into a stable release.
That would be great, I wonder if we could use something like danger to watch for changes to DOM-related files and add a note reminding us to check the published fixtures before merge? We can talk about that another time though 😄 |
I added a last note about reaching out to you folks :-) |
This is the best - thanks for creating it. 🥇💎🎶 Some thoughts:
I love all the details. Looks good to me. Going to make a clone of it for specifically the 16 RC, and probably will continue through the process after lunch. The part I've done so far is open PRs for the "Update error codes." steps. |
Yes, that's the only thing we need to do during the release. The rest (updating dev dependencies) should be done during normal development cycle once in a while—when we feel like updating them :-) And we should land a sync after doing that.
Sure. Although by the time we do a sync it's usually late to fix size :-) But we should add something. |
I think we want |
Updating based on my previous comment now, after chatting with @gaearon it sounds like this is what we want. |
From the Yarn docs it sounds like just |
Just a note - let's add something about verifying using |
I will be happy to do this. |
The current release process is convoluted. I think we agreed that we won’t be maintaining
stable
branches from now on, and will release from master. This means breaking changes land behind a flag. In this issue I am documenting the new master-based release process. It is intended to be exhaustive so let me know if something is missing.If we agree on this, I’ll be deleting the existing documentation and point it to this issue instead. This issue is in checklist format to be copy-pasteable for specific release issues (h/t @flarnie for the tip). Ideally we should automate some parts of this, potentially by fixing RRM to work with this model.
So You Want to Cut a Release...
Ensure all commits in master were tested at Facebook.
Verify that you have npm permissions.
npm owner ls react
npm owner ls react-art
npm owner ls react-dom
npm owner ls react-test-renderer
Ensure your React is fresh.
master
git pull
git log
output matches the commit list.yarn
in the repo root.Ensure runtime dependencies match what users would get.
fbjs
:fbjs
in rootpackage.json
.packages/*/package.json
depending onfbjs
specify the same range.object-assign
:object-assign
in rootpackage.json
.packages/*/package.json
depending onobject-assign
specify the same range.prop-types
:prop-types
in rootpackage.json
.packages/*/package.json
depending onprop-types
specify the same range.yarn upgrade object-assign prop-types fbjs
package.json
.Do the local sanity checks in the repo root.
yarn test
in the repo root.yarn lint
in the repo root.yarn flow
in the repo root.STABLE RELEASE ONLY: Update error codes.
yarn build -- --extract-errors
in the repo root.scripts/error-codes/codes.json
changes,git commit -am 'Update error codes'
*-stable
branch for docs when you’re reading this, we need to cherry-pick that commit to that branch. This makes sure the website decoder knows about the updated error codes. But ideally we should just change docs to serve from master.STABLE RELEASE ONLY: Write the changelog.
CHANGELOG.md
and add release notes in the same format as earlier.Update the version.
version
in rootpackage.json
src/ReactVersion.js
version
and React version inpeerDependencies
in allpackages/*/package.json
:packages/react/package.json
packages/react-art/package.json
packages/react-dom/package.json
packages/react-noop-renderer/package.json
packages/react-test-renderer/package.json
yarn version-check
to verify your changes.git commit -am "<version number>"
Build it!
yarn build
in the repo root.Run fast packaging smoke test.
fixtures/packaging/babel-standalone/dev.html
in the browser for a smoke test.Run slow packaging smoke test.
cd fixtures/packaging
and runnode build-all.js
npm install -g serve
serve -s .
Release!
git push
git push --tags
build/packages
npm publish --tag next
in the subfolder.npm publish
in the subfolder.npm info <package> dist-tags
to verify that things were published as you expect.STABLE RELEASE ONLY: Create GitHub Release.
CHANGELOG.md
.build/dist/*.js
exceptreact-art.*
to the release.STABLE RELEASE ONLY: Update the version reported on the website.
docs/_config.yml
react_version
in it to the newly published version.git commit -am "Update the reported React version on the website"
*-stable
branch for docs when you’re reading this, we need to cherry-pick that commit to that branch. This makes sure the website knows about the updated config. But ideally we should just change docs to serve from master.STABLE RELEASE ONLY: Update Bower.
git clone https:/reactjs/react-bower.git
master
and you didgit pull
build/dist/*.js
from React repo into it.git commit -am "<version number>"
git tag -a v<version number>
(Don’t miss thev
!)git push
andgit push --tags
STABLE RELEASE ONLY: Try it out!
npm i -g create-react-app
create-react-app myapp
cd myapp
npm start
STABLE RELEASE ONLY: Reach out to DOM team.
The text was updated successfully, but these errors were encountered: