Skip to content

Commit

Permalink
chore(dev/release): Improve release and post-release instructions (#249)
Browse files Browse the repository at this point in the history
Filling in a few items while I remember the details!
  • Loading branch information
paleolimbot authored Jun 23, 2023
1 parent ec81297 commit d0300df
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 6 deletions.
105 changes: 100 additions & 5 deletions dev/release/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,12 @@ One can verify a nanoarrow release candidate on big endian by setting
## Creating a release candidate

The first step to creating a nanoarrow release is to create a `maint-VERSION` branch
and run
(e.g., `usethis::pr_init("maint-0.2.0")`) and push the branch to `upstream`. This is
a good opportunity to run though the above instructions to make sure the verification
script and instructions are up-to-date. You may also wish to start a manual dispatch
of the [Verification workflow](https://github.com/apache/arrow-nanoarrow/actions/workflows/verify.yaml)
targeting the maint-XX branch that was just pushed.
When this is complete, run
[01-prepare.R](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/01-prepare.sh):

```bash
Expand Down Expand Up @@ -287,7 +292,7 @@ the script but *does* need the
[dev/release/.env](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/.env.example)
file to exist setting the appropriate `GPG_KEY_ID` environment variable.

```
```bash
# 02-sign.sh <version> <rc-num>
dev/release/02-sign.sh 0.2.0 0
```
Expand All @@ -299,6 +304,15 @@ be on any particular branch but *does* need the
[dev/release/.env](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/.env.example)
file to exist setting the appropriate `APACHE_USERNAME` environment variable.

```
# 03-source.sh $0 <version> <rc-num>
dev/release/03-source.sh 0.2.0 0
```

You should check that the release verification runs locally and/or
start a
[Verification workflow](https://github.com/apache/arrow-nanoarrow/actions/workflows/verify.yaml) and wait for it to complete.

At this point the release candidate is suitable for a vote on the Apache Arrow developer mailing list.

```
Expand Down Expand Up @@ -333,17 +347,76 @@ After a passing release vote, the following tasks must be completed:

```
[ ] Closed GitHub milestone
[ ] Added release to Apache Reporter System
[ ] Added release to the Apache Reporter System
[ ] Uploaded artifacts to Subversion
[ ] Created GitHub release
[ ] Submit R package to CRAN
[ ] Sent announcement to [email protected]
[ ] Release blog post at https://github.com/apache/arrow-site/pull/288
[ ] Sent announcement to [email protected]
[ ] Removed old artifacts from SVN
[ ] Bumped versions on main
```

Template for the email to [email protected]:
### Close GitHub milestone

Find the appropriate entry in https://github.com/apache/arrow-nanoarrow/milestones/
and mark it as closed.

### Add release to the Apache Reporter System

The reporter system for Arrow can be found at
<https://reporter.apache.org/addrelease.html?arrow>. To add a release, a
PMC member must log in with their Apache username/password. The release
names are in the form `NANOARROW-0.2.0`.

### Upload artifacts to Subversion / Create GitHub Release

These are both handled by
[post-01-upload.sh](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/post-01-upload.sh).
This script must be run by a PMC member whose `APACHE_USERNAME` environment variable
has been set in `.env`.

```bash
dev/release/post-01-upload.sh 0.2.0 0
```

### Submit R package to CRAN

The R package submission occurs from a separate branch to facilitate including
any small changes requested by a member of the CRAN team; however, these
updates are usually automatic and do not require additional changes.
Before a release candidate is created, the first section of
`usethis::use_release_issue()` should all be completed (i.e., any changes
after release should be minor tweaks). The steps are:

- Ensure you are on the release branch (i.e., `git switch maint-0.2.0`)
- Run `usethis::pr_init("r-cran-maint-0.2.0")` and push the branch to your
fork.
- Ensure `cran_comments.md` is up-to-date.
- Run `devtools::check()` locally and verify that the package version is correct
- Run `urlchecker::url_check()`
- Run `devtools::check_win_devel()` and wait for the response
- Run `devtools::submit_cran()`
- Confirm submission email

Any changes required at this stage should be made as a PR into `main` and
cherry-picked into the `r-cran-maint-XXX` packaging branch. (i.e.,
`git cherry-pick 01234abcdef`). If any changes
to the source are required, bump the "tweak" version (e.g., `Version: 0.2.0.1`
in `DESCRIPTION`).

### Release blog post

Final review + merge of the blog post that was drafted prior to preparation of
the release candidate.

### Send announcement

This email should be sent to [email protected] and [email protected]. It
**must** be sent from your Apache email address and **must** be sent through
the `mail-relay.apache.org` outgoing server.

Email template:

```
[ANNOUNCE] Apache Arrow nanoarrow 0.2.0 Released
Expand Down Expand Up @@ -375,3 +448,25 @@ The Apache Arrow Community
[4]: https://lists.apache.org/[email protected]
[5]: https://lists.apache.org/[email protected]
```

### Remove old artifacts from SVN

These artifacts include any release candidates that were uploaded to
<https://dist.apache.org/repos/dist/dev/arrow/>. You can remove them
using:

```
# Once
export APACHE_USERNAME=xxx
# Once for every release candidate
svn rm --username=$APACHE_USERNAME -m "Clean up svn artifacts" https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-nanoarrow-0.2.0-rc0/
```

### Bumped versions on main

This is handled by
[post-02-bump-versions.sh](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/post-02-bump-versions.sh):

```bash
dev/release/post-02-bump-versions.sh . 0.2.0 0.3.0
```
2 changes: 1 addition & 1 deletion dev/release/post-01-upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ main() {

echo "Success! The release is available here:"
echo " https://dist.apache.org/repos/dist/release/arrow/${release_id}"
echo "Please push the tag apache-arrow-nanoarrow-${version}!"
echo "git push upstream apache-arrow-nanoarrow-${version} before continuing!"
}

main "$@"

0 comments on commit d0300df

Please sign in to comment.