From e56efc7df8e9f4cdeca5e279492a83a21678e3f0 Mon Sep 17 00:00:00 2001 From: Martin Konicek Date: Thu, 10 Dec 2015 16:29:19 +0000 Subject: [PATCH] Update Releases.md --- Releases.md | 86 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 27 deletions(-) diff --git a/Releases.md b/Releases.md index 89ab4f985..41d7c93d6 100644 --- a/Releases.md +++ b/Releases.md @@ -1,56 +1,88 @@ The list of releases with notes can be found at: https://github.com/facebook/react-native/releases +Future releases: + +- **0.17 branch cut**, 0.17.0-rc - beginning of **week of Dec 7** +- 0.17.0 - Dec 17 +- (Holiday break) +- **0.18 branch cut**, 0.18.0-rc - beginning of **week of Jan 4** +- 0.18.0 - Jan 14 +- **0.19 branch cut**, 0.19.0-rc - beginning of **week of Jan 18** +- 0.19.0 - Jan 28 +- ... + ## Cut a release branch -- Make sure iOS and Android Getting Started flow works on master. -- Publish to Maven Central: - - Edit `ReactAndroid/gradle.properties` - - Edit `ReactAndroid/release.gradle` and uncomment Javadoc generation - - `./gradlew :ReactAndroid:installArchives` (`java -version` should print 1.7 which is currently needed for Javadoc generation) - - Log into Sonatype and go to [Staging upload](https://oss.sonatype.org/#staging-upload) - - Select Artifact(s) with a POM (to publish to a local Maven repo for testing run `./gradlew :ReactAndroid:installArchives`) - - Add all files: .aar, sources jar, javadoc jar, .asc for everything (including the POM file) -- `git checkout -b 0.12-stable` +Note: replace 0.12 in all the commands below with the version you're releasing :) + +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.12-stable` + - Edit `ReactAndroid/gradle.properties`, set `VERSION_NAME=0.12.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.12.0/` should contain: + - `react-native-0.17.0-javadoc.jar`, `react-native-0.17.0-sources.jar`, `react-native-0.17.0.aar`, `react-native-0.17.0.pom` + - For each of the above also `.asc` file - In `package.json`, set version to e.g. `0.12.0-rc`. - In `React.podspec`, set version to e.g. `0.12.0-rc`. - In `local-cli/generator-android/templates/src/app/build.gradle` update the dependency to e.g. `com.facebook.react:react-native:0.12.+` -- `git push origin 0.12-stable` -- `npm publish` +- 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.12.0-rc +- Test that everything works: + - `cd /tmp` + - `react-native init Zero12rc` + - `cd Zero12rc` + - Check that `package.json`, `android/app/build.gradle` have correct versions (`^0.12.0-rc`, `com.facebook.react:react-native:0.12.+`) + - `open ios/Zero12rc.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 ## Do a release -To release e.g. 0.12 to npm: +- Revert the Javadoc change in `ReactAndroid/release.gradle` +- `git commit -am` "[0.12-rc] Bump version numbers" +- `git push origin 0.12-stable` -(For admins, here's the command to promote someone) +Publish to Maven Central (NOTE we could get rid of this whole section publishing binaries to npm instead): + - Log into Sonatype and go to [Staging upload](https://oss.sonatype.org/#staging-upload). You'll need to get permissions for this by filing a ticket explaining you're a core contributor to React Native. [Example ticket](https://issues.sonatype.org/browse/OSSRH-11885). + - Select Artifact(s) with a POM (to publish to a local Maven repo for testing run `./gradlew :ReactAndroid:installArchives`) + - 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.12-rc to npm: + +(You need to be a maintainer of the repo. For admins, here's the command to promote someone) ``` npm owner add react-native ``` -When you are ready to do a new release. - -- Update package.json and React.podspec with the new number - ``` -git tag v0.6.0-rc 0.6-stable # don't forget the `v` at the beginning! +git tag v0.12.0-rc 0.12-stable # don't forget the `v` at the beginning! git push --tags ``` -- Publish to GitHub - -``` -git push git push origin 0.12-stable -``` - - Publish to npm ``` npm publish +# Only for non-rc releases: npm dist-tag add react-native@0.12.0 latest ``` - -- Publish to CocoaPods (it takes several minutes to validate the podspec) - Upgrade tags to a release by going to https://github.com/facebook/react-native/tags - Click "Add Notes to release" -- Click Publish \ No newline at end of file +- Click Publish