Skip to content

Commit

Permalink
Update Release.md with latest details (pytorch#78285)
Browse files Browse the repository at this point in the history
Update Release.md with latest details and PRs reference

Pull Request resolved: pytorch#78285
Approved by: https://github.com/malfet
  • Loading branch information
atalman authored and pytorchmergebot committed May 26, 2022
1 parent e9d0f5f commit 46b0306
Showing 1 changed file with 35 additions and 18 deletions.
53 changes: 35 additions & 18 deletions RELEASE.md
Expand Up @@ -7,9 +7,9 @@
- [Cutting release branches](#cutting-release-branches)
- [`pytorch/pytorch`](#pytorchpytorch)
- [`pytorch/builder` / PyTorch domain libraries](#pytorchbuilder--pytorch-domain-libraries)
- [Making release branch specific changes](#making-release-branch-specific-changes)
- [Getting CI signal on release branches:](#getting-ci-signal-on-release-branches)
- [Drafting RCs (Release Candidates)](#drafting-rcs-release-candidates)
- [Making release branch specific changes for PyTorch](#making-release-branch-specific-changes-for-pytorch)
- [Making release branch specific changes for domain libraries](#making-release-branch-specific-changes-for-domain-libraries)
- [Drafting RCs (Release Candidates) for PyTorch and domain libraries](#drafting-rcs-release-candidates-for-pytorch-and-domain-libraries)
- [Release Candidate Storage](#release-candidate-storage)
- [Cherry Picking Fixes](#cherry-picking-fixes)
- [Promoting RCs to Stable](#promoting-rcs-to-stable)
Expand Down Expand Up @@ -60,52 +60,57 @@ Following Requirements needs to be met prior to final RC Cut:

Release branches are typically cut from the branch [`viable/strict`](https://github.com/pytorch/pytorch/tree/viable/strict) as to ensure that tests are passing on the release branch.

There's a convenience script to create release branches from current `viable/strict` (from root `pytorch/pytorch`):
There's a convenience script to create release branches from current `viable/strict`. Perform following actions :
* Perform a fresh clone of pytorch repo using
```bash
git clone git@github.com:pytorch/pytorch.git
```

* Execute following command from PyTorch repository root folder:
```bash
DRY_RUN=disabled scripts/release/cut-release-branch.sh
```

This script should create 2 branches:
* `release/{MAJOR}.{MINOR}`
* `orig/release/{MAJOR}.{MINOR}`

### `pytorch/builder` / PyTorch domain libraries

Convenience script can also be used domains as well as `pytorch/builder`
*Note*: Release branches for individual domain libraries should be created after first release candidate build of PyTorch is available in staging channels (which happens about a week after PyTorch release branch has been created). This is absolutely required to allow sufficient testing time for each of the domain library. Domain libraries branch cut is performed by Domain Library POC.
Builder branch cut should be performed at the same time as Pytorch core branch cut. Convenience script can also be used domains as well as `pytorch/builder`

> NOTE: RELEASE_VERSION only needs to be specified if version.txt is not available in root directory
```bash
DRY_RUN=disabled GIT_BRANCH_TO_CUT_FROM=main RELEASE_VERSION=1.11 scripts/release/cut-release-branch.sh
```

### Making release branch specific changes
### Making release branch specific changes for PyTorch

These are examples of changes that should be made to release branches so that CI / tooling can function normally on
them:

* Update backwards compatibility tests to use RC binaries instead of nightlies
* Example: https://github.com/pytorch/pytorch/pull/40706
* Example: https://github.com/pytorch/pytorch/pull/77983 and https://github.com/pytorch/pytorch/pull/77986
* A release branches should also be created in [`pytorch/xla`](https://github.com/pytorch/xla) and [`pytorch/builder`](https://github.com/pytorch/builder) repos and pinned in `pytorch/pytorch`
* Example PR (CircleCI, to be removed): https://github.com/pytorch/pytorch/pull/65433
* Example PR (GHA): https://github.com/pytorch/pytorch/pull/72739

These are examples of changes that should be made to the *default* branch after a release branch is cut

* Nightly versions should be updated in all version files to the next MINOR release (i.e. 0.9.0 -> 0.10.0) in the default branch:
* Example: https://github.com/pytorch/pytorch/pull/65435
* Example: https://github.com/pytorch/pytorch/pull/77984

### Getting CI signal on release branches:
### Making release branch specific changes for domain libraries

Create a PR from `release/{MAJOR}.{MINOR}` to `orig/release/{MAJOR}.{MINOR}` in order to start CI testing for cherry-picks into release branch.
Domain library branch cut is done a week after branch cut for the `pytorch/pytorch`. The branch cut is performed by the Domain Library POC.
After the branch cut is performed, the Pytorch Dev Infra memeber should be informed of the branch cut and Domain Library specific change is required before Drafting RC for this domain library.

Example:
* https://github.com/pytorch/pytorch/pull/51995
Follow these examples of PR that updates the version and sets RC Candidate upload channel:
* torchvision : https://github.com/pytorch/vision/pull/5400
* torchaudio: https://github.com/pytorch/audio/pull/2210

## Drafting RCs (Release Candidates)
## Drafting RCs (Release Candidates) for PyTorch and domain libraries

To draft RCs, a user with the necessary permissions can push a git tag to the main `pytorch/pytorch` git repository.
To draft RCs, a user with the necessary permissions can push a git tag to the main `pytorch/pytorch` git repository. Please note: exactly same process is used for each of the domain library

The git tag for a release candidate must follow the following format:
```
Expand All @@ -114,13 +119,25 @@ v{MAJOR}.{MINOR}.{PATCH}-rc{RC_NUMBER}

An example of this would look like:
```
v1.8.1-rc1
v1.12.0-rc1
```
You can use following commands to perform tag from pytorch core repo (not fork):
* Checkout and validate the repo history before tagging
```
git checkout release/1.12
git log --oneline
```
* Perform tag and push it to github (this will trigger the binary release build)
```
git tag -f v1.12.0-rc2
git push origin v1.12.0-rc2
```

Pushing a release candidate should trigger the `binary_builds` workflow within CircleCI using [`pytorch/pytorch-probot`](https://github.com/pytorch/pytorch-probot)'s [`trigger-circleci-workflows`](trigger-circleci-workflows) functionality.

This trigger functionality is configured here: [`pytorch-circleci-labels.yml`](https://github.com/pytorch/pytorch/blob/master/.github/pytorch-circleci-labels.yml)

To view the state of the release build, please navigate to [HUD](https://hud.pytorch.org/hud/pytorch/pytorch/release%2F1.12). and make sure all binary builds are successful.
### Release Candidate Storage

Release candidates are currently stored in the following places:
Expand Down

0 comments on commit 46b0306

Please sign in to comment.