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:
-`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
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)