This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new 7900b4db8 Update `object_store` release documentation (#6565)
7900b4db8 is described below

commit 7900b4db8e6daf87f72cbd1a18df52b7fa497510
Author: Andrew Lamb <[email protected]>
AuthorDate: Wed Oct 16 06:26:14 2024 -0400

    Update `object_store` release documentation (#6565)
    
    * Update object_store release documentation
    
    * Update object store
    
    * prettier
    
    * tweak
    
    * Update object_store/dev/release/README.md
    
    * update instructions
    
    * fix
    
    * Update object_store/dev/release/README.md
---
 dev/release/README.md              |  57 +++-------
 dev/release/file_release_pr.sh     |  40 -------
 object_store/dev/release/README.md | 207 ++++++++++++++++++++++++++++++++++++-
 3 files changed, 219 insertions(+), 85 deletions(-)

diff --git a/dev/release/README.md b/dev/release/README.md
index 177f33bcb..d2d9e48bb 100644
--- a/dev/release/README.md
+++ b/dev/release/README.md
@@ -21,29 +21,24 @@
 
 ## Overview
 
-This file documents the release process for:
-
-1. The "Rust Arrow Crates": `arrow`, `arrow-flight`, `parquet`, and 
`parquet-derive`.
-2. The `object_store` crate.
+This file documents the release process for the "Rust Arrow Crates": `arrow`, 
`arrow-flight`, `parquet`, and `parquet-derive`.
 
 ### The Rust Arrow Crates
 
-The Rust Arrow Crates are interconnected (e.g. `parquet` has an optional 
dependency on `arrow`) so we increment and release all of them together. We try 
to release a new version of "Rust Arrow Crates" every two weeks. This cadence 
balances getting new features into the community without overwhelming 
downstream projects with too frequent changes or overly burdening maintainers.
-
-If any code has been merged to master that has a breaking API change, as 
defined in [Rust RFC 
1105](https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md),
 the major version number incremented changed (e.g. `9.0.2` to `9.0.2`). 
Otherwise the new minor version incremented (e.g. `9.0.2` to `7.1.0`).
-
-### `object_store` crate
+The Rust Arrow Crates are interconnected (e.g. `parquet` has an optional 
dependency on `arrow`) so we increment and release all of them together.
 
-At the time of writing, we release a new version of `object_store` on demand 
rather than on a regular schedule.
+If any code has been merged to master that has a breaking API change, as 
defined
+in [Rust RFC 1105] he major version number is incremented (e.g. `9.0.2` to 
`10.0.2`).
+Otherwise the new minor version incremented (e.g. `9.0.2` to `9.1.0`).
 
-As we are still in an early phase, we use the 0.x version scheme. If any code 
has been merged to master that has a breaking API change, as defined in [Rust 
RFC 
1105](https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md),
 the minor version number incremented changed (e.g. `0.3.0` to `0.4.0`). 
Otherwise the patch version is incremented (e.g. `0.3.0` to `0.3.1`).
+[rust rfc 1105]: 
https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md
 
 # Release Mechanics
 
 ## Process Overview
 
 As part of the Apache governance model, official releases consist of
-signed source tarballs approved by the PMC.
+signed source tarballs approved by the Arrow PMC.
 
 We then use the code in the approved source tarball to release to
 crates.io, the Rust ecosystem's package manager.
@@ -60,9 +55,7 @@ labels associated with them.
 
 Now prepare a PR to update `CHANGELOG.md` and versions on `master` to reflect 
the planned release.
 
-For the Rust Arrow crates, do this in the root of this repository. For example 
[#2323](https://github.com/apache/arrow-rs/pull/2323)
-
-For `object_store` the same process is done in the `object_store` directory. 
Examples TBD
+Do this in the root of this repository. For example 
[#2323](https://github.com/apache/arrow-rs/pull/2323)
 
 ```bash
 git checkout master
@@ -90,7 +83,6 @@ python dev/release/label_issues.py
 # review change log / edit issues and labels if needed, rerun
 git commit -a -m 'Create changelog'
 
-
 # Manually edit ./dev/release/update_change_log.sh to reflect the release 
version
 # Create the changelog
 CHANGELOG_GITHUB_TOKEN=<TOKEN> ./dev/release/update_change_log.sh
@@ -98,9 +90,6 @@ CHANGELOG_GITHUB_TOKEN=<TOKEN> 
./dev/release/update_change_log.sh
 git commit -a -m 'Create changelog'
 
 git push
-
-# File the release PR
-export BRANCH=<RELEASE_BRANCH> && export GITHUB_USERNAME=<USERNAME> && export 
GITHUB_TOKEN=<TOKEN> && ./file_release_pr.sh
 ```
 
 Note that when reviewing the change log, rather than editing the
@@ -120,9 +109,7 @@ distribution servers.
 
 While the official release artifact is a signed tarball, we also tag the 
commit it was created for convenience and code archaeology.
 
-For a Rust Arrow Crates release, use a string such as `4.0.1` as the 
`<version>`.
-
-For `object_store` releases, use a string such as `object_store_0.4.0` as the 
`<version>`.
+Use a string such as `43.0.0` as the `<version>`.
 
 Create and push the tag thusly:
 
@@ -147,12 +134,6 @@ Rust Arrow Crates:
 ./dev/release/create-tarball.sh 4.1.0 2
 ```
 
-`object_store`:
-
-```shell
-./object_store/dev/release/create-tarball.sh 4.1.0 2
-```
-
 The `create-tarball.sh` script
 
 1. creates and uploads a release candidate tarball to the [arrow
@@ -198,7 +179,7 @@ For the release to become "official" it needs at least 
three Apache Arrow PMC me
 
 ## Verifying release candidates
 
-The `dev/release/verify-release-candidate.sh` or 
`object_store/dev/release/verify-release-candidate.sh` are scripts in this 
repository that can assist in the verification process. Run it like:
+The `dev/release/verify-release-candidate.sh` script in this repository can 
assist in the verification process. Run it like:
 
 ```
 ./dev/release/verify-release-candidate.sh 4.1.0 2
@@ -218,19 +199,13 @@ Rust Arrow Crates:
 ./dev/release/release-tarball.sh 4.1.0 2
 ```
 
-`object_store`
-
-```shell
-./object_store/dev/release/release-tarball.sh 4.1.0 2
-```
-
 Congratulations! The release is now official!
 
 ### Publish on Crates.io
 
-Only approved releases of the tarball should be published to
-crates.io, in order to conform to Apache Software Foundation
-governance standards.
+It is important that only approved releases of the tarball should be published
+to crates.io, in order to conform to Apache Software Foundation governance
+standards.
 
 An Arrow committer can publish this crate after an official project release has
 been made to crates.io using the following instructions.
@@ -269,9 +244,3 @@ Rust Arrow Crates:
 (cd parquet_derive && cargo publish)
 (cd arrow-integration-test && cargo publish)
 ```
-
-`object_store`
-
-```shell
-cargo publish
-```
diff --git a/dev/release/file_release_pr.sh b/dev/release/file_release_pr.sh
deleted file mode 100644
index 081b7c436..000000000
--- a/dev/release/file_release_pr.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# generates a standard release PR like this:
-# https://github.com/apache/arrow-rs/pull/2734
-#
-# Usage:
-# export BRANCH=<RELEASE_BRANCH> && export GITHUB_USERNAME=<USERNAME> && 
export GITHUB_TOKEN=<TOKEN> && ./file_release_pr.sh
-
-set -e
-
-FUTURE_RELEASE="35.0.0"
-ISSUE_NUMBER=3830
-
-TITLE="Update version to \`$FUTURE_RELEASE\` and update \`CHANGELOG\`"
-BODY="# Which issue does this PR close?\n\nCloses #$ISSUE_NUMBER.\n\n# 
Rationale for this change\nPrepare for biweekly release\n\n# What changes are 
included in this PR?\n\n# Are there any user-facing changes?\nYes"
-DATA="{\"title\":\"$TITLE\", \"body\":\"$BODY\", 
\"head\":\"$GITHUB_USERNAME:$BRANCH\",\"base\":\"master\"}"
-
-# Create the pull request
-curl -X POST \
-    -H "Accept: application/vnd.github+json" \
-    -H "Authorization: Bearer $GITHUB_TOKEN" \
-    https://api.github.com/repos/apache/arrow-rs/pulls \
-    -d "$DATA"
diff --git a/object_store/dev/release/README.md 
b/object_store/dev/release/README.md
index 89f6e579b..4077dcad9 100644
--- a/object_store/dev/release/README.md
+++ b/object_store/dev/release/README.md
@@ -17,4 +17,209 @@
   under the License.
 -->
 
-See instructions in [`/dev/release/README.md`](../../../dev/release/README.md)
+
+# Release Process
+
+## Overview
+
+This file documents the release process for the `object_store` crate.
+
+At the time of writing, we release a new version of `object_store` on demand 
rather than on a regular schedule.
+
+As we are still in an early phase, we use the 0.x version scheme. If any code 
has 
+been merged to master that has a breaking API change, as defined in [Rust RFC 
1105]
+the minor version number is incremented changed (e.g. `0.3.0` to `0.4.0`). 
+Otherwise the patch version is incremented (e.g. `0.3.0` to `0.3.1`).
+
+[Rust RFC 1105]: 
https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md
+# Release Mechanics
+
+## Process Overview
+
+As part of the Apache governance model, official releases consist of
+signed source tarballs approved by the PMC.
+
+We then use the code in the approved source tarball to release to
+crates.io, the Rust ecosystem's package manager.
+
+We create a `CHANGELOG.md` so our users know what has been changed between 
releases.
+
+The CHANGELOG is created automatically using
+[update_change_log.sh](https://github.com/apache/arrow-rs/blob/master/object_store/dev/release/update_change_log.sh)
+
+This script creates a changelog using github issues and the
+labels associated with them.
+
+## Prepare CHANGELOG and version:
+
+Now prepare a PR to update `CHANGELOG.md` and versions on `master` to reflect 
the planned release.
+
+Note  this process is done in the `object_store` directory. See [#6227] for an 
example
+
+[#6227]: https://github.com/apache/arrow-rs/pull/6227
+
+```bash
+# NOTE: Run commands in object_store sub directory (not main repo checkout)
+# cd object_store
+
+git checkout master
+git pull
+git checkout -b <RELEASE_BRANCH>
+
+# Update versions. Make sure to run it before the next step since we do not 
want CHANGELOG-old.md affected.
+sed -i '' -e 's/0.11.0/0.11.1/g' `find . -name 'Cargo.toml' -or -name '*.md' | 
grep -v CHANGELOG`
+git commit -a -m 'Update version'
+
+# ensure your github token is available
+export CHANGELOG_GITHUB_TOKEN=<TOKEN>
+
+# manually edit ./dev/release/update_change_log.sh to reflect the release 
version
+# create the changelog
+./dev/release/update_change_log.sh
+
+# review change log / and edit associated issues and labels if needed, rerun 
update_change_log.sh
+
+# Commit changes
+git commit -a -m 'Create changelog'
+
+# push changes to fork and create a PR to master
+git push
+```
+
+Note that when reviewing the change log, rather than editing the
+`CHANGELOG.md`, it is preferred to update the issues and their labels
+(e.g. add `invalid` label to exclude them from release notes)
+
+Merge this PR to `master` prior to the next step.
+
+## Prepare release candidate tarball
+
+After you have merged the updates to the `CHANGELOG` and version,
+create a release candidate using the following steps. Note you need to
+be a committer to run these scripts as they upload to the apache `svn`
+distribution servers.
+
+### Create git tag for the release:
+
+While the official release artifact is a signed tarball, we also tag the 
commit it was created for convenience and code archaeology.
+
+For `object_store` releases, use a string such as `object_store_0.4.0` as the 
`<version>`.
+
+Create and push the tag thusly:
+
+```shell
+git fetch apache
+git tag <version> apache/master
+# push tag to apache
+git push apache <version>
+```
+
+### Pick an Release Candidate (RC) number
+
+Pick numbers in sequential order, with `1` for `rc1`, `2` for `rc2`, etc.
+
+### Create, sign, and upload tarball
+
+Run `create-tarball.sh` with the `<version>` tag and `<rc>` and you found in 
previous steps.
+
+```shell
+./object_store/dev/release/create-tarball.sh 0.11.1 1
+```
+
+The `create-tarball.sh` script
+
+1. creates and uploads a release candidate tarball to the [arrow
+   dev](https://dist.apache.org/repos/dist/dev/arrow) location on the
+   apache distribution svn server
+
+2. provide you an email template to
+   send to [email protected] for release voting.
+
+### Vote on Release Candidate tarball
+
+Send an email, based on the output from the script to [email protected]. 
The email should look like
+
+```
+Draft email for [email protected] mailing list
+
+---------------------------------------------------------
+To: [email protected]
+Subject: [VOTE][RUST] Release Apache Arrow Rust Object Store 0.11.1 RC1
+
+Hi,
+
+I would like to propose a release of Apache Arrow Rust Object
+Store Implementation, version 0.11.1.
+
+This release candidate is based on commit: 
b945b15de9085f5961a478d4f35b0c5c3427e248 [1]
+
+The proposed release tarball and signatures are hosted at [2].
+
+The changelog is located at [3].
+
+Please download, verify checksums and signatures, run the unit tests,
+and vote on the release. There is a script [4] that automates some of
+the verification.
+
+The vote will be open for at least 72 hours.
+
+[ ] +1 Release this as Apache Arrow Rust Object Store
+[ ] +0
+[ ] -1 Do not release this as Apache Arrow Rust Object Store  because...
+
+[1]: 
https://github.com/apache/arrow-rs/tree/b945b15de9085f5961a478d4f35b0c5c3427e248
+[2]: 
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-object-store-rs-0.11.1-rc1
+[3]: 
https://github.com/apache/arrow-rs/blob/b945b15de9085f5961a478d4f35b0c5c3427e248/object_store/CHANGELOG.md
+[4]: 
https://github.com/apache/arrow-rs/blob/master/object_store/dev/release/verify-release-candidate.sh
+```
+
+For the release to become "official" it needs at least three Apache Arrow PMC 
members to vote +1 on it.
+
+## Verifying release candidates
+
+The `object_store/dev/release/verify-release-candidate.sh` script can assist 
in the verification process. Run it like:
+
+```
+./object_store/dev/release/verify-release-candidate.sh 0.11.0 1
+```
+
+#### If the release is not approved
+
+If the release is not approved, fix whatever the problem is and try again with 
the next RC number
+
+### If the release is approved,
+
+Move tarball to the release location in SVN, e.g. 
https://dist.apache.org/repos/dist/release/arrow/arrow-4.1.0/, using the 
`release-tarball.sh` script:
+
+
+```shell
+./object_store/dev/release/release-tarball.sh 4.1.0 2
+```
+
+Congratulations! The release is now official!
+
+### Publish on Crates.io
+
+Only approved releases of the tarball should be published to
+crates.io, in order to conform to Apache Software Foundation
+governance standards.
+
+An Arrow committer can publish this crate after an official project release has
+been made to crates.io using the following instructions.
+
+Follow [these
+instructions](https://doc.rust-lang.org/cargo/reference/publishing.html) to
+create an account and login to crates.io before asking to be added as an owner
+of the [arrow crate](https://crates.io/crates/arrow).
+
+Download and unpack the official release tarball
+
+Verify that the Cargo.toml in the tarball contains the correct version
+(e.g. `version = "0.11.0"`) and then publish the crate with the
+following commands
+
+
+```shell
+cargo publish
+```
+

Reply via email to