You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2014/08/19 03:59:48 UTC

[3/3] git commit: Copy and adapt release_commands.pl from Lucy.

Copy and adapt release_commands.pl from Lucy.


Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/65ded2ff
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/65ded2ff
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/65ded2ff

Branch: refs/heads/prep_0.4.0
Commit: 65ded2ffd27b2e93c4a0067bc33f3b697a3fa55c
Parents: ab18ef0
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Mon Aug 18 18:57:31 2014 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Mon Aug 18 18:57:55 2014 -0700

----------------------------------------------------------------------
 devel/bin/release_commands.pl | 316 +++++++++++++++++++++++++++++++++++++
 1 file changed, 316 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/65ded2ff/devel/bin/release_commands.pl
----------------------------------------------------------------------
diff --git a/devel/bin/release_commands.pl b/devel/bin/release_commands.pl
new file mode 100755
index 0000000..eeee9d0
--- /dev/null
+++ b/devel/bin/release_commands.pl
@@ -0,0 +1,316 @@
+#!/usr/bin/perl
+
+# 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.
+
+use 5.010;
+use strict;
+use warnings;
+use Getopt::Long qw( GetOptions );
+
+my $usage = join( ' ',
+    $0, qq|--version=X.Y.Z-rcN|, qq|--apache-id=APACHE_ID|,
+    qq|--name="FULL NAME"| )
+    . "\n";
+
+my ( $full_rc_version, $apache_id, $name );
+GetOptions(
+    'version=s'   => \$full_rc_version,
+    'apache-id=s' => \$apache_id,
+    'name=s'      => \$name,
+);
+$full_rc_version or die $usage;
+$apache_id       or die $usage;
+$name            or die $usage;
+$apache_id =~ /^\w+$/ or die $usage;
+$full_rc_version =~ m/^(\d+)\.(\d+)\.(\d+)-rc(\d+)$/ or die $usage;
+my ( $major, $minor, $micro, $rc ) = ( $1, $2, $3, $4 );
+my $x_y_z_version = sprintf( "%d.%d.%d", $major, $minor, $micro );
+
+say qq|###############################################################|;
+say qq|# Commands to execute release for |
+    . qq|Apache Clownfish $x_y_z_version RC $rc|;
+say qq|###############################################################|;
+
+say qq|# If your code signing key is not already available from pgp.mit.edu|;
+say qq|# and <http://www.apache.org/dist/lucy/KEYS>, publish it.|;
+say qq|[...]\n|;
+
+say qq|# chdir to the top level of your local copy of the Clownfish repository.|;
+say qq|[...]\n|;
+
+if ( $micro == 0 && $rc < 2 ) {
+    say qq|# Check out the master branch.|;
+    say qq|git checkout master\n|;
+}
+else {
+    say qq|# Check out the $major.$minor branch.|;
+    say qq|git checkout $major.$minor\n|;
+}
+
+if ( $rc < 2 ) {
+    say qq|# Since this is the first RC, run update_version.|;
+    say qq|./devel/bin/update_version $x_y_z_version\n|;
+    say qq|# Update the the CHANGES file and associate release|;
+    say qq|# $x_y_z_version with today's date.|;
+    say qq|[...]\n|;
+    say qq|# Commit version bump and CHANGES.|;
+    say qq|git commit -m "Updating CHANGES and version number |
+        . qq|for release $x_y_z_version."\n|;
+}
+
+if ( $micro == 0 && $rc < 2 ) {
+    say qq|# Since this is the first release in a series (i.e. X.Y.0),|;
+    say qq|# create a branch.|;
+    say qq|git checkout -b $major.$minor|;
+}
+
+say qq|# Create a tag for the release candidate.|;
+say qq|git tag apache-clownfish-$full_rc_version |
+    . qq|-m "Tagging release candidate $rc for $x_y_z_version."\n|;
+
+say qq|# Export a pristine copy of the source from the release candidate|;
+say qq|# tag.|;
+say qq|git archive --prefix=apache-clownfish-$x_y_z_version/ |
+    . qq|--output=apache-clownfish-$x_y_z_version.tar.gz |
+    . qq|apache-clownfish-$full_rc_version\n|;
+
+say qq|# Create an RC directory in our dev area on dist.apache.org|;
+say qq|# and check out a copy.|;
+say qq|svn mkdir -m "Create RC dir for apache-clownfish-$full_rc_version" |
+    . qq|https://dist.apache.org/repos/dist/dev/lucy/clownfish/apache-clownfish-$full_rc_version|;
+say qq|svn co |
+    . qq|https://dist.apache.org/repos/dist/dev/lucy/clownfish/apache-clownfish-$full_rc_version\n|;
+
+say qq|# Move the tarball and a copy of the CHANGES file into the RC dir,|;
+say qq|# then chdir into it.|;
+say qq|mv apache-clownfish-$x_y_z_version.tar.gz apache-clownfish-$full_rc_version|;
+say qq|cp -p CHANGES apache-clownfish-$full_rc_version/CHANGES-$x_y_z_version.txt|;
+say qq|cd apache-clownfish-$full_rc_version\n|;
+
+say qq|# Generate checksums.|;
+say qq|perl -MDigest -e '\$d = Digest->new("MD5"); open \$fh, |
+    . qq|"<apache-clownfish-$x_y_z_version.tar.gz" or die; |
+    . qq|\$d->addfile(\$fh); print \$d->hexdigest; |
+    . qq|print "  apache-clownfish-$x_y_z_version.tar.gz\\n"' > |
+    . qq| apache-clownfish-$x_y_z_version.tar.gz.md5|;
+say qq|perl -MDigest -e '\$d = Digest->new("SHA-512"); open \$fh, |
+    . qq|"<apache-clownfish-$x_y_z_version.tar.gz" or die; |
+    . qq|\$d->addfile(\$fh); print \$d->hexdigest; |
+    . qq|print "  apache-clownfish-$x_y_z_version.tar.gz\\n"' > |
+    . qq| apache-clownfish-$x_y_z_version.tar.gz.sha\n|;
+
+say qq|# Sign the release.|;
+say qq|gpg --armor --output apache-clownfish-$x_y_z_version.tar.gz.asc |
+    . qq|--detach-sig apache-clownfish-$x_y_z_version.tar.gz\n|;
+
+say qq|# Add the artifacts and commit to the dev area on dist.apache.org.|;
+say qq|svn add |
+    . qq|apache-clownfish-$x_y_z_version.tar.gz |
+    . qq|apache-clownfish-$x_y_z_version.tar.gz.md5 |
+    . qq|apache-clownfish-$x_y_z_version.tar.gz.sha |
+    . qq|apache-clownfish-$x_y_z_version.tar.gz.asc |
+    . qq|CHANGES-$x_y_z_version.txt |;
+say qq|svn ci -m "Add apache-clownfish-$x_y_z_version artifacts"\n|;
+
+say qq|# Perform whatever QC seems prudent on the tarball, installing it|;
+say qq|# on test systems, etc.|;
+say qq|[...]\n|;
+
+say qq|# Push your branch and the tag for the RC.|;
+say qq|git push origin $major.$minor|;
+say qq|git push origin apache-clownfish-$full_rc_version\n|;
+
+say qq|###############################################################|;
+say qq|# Voting|;
+say qq|###############################################################\n|;
+
+say qq|# Call a release vote on the dev list, referring to the artifacts|;
+say qq|# made public in the previous step and using the boilerplate email|;
+say qq|# below.|;
+say qq|[...]\n|;
+
+say qq|###############################################################|;
+say qq|# After the vote has passed...|;
+say qq|###############################################################\n|;
+
+say qq|# Tag the release and delete the RC tags.|;
+say qq|git tag apache-clownfish-$x_y_z_version apache-clownfish-$full_rc_version|;
+say qq|git push origin apache-clownfish-$x_y_z_version|;
+for ( 1 .. $rc ) {
+    my $rc_tag = qq|apache-clownfish-$major.$minor.$micro-rc$_|;
+    say qq|git tag -d $rc_tag|;
+    say qq|git push origin :$rc_tag|;
+}
+say "";
+
+say qq|# Copy release artifacts to the production dist directory and|;
+say qq|# remove the RC dir.  The "svnmucc" app, which ships with Subversion|;
+say qq|# 1.7, is required.  If you don't have it, you can ssh to|;
+say qq|# people.apache.org and run the commands from there.|;
+say qq|ssh $apache_id\@people.apache.org|;
+say qq|svnmucc -m "Publish Apache Clownfish $x_y_z_version" |
+    . qq|-U https://dist.apache.org/repos/dist/ |
+    . qq|mv dev/lucy/clownfish/apache-clownfish-$full_rc_version/apache-clownfish-$x_y_z_version.tar.gz |
+    . qq|release/lucy/clownfish/apache-clownfish-$x_y_z_version.tar.gz |
+    . qq|mv dev/lucy/clownfish/apache-clownfish-$full_rc_version/apache-clownfish-$x_y_z_version.tar.gz.md5 |
+    . qq|release/lucy/clownfish/apache-clownfish-$x_y_z_version.tar.gz.md5 |
+    . qq|mv dev/lucy/clownfish/apache-clownfish-$full_rc_version/apache-clownfish-$x_y_z_version.tar.gz.sha |
+    . qq|release/lucy/clownfish/apache-clownfish-$x_y_z_version.tar.gz.sha |
+    . qq|mv dev/lucy/clownfish/apache-clownfish-$full_rc_version/apache-clownfish-$x_y_z_version.tar.gz.asc |
+    . qq|release/lucy/clownfish/apache-clownfish-$x_y_z_version.tar.gz.asc |
+    . qq|mv dev/lucy/clownfish/apache-clownfish-$full_rc_version/CHANGES-$x_y_z_version.txt |
+    . qq|release/lucy/clownfish/CHANGES-$x_y_z_version.txt |
+    . qq|rm dev/lucy/clownfish/apache-clownfish-$full_rc_version\n|;
+
+say qq|# Carefully remove the artifacts for any previous releases superseded|;
+say qq|# by this one.|;
+if ( $micro > 0 ) {
+    my $prev = sprintf( "%d.%d.%d", $major, $minor, $micro - 1 );
+    say qq|svnmucc -m "Remove Apache Clownfish $prev" |
+        . qq|-U https://dist.apache.org/repos/dist/release/lucy/clownfish |
+        . qq|rm apache-clownfish-$prev.tar.gz |
+        . qq|rm apache-clownfish-$prev.tar.gz.md5 |
+        . qq|rm apache-clownfish-$prev.tar.gz.sha |
+        . qq|rm apache-clownfish-$prev.tar.gz.asc |
+        . qq|rm CHANGES-$prev.txt |;
+}
+say qq|[...]\n|;
+
+say qq|# Update the issue tracker.|;
+say qq|# While logged into JIRA, visit the following web page. (Note: this|;
+say qq|# permalink may or may not work, and you may not have the necessary|;
+say qq|# JIRA permissions to perform the required actions.  Please let the|;
+say qq|# dev list know if you encounter problems.)  Click the "release"|;
+say qq|# link for $x_y_z_version and input the date from the CHANGES file.|;
+say qq|https://issues.apache.org/jira/plugins/servlet/|
+    . qq|project-config/LUCY/versions\n|;
+
+say qq|# Once the release files are in place, update the download page|;
+say qq|# of the Lucy website. The easiest way to perform this action is to|;
+say qq|# use the CMS bookmarklet at https://cms.apache.org/#bookmark|;
+say qq|# to access the edit screens via the CMS web interface.  Change the|;
+say qq|# artifact links to point at the new version; ensure that while the|;
+say qq|# primary download links point at mirrors, the signature and sums|;
+say qq|# files point at apache.org.|;
+say qq|[...]\n|;
+
+say qq|# [TODO: this action cannot yet be performed by the RM, so ignore.]|;
+say qq|# Publish HTML exports of the documentation for the new release on|;
+say qq|# the Lucy website.|;
+say qq|[...]\n|;
+
+say qq|# Send emails announcing the release to:|;
+say qq|#|;
+say qq|#     * The user list.|;
+say qq|#     * The dev list.|;
+say qq|#     * The announce\@a.o list.  Be sure to send from your|;
+say qq|#       \@apache.org address|;
+say qq|#|;
+say qq|# Use the entry in the CHANGES file as the basis for your|;
+say qq|# email, or optionally, use the boilerplate announcement text below.|;
+say qq|[...]\n|;
+
+say qq|###############################################################|;
+say qq|# Boilerplate VOTE email for dev\@lucy.a.o|;
+say qq|# Suggested subject:|;
+say qq|#|;
+say qq|#    [VOTE] Apache Clownfish $x_y_z_version RC $rc|;
+say qq|#|;
+say qq|###############################################################\n|;
+
+say <<END_CLOWNFISH_DEV_VOTE;
+Hello,
+
+Release candidate $rc for Apache Clownfish version $x_y_z_version can be
+found at:
+
+    https://dist.apache.org/repos/dist/dev/lucy/clownfish/apache-clownfish-$full_rc_version/
+
+See the CHANGES file at the top level of the archive for information
+about the content of this release.
+
+This candidate was assembled according to the process documented at:
+
+    http://wiki.apache.org/lucy/ReleaseGuide
+
+It was cut using "git archive" from the tag at:
+
+    https://git-wip-us.apache.org/repos/asf?p=lucy-clownfish.git;a=tag;h=refs/tags/apache-clownfish-$full_rc_version
+
+Please vote on releasing this candidate as Apache Clownfish version
+$x_y_z_version.  The vote will be held open for at least the next 72
+hours.
+
+All interested parties are welcome to inspect the release candidate
+and express approval or disapproval.  Votes from members of the Lucy
+PMC are binding; the vote passes if there are at least three binding
++1 votes and more +1 votes than -1 votes. 
+
+For suggestions as to how to evaluate Apache Clownfish release candidates,
+and for information on ASF voting procedures, see:
+
+    http://wiki.apache.org/lucy/ReleaseVerification
+    http://wiki.apache.org/lucy/ReleasePrep
+    http://www.apache.org/foundation/voting.html
+
+[ ] +1 Release RC $rc as Apache Clownfish $x_y_z_version.
+[ ] +0
+[ ] -1 Do not release RC $rc as Apache Clownfish $x_y_z_version because...
+
+Here's my +1.
+
+Thanks!
+END_CLOWNFISH_DEV_VOTE
+
+say qq|###############################################################|;
+say qq|# Boilerplate ANNOUNCE email|;
+say qq|# Suggested subject:|;
+say qq|#|;
+say qq|#    [ANNOUNCE] Apache Clownfish $x_y_z_version released|;
+say qq|#|;
+say qq|###############################################################\n|;
+
+say <<END_ANNOUNCE_EMAIL;
+Greetings,
+
+The Apache Lucy team is pleased to announce the release of
+Apache Clownfish version $x_y_z_version!
+
+The Apache Clownfish "symbiotic" object system pairs with "host"
+dynamic language environments and facilitates the development of
+high performance host language extensions.  For a list of issues resolved in
+this version, please see the release notes:
+
+  http://www.apache.org/dist/lucy/clownfish/CHANGES-$x_y_z_version.txt
+
+The most recent release can be obtained from our download page:
+
+  http://lucy.apache.org/download.html
+
+For general information on Apache Clownfish, please visit the Lucy
+project website:
+
+  http://lucy.apache.org/
+
+Regards, 
+
+$name, on behalf of the Apache Lucy development team
+and community
+
+END_ANNOUNCE_EMAIL
+
+say qq|###############################################################|;
+