forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
59 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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: | ||
|
||
(For admins, here's the command to promote someone) | ||
- Revert the Javadoc change in `ReactAndroid/release.gradle` | ||
- `git commit -am` "[0.12-rc] Bump version numbers" | ||
- `git push origin 0.12-stable` | ||
|
||
``` | ||
npm owner add <user> react-native | ||
``` | ||
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) | ||
|
||
When you are ready to do a new release. | ||
To release 0.12-rc to npm: | ||
|
||
- Update package.json and React.podspec with the new number | ||
(You need to be a maintainer of the repo. For admins, here's the command to promote someone) | ||
|
||
``` | ||
git tag v0.6.0-rc 0.6-stable # don't forget the `v` at the beginning! | ||
git push --tags | ||
npm owner add <user> react-native | ||
``` | ||
|
||
- Publish to GitHub | ||
|
||
``` | ||
git push git push origin 0.12-stable | ||
git tag v0.12.0-rc 0.12-stable # don't forget the `v` at the beginning! | ||
git push --tags | ||
``` | ||
|
||
- Publish to npm | ||
|
||
``` | ||
npm publish | ||
# Only for non-rc releases: | ||
npm dist-tag add [email protected] 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 | ||
- Click Publish |