diff --git a/content/en/docs/Contribution Guidelines/releasing.md b/content/en/docs/Contribution Guidelines/releasing.md index 2a8c3055..120601b7 100644 --- a/content/en/docs/Contribution Guidelines/releasing.md +++ b/content/en/docs/Contribution Guidelines/releasing.md @@ -3,19 +3,23 @@ title: "Releasing Parquet" linkTitle: "Releasing Parquet" weight: 4 description: > - How to release Parquet + How to release Parquet-Java --- ### Setup -You will need: \* PGP code signing keys, published in [KEYS](https://downloads.apache.org/parquet/KEYS) \* Permission to stage artifacts in Nexus +You will need: -Make sure you have permission to deploy Parquet artifacts to Nexus by pushing a snapshot: +- PGP code signing keys, published in [KEYS](https://downloads.apache.org/parquet/KEYS). +- Permission to stage artifacts in [Nexus](https://repository.apache.org/). - mvn deploy +Make sure you have permission to deploy Parquet artifacts to Nexus by pushing a snapshot: +```sh +mvn deploy +``` -If you have problems, read the [publishing Maven artifacts documentation](https://www.apache.org/dev/publishing-maven-artifacts.html) +If you have problems, read the [publishing Maven artifacts documentation](https://www.apache.org/dev/publishing-maven-artifacts.html). ### Release process @@ -23,35 +27,32 @@ Parquet uses the maven-release-plugin to tag a release and push binary artifacts Before you start the release process: -1. Verify that the release is finished (no planned JIRAs are pending and all patches are cherry-picked to the release branch) -2. Resolve all associated JIRAs with correct target version and create the next unreleased version in the JIRA project -3. Build and test the project -4. Create a new branch for the release if this is a new minor version. For example, if the new minor version is 1.13.0, create a new branch `parquet-1.13.x` -5. Update the change log - * Go to the release notes for the release in JIRA - * Copy the HTML and convert it to markdown with an [online converter](https://domchristie.github.io/turndown/) - * Add the content to CHANGES.md and update formatting - * Commit the update to CHANGES.md and make sure it is committed to both release and master branches +1. Verify that the release is finished (no planned Issues/PRs are pending [on the milestone](https://github.com/apache/parquet-java/milestones)) +1. Build and test the project +1. Create a new branch for the release if this is a new minor version. For example, if the new minor version is 1.14.0, create a new branch `parquet-1.14.x` #### 1\. Run the prepare script - dev/prepare-release.sh - +```sh +./dev/prepare-release.sh +``` This runs maven’s release prepare with a consistent tag name. After this step, the release tag will exist in the git repository. If this step fails, you can roll back the changes by running these commands. - find ./ -type f -name '*.releaseBackup' -exec rm {} \; - find ./ -type f -name 'pom.xml' -exec git checkout {} \; - +```sh +find ./ -type f -name '*.releaseBackup' -exec rm {} \; +find ./ -type f -name 'pom.xml' -exec git checkout {} \; +``` #### 2\. Run release:perform to stage binaries - mvn release:perform - +Upload binary artifacts for the release tag to [Nexus](https://repository.apache.org/): -This uploads binary artifacts for the release tag to [Nexus](https://repository.apache.org/). +```sh +mvn release:perform +``` #### 3\. In Nexus, close the staging repository @@ -64,8 +65,9 @@ Closing a staging repository makes the binaries available in [staging](https://r #### 4\. Run the source tarball script - dev/source-release.sh - +```sh +dev/source-release.sh +``` This script builds the source tarball from the release tag’s SHA1, signs it, and uploads the necessary files with SVN. @@ -73,6 +75,10 @@ The source release is pushed to [https://dist.apache.org/repos/dist/dev/parquet/ The last message from the script is the release commit’s SHA1 hash and URL for the VOTE e-mail. +### 5\. Prepare the pre-release + +Creating the [pre-release](https://github.com/apache/parquet-java/releases/new) will give the users the changelog to see if they need to validate certain functionality. First select the newly created `rc` (ex: `apache-parquet-1.15.0-rc0`) tag, and then the previous release (ex. `apache-parquet-1.14.1`). Hit the `Generate release notes` button to auto generate the notes. You can curate the notes a bit by removing unrelated changes (whitespace, test-only changes) and sorting them to make them easier to digest. Make sure to check the `Set as pre-release` checkbox as this is a release candidate. + #### 5\. Send a VOTE e-mail to [dev@parquet.apache.org](mailto:dev@parquet.apache.org) Here is a template you can use. Make sure everything applies to your release. @@ -94,6 +100,9 @@ Here is a template you can use. Make sure everything applies to your release. You can find the KEYS file here: * https://downloads.apache.org/parquet/KEYS + You can find the changelog here: + https://github.com/apache/parquet-java/releases/tag/apache-parquet--rc + Binary artifacts are staged in Nexus here: * https://repository.apache.org/content/groups/staging/org/apache/parquet/ @@ -115,10 +124,11 @@ After a release candidate passes a vote, the candidate needs to be published as #### 1\. Tag final release and set development version - dev/finalize-release - +```sh +./dev/finalize-release +``` -This will add the final release tag to the RC tag and sets the new development version in the pom files. If everything is fine push the changes and the new tag to github: `git push --follow-tags` +This will add the final release tag to the RC tag and sets the new development version in the pom files. If everything is fine push the changes and the new tag to GitHub: `git push --follow-tags` #### 2\. Release the binary repository in Nexus @@ -133,29 +143,19 @@ Releasing a binary repository publishes the binaries to [public](https://reposit First, check out the candidates and releases locations in SVN: - mkdir parquet - cd parquet - svn co https://dist.apache.org/repos/dist/dev/parquet candidates - svn co https://dist.apache.org/repos/dist/release/parquet releases - - -Next, copy the directory for the release candidate the passed from candidates to releases and rename it; remove the “-rcN” part of the directory name. - - cp -r candidates/apache-parquet--rcN/ releases/apache-parquet- - - -Then add and commit the release artifacts: - - cd releases - svn add apache-parquet- - svn ci -m "Parquet: Add release " - +```sh +svn mv https://dist.apache.org/repos/dist/dev/parquet/apache-parquet--rcN/ https://dist.apache.org/repos/dist/release/parquet/apache-parquet- -m "Parquet: Add release " +``` #### 4\. Update parquet.apache.org Update the downloads page on parquet.apache.org. Instructions for updating the site are on the [contribution page](https://parquet.apache.org/docs/contribution-guidelines/contributing/). -#### 5\. Send an ANNOUNCE e-mail to [announce@apache.org](mailto:announce@apache.org) and the dev list +### 5\. Add the release to GitHub + +Add a [new release to GitHub](https://github.com/apache/parquet-java/releases/new). First select the newly tag (ex: `apache-parquet-1.15.0`), and then the previous release (ex. `apache-parquet-1.14.1`). You can copy the release notes from the RC that passed the vote. + +#### 6\. Send an ANNOUNCE e-mail to [announce@apache.org](mailto:announce@apache.org) and the dev list [ANNOUNCE] Apache Parquet release @@ -166,7 +166,7 @@ Update the downloads page on parquet.apache.org. Instructions for updating the s space-efficient encodings and a compressed and splittable structure for processing frameworks like Hadoop. - Changes are listed at: https://github.com/apache/parquet-mr/blob/apache-parquet-/CHANGES.md + Changes are listed at: https://github.com/apache/parquet-java/releases/tag/apache-parquet- This release can be downloaded from: https://parquet.apache.org/downloads/