-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Moving Release Wiki to react-native-website (#2961)
Co-authored-by: Simek <gosimek@gmail.com>
- Loading branch information
1 parent
4358b87
commit 3607bf2
Showing
13 changed files
with
851 additions
and
2 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 |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- | ||
title: How to contribute | ||
description: React Native Community | ||
--- | ||
|
||
# How to contribute to React Native | ||
|
||
Thank you for your interest in contributing to the React Native! From commenting on and triaging issues, to reviewing and sending Pull Requests, all contributions are welcome. We aim to build a vibrant and inclusive [ecosystem of partners, core contributors, and community](https://github.com/facebook/react-native/blob/main/ECOSYSTEM.md) that goes beyond the main React Native GitHub repository. | ||
|
||
The [Open Source Guides](https://opensource.guide/) website has a collection of resources for individuals, communities, and companies who want to learn how to run and contribute to an open source project. Contributors and people new to open source alike will find the following guides especially useful: | ||
|
||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) | ||
- [Building Welcoming Communities](https://opensource.guide/building-community/) | ||
|
||
### Code of Conduct | ||
|
||
As a reminder, all contributors are expected to adhere to the [Code of Conduct](https://github.com/facebook/react/blob/main/CODE_OF_CONDUCT.md). | ||
|
||
## Ways to Contribute | ||
|
||
Please see our [Contributing Guide](https://github.com/facebook/react-native/blob/main/CONTRIBUTING.md) in the main React Native repository. |
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 |
---|---|---|
@@ -0,0 +1,170 @@ | ||
--- | ||
id: release-candidate-minor | ||
title: Release Minor Candidate | ||
--- | ||
|
||
This document goes over steps to run different types of React Native release updates. It is intended audience is for those in relevant release roles. | ||
|
||
### Pre-requisites | ||
|
||
- Write access to [react-native](https://github.com/facebook/react-native) repository. | ||
- Your CircleCI personal API token. See [here](https://circleci.com/docs/2.0/managing-api-tokens/#creating-a-personal-api-token) on how to set one. | ||
- If testing, follow [pre-requisites for testing](/contributing/release-testing#pre-requisites). | ||
|
||
### Creating 0.{minor}.0-rc.0 | ||
|
||
- Create the release branch in `react-native` repo with the appropriate name (usually `0.X-stable`). | ||
|
||
```bash | ||
git checkout main | ||
git pull origin main | ||
git checkout -b 0.68-stable | ||
git push origin 0.68-stable | ||
|
||
# This will walk you through what version you are releasing | ||
./scripts/bump-oss-version.js -v 0.68.0-rc.0 -t <YOUR_CIRCLE_CI_TOKEN> | ||
``` | ||
|
||
- Once you have run that script, head to CircleCI and you should see under the releases workflow, a `prepare-package-for-release` job. | ||
|
||
<figure> | ||
<img width="400" alt="CircleCI showing publish release" src="https://user-images.githubusercontent.com/1309636/150040711-cfbc2fe3-91eb-42b9-bd06-de2aa7fb94ea.png"/> | ||
<figcaption>CircleCI showing publish release.</figcaption> | ||
</figure> | ||
|
||
- This script runs and commits any changes and triggers a deploy job, `build_and_publish_npm_package`. | ||
- Note: Look under “All Branches” to find the publish job. CircleCI does not give a way to search for these jobs. | ||
- Once complete you should be able to run `npm view react-native` and verify `next` is expected release version. | ||
|
||
```bash | ||
npm view react-native | ||
... | ||
dist-tags: | ||
latest: 0.65.1 next: 0.66.0-rc.2 nightly: 0.0.0-f617e022c | ||
``` | ||
|
||
### 2. Create a PR of the changelog generator | ||
|
||
```bash | ||
# Run following with the stable release as base, and your rc.0 version | ||
npx @rnx-kit/rn-changelog-generator --base v[LATEST_STABLE]--compare v[YOUR_RC_0] \ | ||
--repo ~/react-native --changelog ~/react-native/CHANGELOG.md > NEW_CHANGES.md | ||
# example against 0.66.4 and 0.67.0-rc.0 | ||
npx @rnx-kit/rn-changelog-generator --base v0.66.4 --compare v0.67.0-rc.0 \ | ||
--repo ~/react-native --changelog ~/react-native/CHANGELOG.md > NEW_CHANGES.md | ||
``` | ||
|
||
- Prepend contents of `NEW_CHANGES.md` to `CHANGELOG.md`. | ||
- Create a pull request of this change to `react-native` repo and add the `Changelog` label. | ||
|
||
### 3. Create a GitHub Release | ||
|
||
- Create a [GitHub Release](https://github.com/facebook/react-native/releases) with this template and **check “Pre-Release” checkbox**. | ||
|
||
```markdown | ||
<!-- Template for pre-release GitHub release --> | ||
- <!-- TODO List out notable picks for this patch --> | ||
--- | ||
To test it, run: | ||
<!-- TODO Update with your version --> | ||
npx react-native init RN067RC5 --version 0.67.0-rc.5 | ||
--- | ||
You can participate in the conversation on the status of this release in the [working group](https://github.com/reactwg/react-native-releases/discussions). | ||
--- | ||
To help you upgrade to this version, you can use the [upgrade helper](https://react-native-community.github.io/upgrade-helper/) ⚛️ | ||
--- | ||
See changes from this release in the [changelog PR](https://github.com/facebook/react-native/labels/%F0%9F%93%9D%20Changelog) | ||
``` | ||
|
||
<figure> | ||
<img width="400" alt="Creating a GitHub Release" src="https://user-images.githubusercontent.com/1309636/133348648-c33f82b8-b8d2-474a-a06e-35a1fb8d18de.png"/> | ||
<figcaption>Creating a GitHub Release.</figcaption> | ||
</figure> | ||
|
||
### 4. Create a tracking discussion post | ||
|
||
Create a "Road to <YOUR_MINOR_VERSION>" discussion post in [`react-native-releases`](https://github.com/reactwg/react-native-releases/discussions): | ||
|
||
```markdown | ||
<!-- Template for a new minor release candidate --> | ||
<!-- Title: Road to <YOUR_VERSION> --> | ||
The branch cut has happened. | ||
## Notice | ||
<!-- TODO update the version --> | ||
- [Current release candidate: 0.68.0-rc.0][current-release] | ||
- Have an issue with current release candidate? [File an issue][issue-form] and we will triage. | ||
- Have a pick request for this release? Does it fall under our [pick request qualifications][release-faq]? If so please create a PR against the release branch and comment with the PR link | ||
- If you are release testing. Copy and fill [Test Checklist](/contributing/release-testing#test-checklist). | ||
#### Highlighted Changes in this release | ||
<!-- Add stand-out changes in this release, and link to changelog PR. --> | ||
- Checkout this [Changelog PR][changelog-pr] | ||
## [Release Process][release-processes] | ||
#### Checklist | ||
- [ ] [Changelog PR][changelog-pr] | ||
- [ ] Start a Google doc of blog post for release and invite contributors of release highlights to expand | ||
- [ ] Follow up on [release dependencies][release-dependencies] | ||
> When ready to publish stable | ||
- [ ] Ship changelog | ||
- [ ] Ship blog post | ||
- [ ] Notify `react-native-website` to ship new version | ||
#### Retrospective Topics | ||
<!-- List out pain points, issues to investigate that are not release-blocking to follow up on --> | ||
- | ||
## Release Status | ||
### Tracking 0.67.0-rc.1 | ||
#### Blocking issues for releasing 0.67.0-rc.1 | ||
- | ||
#### Picks for 0.67.0-rc.1 | ||
- | ||
[changelog-pr]: https://github.com/facebook/react-native/labels/%F0%9F%93%9D%20Changelog | ||
[current-release]: https://github.com/facebook/react-native/releases | ||
[changelog-wiki]: https://github.com/facebook/react-native/wiki/Release-Changelog | ||
[release-dependencies]: https://reactnative.dev/contributing/release-dependencies | ||
[release-faq]: https://reactnative.dev/contributing/release-faq | ||
[issue-form]: https://github.com/facebook/react-native/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Cpre-release&template=release_blocker_form.yml | ||
[releases]: https://github.com/facebook/react-native/releases | ||
[release-processes]: https://reactnative.dev/contributing/how-to | ||
[upgrade-helper]: https://reactnative.dev/contributing/updating-upgrade-helper | ||
``` | ||
|
||
### 5. Verify that Upgrade Helper GitHub action has fired | ||
|
||
- You should see a [new publish job complete here](https://github.com/react-native-community/rn-diff-purge/actions). | ||
- If not, check out the guide on [how to update Upgrade Helper](/contributing/updating-upgrade-helper). | ||
|
||
### 6. Broadcast that release candidate is out | ||
|
||
- React Native Twitter. | ||
- Discord `#releases-coordination` channel. |
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 |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
id: release-candidate-patch | ||
title: Release Patch Candidate | ||
--- | ||
|
||
### Pre-requisites | ||
|
||
- You have some pick requests that qualify for a patch release and people have agreed it’s good to release a patch. | ||
|
||
### 1. Check out the latest version from release branch and run `bump-oss-version` script | ||
|
||
```bash | ||
# update the stable branch with tags | ||
git pull origin <release-branch> --tags | ||
|
||
# cherry pick relevant commits | ||
git cherry-pick <commit> | ||
|
||
# once done picking, run the script to release | ||
./scripts/bump-oss-version.js | ||
``` | ||
|
||
### 2. Similar to cutting new branch, watch CircleCI to ensure right jobs are being triggered | ||
|
||
### 3. Update the relevant discussion post with the latest RC |
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 |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
id: release-dependencies | ||
title: Release Dependencies | ||
--- | ||
|
||
This table wants to highlight the various tooling that we need to pay attention to and potentially bump to ensure that everything works correctly - it could be that some versions need to be only changed/bumped in the [`template`](https://github.com/facebook/react-native/tree/main/template) folder. | ||
|
||
| Tool | Ping team ahead of branch cut? | Bump when... | Reference bump | Link to source | | ||
| --------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | ||
| Metro | Yes, ping Meta's Metro team - a new version needs to be cut too. | During RC phase of new minor, coordinated with RN CLI (see below). | [link](https://github.com/facebook/react-native/commit/cfdc4fed0d0ba7860d176c1715c0cc84bea643af) | [source](https://github.com/facebook/metro/tags) | | ||
| RN CLI | Yes, ping RN CLI maintainers - they need to do a new release that depends on new Metro version (from above), [like so](https://github.com/react-native-community/cli/pull/1442/files). | During RC phase of new minor, coordinated with Metro (see above). | [link](https://github.com/facebook/react-native/pull/31971/files) | [source](https://github.com/react-native-community/cli/tags) | | ||
| Hermes | Yes, ping Meta's Hermes team - a new version needs to be cut too. | During RC phase of new minor - the closer to the commit of the branch cut, the better. | [link](https://github.com/facebook/react-native/commit/1d6af14d6d6e5a7e3a773b581600b01934a7d442) | [source](https://github.com/facebook/hermes/tags) | | ||
| Flipper | No need, they release on their own schedule. | We just need to sync to the newest set of dependencies at the time of branch cut using this as [reference](https://github.com/facebook/flipper/blob/main/react-native/ReactNativeFlipperExample/ios/Podfile#L30). | [link](https://github.com/facebook/react-native/pull/31896) | [source](https://github.com/facebook/flipper/tags) | | ||
| Folly | No need, they release on their own schedule. | Usually this dependency gets kept up to date by Meta's internal dev loop so it should be necessary to bump at release cut. But it needs to be the same version that is imported via Flipper (Flipper-Folly) to avoid issues. | [link](https://github.com/facebook/react-native/commit/b0c8a4eee821ca0b22e166a2a38f2bd2f22a1abe) | [source](https://github.com/facebook/folly/tags) | | ||
| Jest | No need, they release on their own schedule. | This will be updated by the Meta engineers to stay aligned to the version used internally - so no relationship with the RN release cycle. | [link](https://github.com/facebook/react-native/commit/d6cd2e6559ff8698833dc277810e2e7e80af760a) | [source](https://github.com/facebook/jest/tags) | | ||
| Android SDK | Out of our control. | Needs to be clarified (kept up to date by internal team?). | [link](https://github.com/facebook/react-native/pull/32606/files) | [source](https://developer.android.com/studio/releases/platforms) | | ||
| Gradle | Out of our control. | Needs to be clarified (kept up to date by internal team? [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32588) | [source](https://gradle.org/releases/) | | ||
| Android Gradle Plugin | Out of our control. | Needs to be clarified (kept up to date by internal team? [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32589) | [source](https://developer.android.com/studio/releases/gradle-plugin) | | ||
| JSC | Out of our control. | Needs to be clarified. | [link](https://github.com/facebook/react-native/pull/31304) | [source](https://github.com/react-native-community/jsc-android-buildscripts/tags) | | ||
| CocoaPods | Out of our control. | Needs to be clarified. | [link](https://github.com/facebook/react-native/commit/c6907ee488d938d227682605d7a6ce60f460bfc2) | [source](https://github.com/CocoaPods/CocoaPods/tags) | |
Oops, something went wrong.