Skip to content

Commit

Permalink
Moving Release Wiki to react-native-website (#2961)
Browse files Browse the repository at this point in the history
Co-authored-by: Simek <gosimek@gmail.com>
  • Loading branch information
Megatron4537 and Simek authored Mar 10, 2022
1 parent 4358b87 commit 3607bf2
Show file tree
Hide file tree
Showing 13 changed files with 851 additions and 2 deletions.
21 changes: 21 additions & 0 deletions website/contributing/how-to-contribute.md
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.
170 changes: 170 additions & 0 deletions website/contributing/release-candidate-minor.md
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.
25 changes: 25 additions & 0 deletions website/contributing/release-candidate-patch.md
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
20 changes: 20 additions & 0 deletions website/contributing/release-dependencies.md
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) |
Loading

0 comments on commit 3607bf2

Please sign in to comment.