From 900aec2f8b6740661727bca594be34bb594e1c63 Mon Sep 17 00:00:00 2001 From: Thierry Carrez Date: Wed, 28 Jan 2015 17:41:40 +0100 Subject: [PATCH] Support neutron advanced services The recently split neutron-*aas need special treatment in release scripts. The extra deliverables need to be uploaded to the same Launchpad milestone page, and bugs should only be closed once (all projects share the same Launchpad bug pages). To this effect, we distinguish in the scripts the Launchpad concept of project from the git project name as used in tarballs and skip parts as needed. We also introduce an optional --deliverable option to upload_release.py so that it can use different values for both. Change-Id: I8a4db8b09a3b9d480a767ea0ce94373b4528d1a2 --- milestone.sh | 19 ++++++++++++++----- rccut.sh | 15 ++++++++++++--- rcdelivery.sh | 31 ++++++++++++++++++++----------- upload_release.py | 39 ++++++++++++++++++++++++++++----------- 4 files changed, 74 insertions(+), 30 deletions(-) diff --git a/milestone.sh b/milestone.sh index 3dd8701..033f46f 100755 --- a/milestone.sh +++ b/milestone.sh @@ -29,6 +29,7 @@ fi MILESTONE=$1 SHA=$2 PROJECT=$3 +LPROJECT="$PROJECT" TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -49,12 +50,18 @@ if [[ "$PROJECT" == "oslo-incubator" ]]; then SKIPUPLOAD=1 fi +if [[ "$PROJECT" == neutron-* ]]; then + echo "Neutron advanced services mode: skipping bugs and upload to neutron" + SKIPBUGS=1 + LPROJECT="neutron" +fi + title "Resolving $MILESTONE to version" if [[ "$IS_RELEASE" == "1" ]]; then VERSION=$MILESTONE RELVERSION=$MILESTONE else - VERSION=`$TOOLSDIR/ms2version.py $PROJECT $MILESTONE` + VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $MILESTONE` RELVERSION=${VERSION:0:8} fi echo "$MILESTONE is $VERSION (final being $RELVERSION)" @@ -100,18 +107,20 @@ fi if [[ "$SKIPBUGS" != "1" ]]; then title "Setting FixCommitted bugs to FixReleased" - $TOOLSDIR/process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease + $TOOLSDIR/process_bugs.py $LPROJECT --settarget=$MILESTONE --fixrelease read -sn 1 -p "Fix any leftover bugs manually and press key to continue..." fi if [[ "$SKIPUPLOAD" != "1" ]]; then title "Uploading tarball to Launchpad" if [[ "$IS_RELEASE" == "1" ]]; then - $TOOLSDIR/upload_release.py $PROJECT $RELVERSION + $TOOLSDIR/upload_release.py $LPROJECT $RELVERSION --deliverable=$PROJECT else - $TOOLSDIR/upload_release.py $PROJECT $RELVERSION --milestone=$MILESTONE + $TOOLSDIR/upload_release.py $LPROJECT $RELVERSION --deliverable=$PROJECT \ + --milestone=$MILESTONE fi else title "Marking milestone as released in Launchpad" - $TOOLSDIR/upload_release.py $PROJECT $RELVERSION --milestone=$MILESTONE --nop + $TOOLSDIR/upload_release.py $LPROJECT $RELVERSION --deliverable=$PROJECT \ + --milestone=$MILESTONE --nop fi diff --git a/rccut.sh b/rccut.sh index adbeb07..e24699e 100755 --- a/rccut.sh +++ b/rccut.sh @@ -30,12 +30,19 @@ fi SHA=$1 SERIES=$2 PROJECT=$3 +LPROJECT="$PROJECT" if [[ "$PROJECT" == "oslo-incubator" ]]; then echo "Oslo-incubator mode: skipping tarball check" SKIPTARBALL=1 fi +if [[ "$PROJECT" == neutron-* ]]; then + echo "Neutron advanced services mode: skipping bugs" + SKIPBUGS=1 + LPROJECT="neutron" +fi + if [[ "$PROJECT" == "swift" ]]; then if [[ $# -eq 4 ]]; then RC1MILESTONE="$4-rc1" @@ -55,7 +62,7 @@ function title { } title "Checking that $RC1MILESTONE exists" -$TOOLSDIR/ms2version.py --onlycheck $PROJECT $RC1MILESTONE +$TOOLSDIR/ms2version.py --onlycheck $LPROJECT $RC1MILESTONE title "Cloning repository for $PROJECT" MYTMPDIR=`mktemp -d` @@ -85,5 +92,7 @@ if [[ "$SKIPTARBALL" != "1" ]]; then $TOOLSDIR/wait_for_tarball.py $REALSHA fi -title "Setting FixCommitted bugs to FixReleased" -$TOOLSDIR/process_bugs.py $PROJECT --settarget=$RC1MILESTONE --fixrelease +if [[ "$SKIPBUGS" != "1" ]]; then + title "Setting FixCommitted bugs to FixReleased" + $TOOLSDIR/process_bugs.py $LPROJECT --settarget=$RC1MILESTONE --fixrelease +fi diff --git a/rcdelivery.sh b/rcdelivery.sh index 9a57bb5..f39c282 100755 --- a/rcdelivery.sh +++ b/rcdelivery.sh @@ -30,6 +30,7 @@ fi SERIES=$1 RC=$2 PROJECT=$3 +LPROJECT="$PROJECT" if [[ "$PROJECT" == "oslo-incubator" ]]; then echo "Oslo-incubator mode: skipping tarball generation and upload" @@ -37,6 +38,11 @@ if [[ "$PROJECT" == "oslo-incubator" ]]; then SKIPUPLOAD=1 fi +if [[ "$PROJECT" == neutron-* ]]; then + echo "Neutron advanced services mode: upload to Neutron Launchpad project" + LPROJECT="neutron" +fi + if [[ "$PROJECT" == "swift" ]]; then if [[ $# -eq 4 ]]; then FINALVERSION=$4 @@ -53,25 +59,25 @@ function title { echo "$(tput bold)$(tput setaf 1)[ $1 ]$(tput sgr0)" } -title "Resolving $PROJECT $SERIES $RC to version" +title "Resolving $LPROJECT $SERIES $RC to version" if [[ "$RC" == "final" ]]; then - if [[ "$PROJECT" != "swift" ]]; then - RC1VERSION=`$TOOLSDIR/ms2version.py $PROJECT $SERIES-rc1` + if [[ "$LPROJECT" != "swift" ]]; then + RC1VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $SERIES-rc1` FINALVERSION=${RC1VERSION:0:8} fi MILESTONE=$FINALVERSION VERSION=$FINALVERSION - $TOOLSDIR/ms2version.py --onlycheck $PROJECT $MILESTONE + $TOOLSDIR/ms2version.py --onlycheck $LPROJECT $MILESTONE else - if [[ "$PROJECT" != "swift" ]]; then + if [[ "$LPROJECT" != "swift" ]]; then MILESTONE="$SERIES-$RC" - VERSION=`$TOOLSDIR/ms2version.py $PROJECT $MILESTONE` + VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $MILESTONE` FINALVERSION=${VERSION:0:8} else MILESTONE="$FINALVERSION-$RC" VERSION="${FINALVERSION}$RC" - $TOOLSDIR/ms2version.py --onlycheck $PROJECT $MILESTONE + $TOOLSDIR/ms2version.py --onlycheck $LPROJECT $MILESTONE fi fi echo "$SERIES $RC (milestone $MILESTONE) is version $VERSION" @@ -106,16 +112,19 @@ fi if [[ "$SKIPUPLOAD" != "1" ]]; then title "Uploading tarball to Launchpad" if [[ "$RC" == "final" ]]; then - $TOOLSDIR/upload_release.py $PROJECT $FINALVERSION + $TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION --deliverable=$PROJECT else - $TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --milestone=$MILESTONE + $TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \ + --deliverable=$PROJECT --milestone=$MILESTONE fi else title "Marking milestone as released in Launchpad" if [[ "$RC" == "final" ]]; then - $TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --nop + $TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \ + --deliverable=$PROJECT --nop else - $TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --milestone=$MILESTONE --nop + $TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \ + --deliverable=$PROJECT --milestone=$MILESTONE --nop fi fi diff --git a/upload_release.py b/upload_release.py index e083a3e..918cc7e 100755 --- a/upload_release.py +++ b/upload_release.py @@ -37,9 +37,11 @@ def abort(code, errmsg): # Argument parsing parser = argparse.ArgumentParser(description='Grab tarball and release it ' 'on LP as milestone or version.') -parser.add_argument('project', help='Project to publish release for (nova)') +parser.add_argument('project', help='LP project to publish release for (nova)') parser.add_argument('version', help='Version under development (2015.1.0)') parser.add_argument("--milestone", help='Milestone to publish (kilo-2)') +parser.add_argument("--deliverable", help='Project name in the tarball. ' + 'Defaults to project') parser.add_argument("--nop", action='store_true', help='Only create release, do not upload tarball') parser.add_argument("--tarball", @@ -53,6 +55,9 @@ if args.milestone is None: else: milestone = args.milestone +if args.deliverable is None: + args.deliverable = args.project + # Connect to LP print "Connecting to Launchpad..." try: @@ -70,7 +75,12 @@ except KeyError: for lp_milestone in lp_proj.all_milestones: if lp_milestone.name == milestone: if lp_milestone.release: - abort(2, 'Milestone %s was already released !' % milestone) + print 'Milestone %s is already released' % milestone + if args.deliverable != args.project: + print 'We are probably just trying to add %s to LP %s.' % \ + (args.deliverable, args.project) + else: + abort(2, 'That looks like an error!') if args.milestone: short_ms = lp_milestone.code_name.lower() if not short_ms.startswith("rc"): @@ -88,10 +98,13 @@ if not args.nop: print "Downloading tarball..." tmpdir = tempfile.mkdtemp() if args.tarball is None: - base_tgz = "%s-%s%s.tar.gz" % (args.project, args.version, preversion) + base_tgz = "%s-%s%s.tar.gz" % \ + (args.deliverable, args.version, preversion) else: - base_tgz = "%s-%s.tar.gz" % (args.project, args.tarball) - url_tgz = "http://tarballs.openstack.org/%s/%s" % (args.project, base_tgz) + base_tgz = "%s-%s.tar.gz" % \ + (args.deliverable, args.tarball) + url_tgz = "http://tarballs.openstack.org/%s/%s" % \ + (args.deliverable, base_tgz) tgz = os.path.join(tmpdir, base_tgz) (tgz, message) = urllib.urlretrieve(url_tgz, filename=tgz) @@ -129,9 +142,12 @@ else: rel_notes = "This is %s %s release." \ % (args.project.capitalize(), args.version) -lp_release = lp_milestone.createProductRelease( - date_released=datetime.datetime.utcnow(), - release_notes=rel_notes) +if lp_milestone.release: + lp_release = lp_milestone.release +else: + lp_release = lp_milestone.createProductRelease( + date_released=datetime.datetime.utcnow(), + release_notes=rel_notes) # Mark milestone inactive print "Marking milestone inactive..." @@ -141,13 +157,14 @@ lp_milestone.lp_save() if not args.nop: # Upload file print "Uploading release files..." - final_tgz = "%s-%s%s.tar.gz" % (args.project, args.version, preversion) + final_tgz = "%s-%s%s.tar.gz" % \ + (args.deliverable, args.version, preversion) if args.milestone: description = '%s "%s" milestone' % \ - (args.project.capitalize(), args.milestone) + (args.deliverable.capitalize(), args.milestone) else: description = '%s %s release' % \ - (args.project.capitalize(), args.version) + (args.deliverable.capitalize(), args.version) lp_file = lp_release.add_file(file_type='Code Release Tarball', description=description,