@@ -28,7 +28,7 @@ This file documents the release process for the "Rust Arrow Crates": `arrow`, `a
2828The Rust Arrow Crates are interconnected (e.g. ` parquet ` has an optional dependency on ` arrow ` ) so we increment and release all of them together.
2929
3030If any code has been merged to main that has a breaking API change, as defined
31- in [ Rust RFC 1105] he major version number is incremented (e.g. ` 9.0.2 ` to ` 10.0.2 ` ).
31+ in [ Rust RFC 1105] the major version number is incremented (e.g. ` 9.0.2 ` to ` 10.0.0 ` ).
3232Otherwise the new minor version incremented (e.g. ` 9.0.2 ` to ` 9.1.0 ` ).
3333
3434[ rust rfc 1105 ] : https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md
@@ -45,56 +45,50 @@ crates.io, the Rust ecosystem's package manager.
4545
4646We create a ` CHANGELOG.md ` so our users know what has been changed between releases.
4747
48- The CHANGELOG is created automatically using
49- [ update_change_log.sh] ( https://github.com/apache/arrow-rs/blob/main/dev/release/update_change_log.sh )
48+ ## Prepare CHANGELOG and version
5049
51- This script creates a changelog using github issues and the
52- labels associated with them.
53-
54- ## Prepare CHANGELOG and version:
50+ - Ensure [ ` git-cliff ` ] ( https://git-cliff.org/docs/installation/ ) is installed
5551
5652Now prepare a PR to update ` CHANGELOG.md ` and versions on ` main ` to reflect the planned release.
5753
58- Do this in the root of this repository. For example [ #2323 ] ( https://github.com/apache/arrow-rs/pull/2323 )
54+ First copy the contents of ` CHANGELOG.md ` into ` CHANGELOG-old.md ` .
55+
56+ Then do this in the root of this repository. For example [ #2323 ] ( https://github.com/apache/arrow-rs/pull/2323 )
5957
6058``` bash
6159git checkout main
6260git pull
6361git checkout -b < RELEASE_BRANCH>
6462
65- # Update versions. Make sure to run it before the next step since we do not want CHANGELOG-old.md affected.
66- sed -i ' ' -e ' s/14.0.0/39.0.0/g' ` find . -name ' Cargo.toml' -or -name ' *.md' | grep -v CHANGELOG.md | grep -v README.md`
63+ # Update versions.
64+ sed -i ' ' -e ' s/14.0.0/39.0.0/g' ` find . -name ' Cargo.toml' -or -name ' *.md' | grep -v CHANGELOG.md | grep -v CHANGELOG-old.md | grep -v README.md`
65+ cargo check # update Cargo.lock with new versions
6766git commit -a -m ' Update version'
6867
69- # ensure your github token is available
70- export ARROW_GITHUB_API_TOKEN=< TOKEN>
68+ # Assuming remote name is apache; if named differently ensure this is changed,
69+ # since we need the tags from the GitHub repository
70+ git fetch apache --tags
7171
72- # manually edit ./dev/release/update_change_log.sh to reflect the release version
73- # create the changelog
74- ./dev/release/update_change_log.sh
75- # commit the initial changes
76- git commit -a -m ' Create changelog'
72+ # ensure your github token is available
73+ export GITHUB_TOKEN=< TOKEN>
7774
78- # run automated script to copy labels to issues based on referenced PRs
79- # (NOTE 1: this must be done by a committer / other who has
80- # write access to the repository)
81- #
82- # NOTE 2: this must be done after creating the initial CHANGELOG file
83- python dev/release/label_issues.py
75+ # e.g. TAG=60.0.0; this is just used to format the CHANGELOG, so tag doesn't
76+ # need to exist yet, and don't put an RC tag either
77+ # (we are excluding our above version bump commit from the changelog)
78+ git-cliff --tag < TAG> --unreleased --output CHANGELOG.md --skip-commit $( git rev-parse HEAD)
8479
85- # review change log / edit issues and labels if needed, rerun, repeat as necessary
86- # note you need to revert changes to CHANGELOG-old.md if you want to rerun the script
87- ./dev/release/update_change_log.sh
80+ # review change log, adjust labels on PR's as required
81+ # can rerun above git-cliff command if needed
8882
89- # Commit the changes
90- git commit -a -m ' Update changelog'
83+ # commit the changelog
84+ git commit -a -m ' Create changelog'
9185
9286git push
9387```
9488
9589Note that when reviewing the change log, rather than editing the
96- ` CHANGELOG.md ` , it is preferred to update the issues and their labels
97- (e.g. add ` invalid ` label to exclude them from release notes)
90+ ` CHANGELOG.md ` , it is preferred to update the PRs and their labels
91+ (e.g. add ` development-process ` label to exclude them from release notes)
9892
9993Merge this PR to ` main ` prior to the next step.
10094
@@ -109,7 +103,7 @@ distribution servers.
109103
110104Pick numbers in sequential order, with ` 1 ` for ` rc1 ` , ` 2 ` for ` rc2 ` , etc.
111105
112- ### Create git tag for the release:
106+ ### Create git tag for the release
113107
114108While the official release artifact is a signed tarball, we also tag the commit it was created for convenience and code archaeology.
115109
@@ -141,39 +135,12 @@ The `create-tarball.sh` script
141135 apache distribution svn server
142136
1431372 . provide you an email template to
144- send to dev@arrow.apache.org for release voting.
138+ send to < dev@arrow.apache.org > for release voting.
145139
146140### Vote on Release Candidate tarball
147141
148- Send an email, based on the output from the script to dev@arrow.apache.org . The email should look like
149-
150- ```
151- To: dev@arrow.apache.org
152- Subject: [VOTE][RUST] Release Apache Arrow
153-
154- Hi,
155-
156- I would like to propose a release of Apache Arrow Rust
157- Implementation, version 4.1.0.
158-
159- This release candidate is based on commit: a5dd428f57e62db20a945e8b1895de91405958c4 [1]
160-
161- The proposed release tarball and signatures are hosted at [2].
162- The changelog is located at [3].
163-
164- Please download, verify checksums and signatures, run the unit tests,
165- and vote on the release.
166-
167- The vote will be open for at least 72 hours.
168-
169- [ ] +1 Release this as Apache Arrow Rust
170- [ ] +0
171- [ ] -1 Do not release this as Apache Arrow Rust because...
172-
173- [1]: https://github.com/apache/arrow-rs/tree/a5dd428f57e62db20a945e8b1895de91405958c4
174- [2]: https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-rs-4.1.0
175- [3]: https://github.com/apache/arrow-rs/blob/a5dd428f57e62db20a945e8b1895de91405958c4/CHANGELOG.md
176- ```
142+ Send an email, based on the output from the script to < dev@arrow.apache.org > .
143+ See an [ example of how the email should look] ( https://lists.apache.org/thread/2vpxdt6n7kzo72sxpr7q8yyby4495gnk ) .
177144
178145For the release to become "official" it needs at least three Apache Arrow PMC members to vote +1 on it.
179146
@@ -189,7 +156,7 @@ The `dev/release/verify-release-candidate.sh` script in this repository can assi
189156
190157If the release is not approved, fix whatever the problem is and try again with the next RC number
191158
192- ### If the release is approved,
159+ ### If the release is approved
193160
194161Then, create a new release on GitHub using the tag ` <version> ` (e.g. ` 4.1.0 ` ).
195162
@@ -200,7 +167,7 @@ git tag <version> <version>-<rc>
200167git push apache < version>
201168```
202169
203- Move tarball to the release location in SVN, e.g. https://dist.apache.org/repos/dist/release/arrow/arrow-rs-4.1.0/ , using the ` release-tarball.sh ` script:
170+ Move tarball to the release location in SVN, e.g. < https://dist.apache.org/repos/dist/release/arrow/arrow-rs-4.1.0/ > , using the ` release-tarball.sh ` script:
204171
205172``` shell
206173./dev/release/release-tarball.sh 4.1.0 2
@@ -212,7 +179,7 @@ Congratulations! The release is now official!
212179
213180The [ ` release.yml ` ] workflow automatically creates a github release for the tag.
214181Check that the release is created and contains the correct changelog here:
215- https://github.com/apache/arrow-rs/releases
182+ < https://github.com/apache/arrow-rs/releases >
216183
217184[ `release.yml` ] : https://github.com/apache/arrow-rs/blob/main/.github/workflows/release.yml#L1-L0
218185
@@ -249,7 +216,6 @@ Rust Arrow Crates:
249216(cd arrow-ipc && cargo publish)
250217(cd arrow-csv && cargo publish)
251218(cd arrow-json && cargo publish)
252- (cd arrow-avro && cargo publish)
253219(cd arrow-arith && cargo publish)
254220(cd arrow-string && cargo publish)
255221(cd arrow-row && cargo publish)
0 commit comments