incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jukka Zitting <jukka.zitt...@gmail.com>
Subject Lower-overhead release process
Date Thu, 20 Sep 2012 15:50:06 GMT
Hi,

We've gone through a couple of iterations of the release process, but
I still think that there's some room for improvement on better fitting
the Apache requirements with the way the Cordova team manages
releases. Here's one idea that I briefly discussed with Andre and Dave
when they dropped by in Basel today.

A distinctive feature of the Cordova release process is the tagging
phase where people working on different platforms each tag the
respective repositories. Currently these tags are then used by the
release manager to put together the final release candidate. I think
we could simplify this two-step process by asking everyone who tags a
repository to also produce a release archive for that tag. With a
cordova-release.sh script like the one I've included at the end of
this message, this would be as simple as:

    $ cd incubator-cordova-android
    $ cordova-release.sh 2.2.0

As a result you'll get a signed tag and a related signed and
checksummed release tarball:

    $ git tag -v 2.2.0
    object 11dbf05c8452d045a25a59071201b963c52c8e83
    type commit
    tag 2.2.0
    tagger Jukka Zitting <jukka@apache.org> 1348155222 +0200

    incubator-cordova-android version 2.2.0
    gpg: Signature made Thu 20 Sep 2012 17:33:42 CEST using DSA key ID A355A63E
    gpg: Good signature from "Jukka Zitting <jukka@apache.org>"

    $ ls *.tar.gz*
    incubator-cordova-android-2.2.0.tar.gz
    incubator-cordova-android-2.2.0.tar.gz.asc
    incubator-cordova-android-2.2.0.tar.gz.md5
    incubator-cordova-android-2.2.0.tar.gz.sha

You can then push the tag and upload the tarball to people.apache.org
or wherever is most convenient. Also these steps could be automated.

The responsibilities of the release manager are then to coordinate
this effort, to collect all produced tarballs, to conduct the release
vote once all the components are tagged, and finally to make the
combined release available to the world.

WDYT?

BR,

Jukka Zitting

----
$ cat cordova-release.sh
#!/bin/sh

TAG="$1"
if [ -z "$TAG" ]; then
  echo "usage: cordova-release.sh x.y.z" 1>&2
  exit 1
fi

DIR=`git config remote.origin.url | sed -e 's/.*\/\(.*\)\.git/\1/'`
if [ -z "$DIR" ]; then
  echo "error: Unable to determine the repository name." 1>&2
  exit 2
fi

TGZ="$DIR-$TAG.tar.gz"
if [ -e "$TGZ" ]; then
  echo "error: $TGZ already exists." 1>&2
  exit 3
fi

set -e
git tag -s -m "$DIR version $TAG" "$TAG"
git archive --output="$TGZ" --prefix="$DIR-$TAG/" "$TAG"
gpg --armor --output "$TGZ.asc" --detach-sig "$TGZ"
gpg --print-md MD5    "$TGZ" > "$TGZ.md5"
gpg --print-md SHA512 "$TGZ" > "$TGZ.sha"
exit 0

Mime
View raw message