Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🔄 synced file(s) with conda/infrastructure #219

Merged
merged 1 commit into from
Aug 1, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 63 additions & 38 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@

# Release Process

> **Note**
> **Note:**
> Throughout this document are references to the version number as `YY.M.0`, this should be replaced with the correct version number. Do **not** prefix the version with a lowercase `v`.

## 1. Open the release issue and cut a release branch. (do this ~1 week prior to release)

> **Note**
> **Note:**
> The [epic template][epic template] is perfect for this; remember to remove the **`epic`** label.

Use the issue template below to create the release issue. After creating the release issue, pin it for easy access.
Expand Down Expand Up @@ -48,7 +48,7 @@ Placeholder for `{{ repo.name }} YY.M.0` release.
#### The week before release week

- [ ] Create release branch (named `YY.M.x`)
- [ ] Ensure release candidates are being successfully built (see `conda-canary/label/YY.M.x`)
- [ ] Ensure release candidates are being successfully built (see `conda-canary/label/rc-{{ repo.name }}-YY.M.x`)
- [ ] [Complete outstanding PRs][milestone]
- [ ] Test release candidates
<!-- indicate here who has signed off on testing -->
Expand Down Expand Up @@ -76,7 +76,7 @@ Placeholder for `{{ repo.name }} YY.M.0` release.
</details>


> **Note**
> **Note:**
> The new release branch should adhere to the naming convention of `YY.M.x`.

## 2. Alert various parties of the upcoming release. (do this ~1 week prior to release)
Expand Down Expand Up @@ -122,7 +122,7 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

2. Run `rever --activities authors`:

> **Note**
> **Note:**
> Include `--force` when re-running any rever commands for the same `<VERSION>`, otherwise, rever will skip the activity and no changes will be made (i.e., rever remembers if an activity has been run for a given version).

```bash
Expand Down Expand Up @@ -164,7 +164,7 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git add .
(rever) $ git commit -m "Updated .authors.yml"
(rever) $ git commit -m "Update .authors.yml"
```

- Rerun `rever --activities authors` and finally check that your `.mailmap` is correct by running:
Expand All @@ -189,21 +189,21 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git add .
(rever) $ git commit -m "Updated .mailmap"
(rever) $ git commit -m "Update .mailmap"
```

- Continue repeating the above processes until the `.authors.yml` and `.mailmap` are corrected to your liking. After completing this, you will have at most two commits on your release branch:

```bash
(rever) $ git cherry -v main
+ 86957814cf235879498ed7806029b8ff5f400034 Updated .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Updated .mailmap
+ 86957814cf235879498ed7806029b8ff5f400034 Update .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Update .mailmap
```


4. Review news snippets (ensure they are all using the correct Markdown format, **not** reStructuredText) and add additional snippets for undocumented PRs/changes as necessary.

> **Note**
> **Note:**
> We've found it useful to name news snippets with the following format: `<PR #>-<DESCRIPTIVE SLUG>`.
>
> We've also found that we like to include the PR #s inline with the text itself, e.g.:
Expand All @@ -222,21 +222,21 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git add .
(rever) $ git commit -m "Updated news"
(rever) $ git commit -m "Update news"
```

- After completing this, you will have at most three commits on your release branch:

```bash
(rever) $ git cherry -v main
+ 86957814cf235879498ed7806029b8ff5f400034 Updated .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Updated .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Updated news
+ 86957814cf235879498ed7806029b8ff5f400034 Update .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Update .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Update news
```

5. Run `rever --activities changelog`:

> **Note**
> **Note:**
> This has previously been a notoriously fickle step (likely due to incorrect regex patterns in the `rever.xsh` config file and missing `github` keys in `.authors.yml`) so beware of potential hiccups. If this fails, it's highly likely to be an innocent issue.

```bash
Expand All @@ -256,9 +256,9 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git cherry -v main
+ 86957814cf235879498ed7806029b8ff5f400034 Updated .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Updated .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Updated news
+ 86957814cf235879498ed7806029b8ff5f400034 Update .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Update .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Update news
```

6. Now that we have successfully run the activities separately, we wish to run both together. This will ensure that the contributor list, a side-effect of the authors activity, is included in the changelog activity.
Expand All @@ -271,11 +271,11 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git cherry -v main
+ 86957814cf235879498ed7806029b8ff5f400034 Updated .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Updated .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Updated news
+ a5c0db938893d2c12cab12a1f7eb3e646ed80373 Updated authorship for YY.M.0
+ 5e95169d0df4bcdc2da9a6ba4a2561d90e49f75d Updated CHANGELOG for YY.M.0
+ 86957814cf235879498ed7806029b8ff5f400034 Update .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Update .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Update news
+ a5c0db938893d2c12cab12a1f7eb3e646ed80373 Update authorship for YY.M.0
+ 5e95169d0df4bcdc2da9a6ba4a2561d90e49f75d Update CHANGELOG for YY.M.0
```

7. Since rever does not include stats on first-time contributors, we will need to add this manually.
Expand All @@ -286,19 +286,19 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

