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
This commit is contained in:
parent
208af0667a
commit
900aec2f8b
19
milestone.sh
19
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
|
||||
|
|
15
rccut.sh
15
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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue