Start mail thread on Apache Drill dev list.
Example:
Subject:
[DISCUSS] Drill 1.17.0 release
Body:
Hi Drillers, It's been several months since the last release and it is time to do the next one. I am volunteering to be the release manager. If there are any issues on which work is in progress, that you feel we *must* include in the release, please post in reply to this thread. Based on your input we'll define release cut off date. Kind regards Thanks
Gather a list of Jiras that need to be included in the release, discuss possible blockers.
Identify the final cut-off date.
Before starting the release send a reminder to the dev list that merge into Apache Drill master is forbidden during release.
Example:
Note for the committers: until the release is not over and Drill version is not changed to 1.17.0-SNAPSHOT, please do not push any changes into Drill master.
svn co https://dist.apache.org/repos/dist/release/drill ~/src/release/drill-distYou also need writable access to Apache SVN. (You need to be a PMC member for this).
gpg2
package on Ubuntu, or gnupg
on MacOS.gpg --gen-key
and follow the instructions.gpg --output mygpgkey_pub.gpg --armor --export MY_KEY_ID gpg --output mygpgkey_sec.gpg --armor --export-secret-key MY_KEY_ID
gpg --import mygpgkey_pub.gpg gpg --allow-secret-key-import --import mygpgkey_sec.gpg
gpg --keyserver hkp://pool.sks-keyservers.net --trust-model always --send-keys
).KEYS
file in the Drill sources repo in the project root directory. Instruction on how to create the key signature is embedded at the beginning of the KEYS
file.KEYS
file in https://dist.apache.org
(PMC permissions required for this):svn co https://dist.apache.org/repos/dist/release/drill ~/src/release/drill-dist
.KEYS
file with required changes.svn ci -m "Add FirstName LastName's key to KEYS file"
.~/.ssh/id_rsa.pub
file. If you don't have the SSH key, you should generate it by running ssh-keygen
.sftp <username>@home.apache.org
.~/.m2/settings.xml
file as described here: http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env.~/.m2/security-settings.xml
.settings.xml
and security-settings.xml
:mvn --encrypt-master-password
and add an encrypted master password to security-settings.xml
file;mvn --encrypt-password
and add an encrypted Apache LDAP password to settings.xml
file.NOTICE
file in sources has the current copyright year.automated release process
described later).read -s GPG_PASSPHRASE
export GPG_TTY=$(tty)
cd ~/src/release && \ rm -rf drill/ && \ git clone git@github.com:apache/drill.git && \ cd drill
git checkout <git commit>
mvn install -Drat.skip=false -Dlicense.skip=false
MAVEN_OPTS='-Xmx4g -XX:MaxPermSize=512m'
mvn release:clean -Papache-release -DpushChanges=false -DskipTests
git push --delete origin drill-1.17.0 git tag -d drill-1.17.0
mvn -X release:prepare -Papache-release -DpushChanges=false -DskipTests -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests=true -Dmaven.javadoc.skip=false" -DreleaseVersion=1.17.0 -DdevelopmentVersion=1.18.0-SNAPSHOT -Dtag=drill-1.17.0
target
folder contains the following files (with the correct version number):apache-drill-1.17.0-src.tar.gz apache-drill-1.17.0-src.tar.gz.asc apache-drill-1.17.0-src.tar.gz.sha512 apache-drill-1.17.0-src.zip apache-drill-1.17.0-src.zip.asc apache-drill-1.17.0-src.zip.sha512
./tools/release-scripts/checksum.sh target/apache-drill-1.17.0-src.tar.gz ./tools/release-scripts/checksum.sh target/apache-drill-1.17.0-src.zip ./tools/release-scripts/checksum.sh distribution/target/apache-drill-1.17.0.tar.gz
[maven-release-plugin] prepare release drill-1.17.0 [maven-release-plugin] prepare for next development iterationAlso, you should see a new
drill-1.17.0
tag. Push the new tag to your personal github repository:git push origin drill-1.17.0
mvn release:perform -DconnectionUrl=scm:git:git@github.com:vvysotskyi/drill.git -DskipTests -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests=true -DconnectionUrl=scm:git:git@github.com:vvysotskyi/drill.git"If you want to additionally check resulting archives and jars, add
-Dmaven.deploy.skip=true
flag to avoid deploying jars to the Nexus repository:mvn release:perform -DconnectionUrl=scm:git:git@github.com:vvysotskyi/drill.git -DskipTests -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests=true -DconnectionUrl=scm:git:git@github.com:vvysotskyi/drill.git -Dmaven.deploy.skip=true"After checks are performed, run this command without the flag.
git checkout drill-1.17.0 mvn deploy -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE}
cp ~/src/release/drill/target/target/checkout/apache-drill-1.17.0-src.tar.gz* ~/release/1.17.0-rc0/ && \ cp ~/src/release/drill/target/target/checkout/apache-drill-1.17.0.zip* ~/release/1.17.0-rc0/ \ cp ~/src/release/drill/target/checkout/distribution/target/apache-drill-1.17.0.tar.gz* ~/release/1.17.0-rc0/ \
./tools/release-scripts/checksum.sh ~/release/1.17.0-rc0/apache-drill-1.17.0-src.tar.gz ./tools/release-scripts/checksum.sh ~/release/1.17.0-rc0/apache-drill-1.17.0-src.zip ./tools/release-scripts/checksum.sh ~/release/1.17.0-rc0/apache-drill-1.17.0.tar.gz
home.apache.org
for voting:scp ~/release/1.17.0-rc0/* <username>@home.apache.org:~/public_html/drill/releases/1.17.0/rc0
Run the following script:
tools/release-scripts/release.sh
The release script will push the maven artifacts to the Maven staging repo.
Go to the Apache Maven staging repo and close the new jar release. This step is done in the Maven GUI. For detailed instructions on sonatype GUI please refer to https://central.sonatype.org/pages/releasing-the-deployment.html#locate-and-examine-your-staging-repository.
Start vote (vote should last at least 72 hours).
Email should be sent to the Drill user and dev mailing lists.
Example:
Subject:
[VOTE] Release Apache Drill 1.12.0 - RC0
Body:
Hi all, I'd like to propose the first release candidate (RC0) of Apache Drill, version 1.12.0. The release candidate covers a total of 100500 resolved JIRAs [1]. Thanks to everyone who contributed to this release. The tarball artifacts are hosted at [2] and the maven artifacts are hosted at [3]. This release candidate is based on commit 54d3d201882ef5bc2e0f754fd10edfead9947b60 located at [4]. Please download and try out the release. The vote ends at 5 PM UTC (9 AM PDT, 7 PM EET, 10:30 PM IST), January 1, 1970. [ ] +1 [ ] +0 [ ] -1 Here's my vote: +1 [1] https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12313820&version=12341087 [2] http://home.apache.org/~arina/drill/releases/1.12.0/rc0/ [3] https://repository.apache.org/content/repositories/orgapachedrill-1043/ [4] https://github.com/arina-ielchiieva/drill/commits/drill-1.12.0
If the vote fails, cancel RC and prepare new RC:
Send an email with announcing about canceling the vote.
Example:
Subject:
[CANCEL] [VOTE] Release Apache Drill 1.17.0 - RC0
Body:
Hi all, The vote for Apache Drill 1.17.0 - RC0 was canceled due to [list issues] Thanks to all who voted. A new release will be tagged as 1.17.0 - RC1 and will be available for voting soon.
Go to the Apache Maven staging repo and drop the jar release.
Delete the release tag locally and remotely:
git push --delete origin drill-1.17.0 git tag -d drill-1.17.0
If the vote passes, finish the release:
Count votes (email to the dev mailing list).
Example:
Subject:
[RESULT] [VOTE] Release Apache Drill 1.12.0 RC1
Body:
The vote passes. Thanks to everyone who has tested the release candidate and given their comments and votes. Final tally: 3x +1 (binding): Arina, Aman, Parth 5x +1 (non-binding): Vitalii, Holger, Prasad, Vova, Charles No 0s or -1s. I'll start process for pushing the release artifacts and send an announcement once propagated. Kind regards
Add the release to the dist.apache.org and delete the old version, keeping two most recent. This can only done by a PMC member:
svn co https://dist.apache.org/repos/dist/release/drill ~/src/release/drill-dist cd ~/src/release/drill-dist mkdir drill-1.17.0 cp -r ~/release/1.17.0-rc0 drill-1.17.0 svn add drill-1.17.0 svn commit --message "Upload Apache Drill 1.17.0 release." svn delete 1.15.0 svn commit --message "Deleting drill-1.15.0 to keep only last two versions"
Go to the Apache Maven staging repo and promote the release to the production.
Create branch and tag for this release and update Drill version in master (if used automated scripts, tag will be like this drill-1.11.0
. Branch should be named as 1.11.0
). Add release description in GitHub Drill releases page: open release tag, press Edit tag
and add Release title like Apache Drill 1.17.0
and specify release description.
After new tag is pushed, check that DockerHub triggered job to build and publish new image for the release to https://hub.docker.com/repository/docker/apache/drill.
Wait 24 hours, check download mirrors.
Post release:
“What's New” for the new release.
Update Apache JIRA and add release date for this release. Add a new release tag if not already there.
Update Drill Web site:
_data/version.json
- making sure to either match your release notes url to the one below (docs/apache-drill-1-6-0-release-notes
) or update it with the different URL:{ "display_version": "1.6", "full_version": "1.6.0", "release_date": "February 16, 2016", "blog_post":"/blog/2016/02/16/drill-1.6-released", "release_notes": "https://drill.apache.org/docs/apache-drill-1-6-0-release-notes/" }As an example, may be used this commit
git checkout drill-1.17.0
target/site/apidocs
directory:mvn install javadoc:aggregate -DskipTests
gh-pages
branch where sources for site are placed:git checkout gh-pages
rm -rf apidocs
mv target/site/apidocs .
Publish JavaDocs for the Apache Drill 1.17.0
Post the announcement about new release on Apache Drill Twitter.
A PMC member needs to update the release date for new release here: https://reporter.apache.org/addrelease.html?drill
Send the announcement to the dev@drill.apache.org
and announce@apache.org
mailing lists.
Example:
Subject:
[ANNOUNCE] Apache Drill 1.17.0 Released
Body:
On behalf of the Apache Drill community, I am happy to announce the release of Apache Drill 1.17.0. Drill is an Apache open-source SQL query engine for Big Data exploration. Drill is designed from the ground up to support high-performance analysis on the semi-structured and rapidly evolving data coming from modern Big Data applications, while still providing the familiarity and ecosystem of ANSI SQL, the industry-standard query language. Drill provides plug-and-play integration with existing Apache Hive and Apache HBase deployments. For information about Apache Drill, and to get involved, visit the project website [1]. Total of 200 JIRA's are resolved in this release of Drill with following new features and improvements [2]: - Hive complex types support (DRILL-7251, DRILL-7252, DRILL-7253, DRILL-7254) - ESRI Shapefile (shp) (DRILL-4303) and Excel (DRILL-7177) format plugins support - Drill Metastore support (DRILL-7272, DRILL-7273, DRILL-7357) - Upgrade to HADOOP-3.2 (DRILL-6540) - Schema Provision using File / Table Function (DRILL-6835) - Parquet runtime row group pruning (DRILL-7062) - User-Agent UDFs (DRILL-7343) - Canonical Map<K,V> support (DRILL-7096) - Kafka storage plugin improvements (DRILL-6739, DRILL-6723, DRILL-7164, DRILL-7290, DRILL-7388) For the full list please see release notes [3]. The binary and source artifacts are available here [4]. Thanks to everyone in the community who contributed to this release! 1. https://drill.apache.org/ 2. https://drill.apache.org/blog/2019/12/26/drill-1.17-released/ 3. https://drill.apache.org/docs/apache-drill-1-17-0-release-notes/ 4. https://drill.apache.org/download/