```bash
(rever) $ git add .
(rever) $ git commit -m "Added first contributions"
(rever) $ git commit -m "Add first-time contributions"
```

- After completing this, you will have at most six commits on your release branch:

```bash
(rever) $ git cherry -v main
+ 86957814cf235879498ed7806029b8ff5f400034 Updated .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Updated .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Updated news
+ a5c0db938893d2c12cab12a1f7eb3e646ed80373 Updated authorship for YY.M.0
+ 5e95169d0df4bcdc2da9a6ba4a2561d90e49f75d Updated CHANGELOG for YY.M.0
+ 93fdf029fd4cf235872c12cab12a1f7e8f95a755 Added first contributions
+ 86957814cf235879498ed7806029b8ff5f400034 Update .authors.yml
+ 3ec7491f2f58494a62f1491987d66f499f8113ad Update .mailmap
+ 432a9e1b41a3dec8f95a7556632f9a93fdf029fd Update news
+ a5c0db938893d2c12cab12a1f7eb3e646ed80373 Update authorship for YY.M.0
+ 5e95169d0df4bcdc2da9a6ba4a2561d90e49f75d Update CHANGELOG for YY.M.0
+ 93fdf029fd4cf235872c12cab12a1f7e8f95a755 Add first-time contributions
```

8. Push this versioned branch.
Expand Down Expand Up @@ -326,7 +326,7 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

11. [Create][new release] the release and **SAVE AS A DRAFT** with the following values:

> **Note**
> **Note:**
> Only publish the release after the release PR is merged, until then always **save as draft**.

| Field | Value |
Expand All @@ -339,9 +339,23 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

## 5. Wait for review and approval of release PR.

## 6. Merge release PR and publish release.
## 6. Manually test canary build(s).

## 7. Merge/cherry pick the release branch over to the `main` branch.
### Canary Builds for Manual Testing

Once the release PRs are filed, successful canary builds will be available on `https://anaconda.org/conda-canary/conda/files?channel=rc-{{ repo.name }}-YY.M.x` for manual testing.

> **Note:**
> You do not need to apply the `build::review` label for release PRs; every commit to the release branch builds and uploads canary builds to the respective `rc-` label.

## 7. Merge release PR and publish release.

To publish the release, go to the project's release page (e.g., https://github.com/conda/conda/releases) and add the release notes from `CHANGELOG.md` to the draft release you created earlier. Then publish the release.

> **Note:**
> Release notes can be drafted and saved ahead of time.

## 8. Merge/cherry pick the release branch over to the `main` branch.

<details>
<summary>Internal process</summary>
Expand All @@ -354,19 +368,30 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

4. Ensure that all of the commits being pulled in look accurate, then select "Create pull request".

> **Note**
> **Note:**
> Make sure NOT to push the "Update Branch" button. If there are [merge conflicts][merge conflicts], create a temporary "connector branch" dedicated to fixing merge conflicts separately from the `YY.M.0` and `main` branches.

5. Review and merge the pull request the same as any code change pull request.

> **Note**
> **Note:**
> The commits from the release branch need to be retained in order to be able to compare individual commits; in other words, a "merge commit" is required when merging the resulting pull request vs. a "squash merge". Protected branches will require permissions to be temporarily relaxed in order to enable this action.

</details>

## 8. Open PRs to bump [Anaconda Recipes][Anaconda Recipes] and [conda-forge][conda-forge] feedstocks to use `YY.M.0`.
## 9. Open PRs to bump [Anaconda Recipes][Anaconda Recipes] and [conda-forge][conda-forge] feedstocks to use `YY.M.0`.

> **Note:**
> Conda-forge's PRs will be auto-created via the `regro-cf-autotick-bot`. Follow the instructions below if any changes need to be made to the recipe that were not automatically added (these instructions are only necessary for anyone who is _not_ a conda-forge feedstock maintainer, since maintainers can push changes directly to the autotick branch):
> - Create a new branch based off of autotick's branch (autotick's branches usually use the `regro-cf-autotick-bot:XX.YY.0_[short hash]` syntax)
> - Add any changes via commits to that new branch
> - Open a new PR and push it against the `main` branch
>
> Make sure to include a comment on the original `autotick-bot` PR that a new pull request has been created, in order to avoid duplicating work! `regro-cf-autotick-bot` will close the auto-created PR once the new PR is merged.
>
> For more information about this process, please read the ["Pushing to regro-cf-autotick-bot branch" section of the conda-forge documentation](https://conda-forge.org/docs/maintainer/updating_pkgs.html#pushing-to-regro-cf-autotick-bot-branch).


## 9. Hand off to Anaconda's packaging team.
## 10. Hand off to Anaconda's packaging team.

<details>
<summary>Internal process</summary>
Expand All @@ -377,6 +402,6 @@ Currently, there are only 2 activities we use rever for, (1) aggregating the aut

</details>

## 10. Continue championing and shepherding.
## 11. Continue championing and shepherding.

Remember to make all relevant announcements and continue to update the release issue with the latest details as tasks are completed.
Loading