diff --git a/RELEASE.md b/RELEASE.md index 80b4bfefc12..6d443dae7f7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -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) @@ -60,19 +60,24 @@ 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 @@ -80,32 +85,32 @@ Convenience script can also be used domains as well as `pytorch/builder` 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: ``` @@ -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: