Skip to content

Commit

Permalink
🔄 synced file(s) with conda/infrastructure (#252)
Browse files Browse the repository at this point in the history
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
  • Loading branch information
conda-bot and conda-bot authored Aug 1, 2023
1 parent dcea516 commit 703297a
Showing 1 changed file with 63 additions and 38 deletions.
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.

0 comments on commit 703297a

Please sign in to comment.