Skip to content

Commit

Permalink
Update Releases.md
Browse files Browse the repository at this point in the history
  • Loading branch information
mkonicek committed Jan 18, 2016
1 parent 58fc0f0 commit bd9ac0d
Showing 1 changed file with 22 additions and 43 deletions.
65 changes: 22 additions & 43 deletions Releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)

Expand All @@ -83,7 +58,7 @@ npm owner add <user> 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
```

Expand All @@ -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

0 comments on commit bd9ac0d

Please sign in to comment.