From bd9ac0df48555027521a3dff80050b8993f32ada Mon Sep 17 00:00:00 2001 From: Martin Konicek Date: Mon, 18 Jan 2016 20:26:07 +0000 Subject: [PATCH] Update Releases.md --- Releases.md | 65 ++++++++++++++++++----------------------------------- 1 file changed, 22 insertions(+), 43 deletions(-) diff --git a/Releases.md b/Releases.md index a5e3c02f4..c6166e09b 100644 --- a/Releases.md +++ b/Releases.md @@ -19,52 +19,27 @@ Future releases: - A lot of these steps could be done by a script - We could simplify the process quite a bit by publishing the Android binaries to npm. This will increase the size of the npm package by about 3.3MB. To do that: after `installArchives`, move the binaries to somewhere where `npm publish` will pick them up. Then, change the `build.gradle` file(s) of your generated app so that Gradle will pick up the binaries from `node_modules`. This will likely also **fix issues with incompatible versions of JS and Android binaries** (e.g. [#4488](https://github.com/facebook/react-native/issues/4488)). +## One time setup + +Set up Sinopia: https://github.com/facebook/react-native/tree/master/react-native-cli + ## Cut a release branch -Note: Make sure you replace 0.18 in all the commands below with the version you're releasing :) For example, copy-paste all of this into an editor and replace 0.18. +To cut a release branch and check that everything works, you'll need Mac OS with the [Android dev environment set up](https://github.com/facebook/react-native/blob/master/ReactAndroid/README.md). + +Run: + + cd react-native + ./scripts/release.sh 0.19 # Replace 0.19 with the version you're cutting the branch for :) #### Check that everything works -First, set up Sinopia (only need to do this once): https://github.com/facebook/react-native/tree/master/react-native-cli - -Make absolutely sure basic iOS and Android workflow works on master: - - `cd react-native` - - `git pull` - - `git checkout -b 0.18-stable` - - Edit `ReactAndroid/gradle.properties`, set `VERSION_NAME=0.18.0` - - Edit `ReactAndroid/release.gradle`, uncomment Javadoc generation (the line `// archives androidJavadocJar`) - - Make sure `java -version` prints 1.7.x, this is currently needed for Javadoc generation and Javadocs are required by Maven Central (we should make it work with Java 8) - - Run `./gradlew :ReactAndroid:installArchives`, it will print a lot of Javadoc warnings, that's OK. - - Check the artifacts were generated: `ls -al ~/.m2/repository/com/facebook/react/react-native/0.18.0/` should contain: - - `react-native-0.18.0-javadoc.jar`, `react-native-0.18.0-sources.jar`, `react-native-0.18.0.aar`, `react-native-0.18.0.pom` - - For each of the above also `.asc` file - - In `package.json`, set version to e.g. `0.18.0-rc`. - - In `React.podspec`, set version to e.g. `0.18.0-rc`. - - In `local-cli/generator-android/templates/src/app/build.gradle` update the dependency to e.g. `com.facebook.react:react-native:0.18.+` - - Publish to sinopia: - - `npm set registry http://localhost:4873/`, check that it worked: `npm config list` will show registry is set to localhost - - In a separate shell, start sinopia. Run `sinopia`. If started successfully it will print: http address - http://localhost:4873/. - - Make sure http://localhost:4873/ shows no old versions - - `npm publish` - - http://localhost:4873/ will show 0.18.0-rc - - Test that everything works: - - `cd /tmp` - - `react-native init AwesomeApp` - - `cd AwesomeApp` - - Check that `package.json`, `android/app/build.gradle` have correct versions (`^0.18.0-rc`, `com.facebook.react:react-native:0.18.+`) - - `open ios/AwesomeApp.xcodeproj` - - Hit the Run button in Xcode. - - Packager should open in a new window, you should see the Welcome to React Native screen, Reload JS, try Chrome debugging - put a breakpoint somewhere in `index.ios.js` and Reload JS, Chrome debugger should stop on the breakpoint (we don't have tests for Chrome debugging) - - Close the packager window, close Xcode - - Start an Android emulator (ideally Genymotion, it's faster and more reliable than Google emulators) - - `react-native run-android` - - Test is the same way as on iOS, including Chrome debugging +Make absolutely sure basic iOS and Android workflow works on master, see the instructions printed by `release.sh`. #### Push to github - - Revert the Javadoc change in `ReactAndroid/release.gradle` - - `git commit -am "[0.18-rc] Bump version numbers"` - - `git push origin 0.18-stable` + - Check git history, the last commit should be "[0.19-rc] Bump version numbers" (with the correct version) + - `git push origin 0.version_you_are_releasing-stable` ## Do a release @@ -74,7 +49,7 @@ Publish to Maven Central (Note: **We could get rid of this whole section by publ - Add all files: .aar, sources jar, javadoc jar, .asc for everything (including the POM file) - Wait a few hours until you see the version has propagated to [JCenter](https://bintray.com/bintray/jcenter/com.facebook.react%3Areact-native/view) -To release 0.18-rc to npm: +To release to npm: (You need to be a maintainer of the repo. For admins, here's the command to promote someone) @@ -83,7 +58,7 @@ npm owner add react-native ``` ``` -git tag v0.18.0-rc 0.18-stable # don't forget the `v` at the beginning! +git tag v0.version_you_are_releasing.0-rc 0.version_you_are_releasing-stable # don't forget the `v` at the beginning! git push --tags ``` @@ -92,9 +67,13 @@ git push --tags ``` npm set registry https://registry.npmjs.org/ npm publish -# Only when doing a non-rc release: -npm dist-tag add react-native@0.18.0 latest +# *Only* when doing a non-rc release: +# npm dist-tag add react-native@0.non_rc_version.0 latest ``` - Upgrade tags to a release by going to https://github.com/facebook/react-native/tags - Click "Add Notes to release" -- Click Publish +- Click Publishd + +## Track bug reports from the community during the following two weeks and make sure they get fixed + +A good way to do this is to create a github issue and post about it so people can report bugs: https://github.com/facebook/react-native/issues/5201