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

docs: Proposal for source release process #556

Merged
merged 11 commits into from
Jun 14, 2024
36 changes: 22 additions & 14 deletions dev/release/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ specific language governing permissions and limitations
under the License.
-->

# Comet Release Process
# Comet Source Release Process
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is Source means here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are defining the process for making an official ASF release, which must be a source tarball.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is the DataFusion 39 release, for example:

Screenshot 2024-06-11 at 12 24 15 PM


This documentation is for creating an official source release of Apache DataFusion Comet.

Expand All @@ -31,31 +31,28 @@ Here is a brief overview of the steps involved in creating a release:

This part of the process can be performed by any committer.

- Create and merge a PR to update the version number & update the changelog
- Push a release candidate tag (e.g. 0.1.0-rc1) to the Apache repository
Here are the steps, using the 0.1.0 release as an example:

- Create a release branch from the latest commit in main (e.g. `git checkout -b release-0.1.0`) and push to the Apache repo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just thinking - perhaps we can convert all steps into github commands?

- Create and merge a PR against the release branch to update the Maven version from `0.1.0-SNAPSHOT` to `0.1.0`
- Generate a changelog for all changes between the previous release tag and the release branch and create a PR against the main branch to add this
- Cherry-pick the changelog PR into the release branch
- Tag the release branch with a release candidate tag (`0.1.0-rc1`) and push to the Apache repo
- Create a PR against the main branch to update the Rust crate version to `0.2.0` and the Maven version to `0.2.0-SNAPHOT`

## Publishing the Release Candidate

This part of the process can mostly only be performed by a PMC member.

- Run the create-tarball script to create the source tarball and upload it to the dev subversion repository
- Run the create-tarball script on the release candidate tag (`0.1.0-rc1`) to create the source tarball and upload it to the dev subversion repository
- Start an email voting thread
- Once the vote passes, run the release-tarball script to move the tarball to the release subversion repository
- Register the release with the [Apache Reporter Service](https://reporter.apache.org/addrelease.html?datafusion) using
a version such as `COMET-0.1.0`
- Delete old release candidates and releases from the subversion repositories
- Push a release tag (e.g. 0.1.0) to the Apache repository
- Push a release tag (`0.1.0`) to the Apache repository
- Reply to the vote thread to close the vote and announce the release

## Publishing JAR Files to Maven

The process for publishing JAR files to Maven is not defined yet.

## Publishing to crates.io

We may choose to publish the `datafusion-comet` to crates.io so that other Rust projects can leverage the
Spark-compatible operators and expressions outside of Spark.

## Verifying Release Candidates

The vote email will link to this section of this document, so this is where we will need to provide instructions for
Expand All @@ -77,6 +74,17 @@ Another way of verifying the release is to follow the
[Comet Benchmarking Guide](https://datafusion.apache.org/comet/contributor-guide/benchmarking.html) and compare
performance with the previous release.

## Publishing Binary Releases

### Publishing JAR Files to Maven

The process for publishing JAR files to Maven is not defined yet.

### Publishing to crates.io

We may choose to publish the `datafusion-comet` to crates.io so that other Rust projects can leverage the
Spark-compatible operators and expressions outside of Spark.

## Post Release Activities

Writing a blog post about the release is a great way to generate more interest in the project. We typically create a
Expand Down