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
|
MILESTONE=$1
|
||||||
SHA=$2
|
SHA=$2
|
||||||
PROJECT=$3
|
PROJECT=$3
|
||||||
|
LPROJECT="$PROJECT"
|
||||||
|
|
||||||
TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
@ -49,12 +50,18 @@ if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
||||||
SKIPUPLOAD=1
|
SKIPUPLOAD=1
|
||||||
fi
|
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"
|
title "Resolving $MILESTONE to version"
|
||||||
if [[ "$IS_RELEASE" == "1" ]]; then
|
if [[ "$IS_RELEASE" == "1" ]]; then
|
||||||
VERSION=$MILESTONE
|
VERSION=$MILESTONE
|
||||||
RELVERSION=$MILESTONE
|
RELVERSION=$MILESTONE
|
||||||
else
|
else
|
||||||
VERSION=`$TOOLSDIR/ms2version.py $PROJECT $MILESTONE`
|
VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $MILESTONE`
|
||||||
RELVERSION=${VERSION:0:8}
|
RELVERSION=${VERSION:0:8}
|
||||||
fi
|
fi
|
||||||
echo "$MILESTONE is $VERSION (final being $RELVERSION)"
|
echo "$MILESTONE is $VERSION (final being $RELVERSION)"
|
||||||
|
@ -100,18 +107,20 @@ fi
|
||||||
|
|
||||||
if [[ "$SKIPBUGS" != "1" ]]; then
|
if [[ "$SKIPBUGS" != "1" ]]; then
|
||||||
title "Setting FixCommitted bugs to FixReleased"
|
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..."
|
read -sn 1 -p "Fix any leftover bugs manually and press key to continue..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$SKIPUPLOAD" != "1" ]]; then
|
if [[ "$SKIPUPLOAD" != "1" ]]; then
|
||||||
title "Uploading tarball to Launchpad"
|
title "Uploading tarball to Launchpad"
|
||||||
if [[ "$IS_RELEASE" == "1" ]]; then
|
if [[ "$IS_RELEASE" == "1" ]]; then
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $RELVERSION
|
$TOOLSDIR/upload_release.py $LPROJECT $RELVERSION --deliverable=$PROJECT
|
||||||
else
|
else
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $RELVERSION --milestone=$MILESTONE
|
$TOOLSDIR/upload_release.py $LPROJECT $RELVERSION --deliverable=$PROJECT \
|
||||||
|
--milestone=$MILESTONE
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
title "Marking milestone as released in Launchpad"
|
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
|
fi
|
||||||
|
|
15
rccut.sh
15
rccut.sh
|
@ -30,12 +30,19 @@ fi
|
||||||
SHA=$1
|
SHA=$1
|
||||||
SERIES=$2
|
SERIES=$2
|
||||||
PROJECT=$3
|
PROJECT=$3
|
||||||
|
LPROJECT="$PROJECT"
|
||||||
|
|
||||||
if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
||||||
echo "Oslo-incubator mode: skipping tarball check"
|
echo "Oslo-incubator mode: skipping tarball check"
|
||||||
SKIPTARBALL=1
|
SKIPTARBALL=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$PROJECT" == neutron-* ]]; then
|
||||||
|
echo "Neutron advanced services mode: skipping bugs"
|
||||||
|
SKIPBUGS=1
|
||||||
|
LPROJECT="neutron"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$PROJECT" == "swift" ]]; then
|
if [[ "$PROJECT" == "swift" ]]; then
|
||||||
if [[ $# -eq 4 ]]; then
|
if [[ $# -eq 4 ]]; then
|
||||||
RC1MILESTONE="$4-rc1"
|
RC1MILESTONE="$4-rc1"
|
||||||
|
@ -55,7 +62,7 @@ function title {
|
||||||
}
|
}
|
||||||
|
|
||||||
title "Checking that $RC1MILESTONE exists"
|
title "Checking that $RC1MILESTONE exists"
|
||||||
$TOOLSDIR/ms2version.py --onlycheck $PROJECT $RC1MILESTONE
|
$TOOLSDIR/ms2version.py --onlycheck $LPROJECT $RC1MILESTONE
|
||||||
|
|
||||||
title "Cloning repository for $PROJECT"
|
title "Cloning repository for $PROJECT"
|
||||||
MYTMPDIR=`mktemp -d`
|
MYTMPDIR=`mktemp -d`
|
||||||
|
@ -85,5 +92,7 @@ if [[ "$SKIPTARBALL" != "1" ]]; then
|
||||||
$TOOLSDIR/wait_for_tarball.py $REALSHA
|
$TOOLSDIR/wait_for_tarball.py $REALSHA
|
||||||
fi
|
fi
|
||||||
|
|
||||||
title "Setting FixCommitted bugs to FixReleased"
|
if [[ "$SKIPBUGS" != "1" ]]; then
|
||||||
$TOOLSDIR/process_bugs.py $PROJECT --settarget=$RC1MILESTONE --fixrelease
|
title "Setting FixCommitted bugs to FixReleased"
|
||||||
|
$TOOLSDIR/process_bugs.py $LPROJECT --settarget=$RC1MILESTONE --fixrelease
|
||||||
|
fi
|
||||||
|
|
|
@ -30,6 +30,7 @@ fi
|
||||||
SERIES=$1
|
SERIES=$1
|
||||||
RC=$2
|
RC=$2
|
||||||
PROJECT=$3
|
PROJECT=$3
|
||||||
|
LPROJECT="$PROJECT"
|
||||||
|
|
||||||
if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
||||||
echo "Oslo-incubator mode: skipping tarball generation and upload"
|
echo "Oslo-incubator mode: skipping tarball generation and upload"
|
||||||
|
@ -37,6 +38,11 @@ if [[ "$PROJECT" == "oslo-incubator" ]]; then
|
||||||
SKIPUPLOAD=1
|
SKIPUPLOAD=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$PROJECT" == neutron-* ]]; then
|
||||||
|
echo "Neutron advanced services mode: upload to Neutron Launchpad project"
|
||||||
|
LPROJECT="neutron"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$PROJECT" == "swift" ]]; then
|
if [[ "$PROJECT" == "swift" ]]; then
|
||||||
if [[ $# -eq 4 ]]; then
|
if [[ $# -eq 4 ]]; then
|
||||||
FINALVERSION=$4
|
FINALVERSION=$4
|
||||||
|
@ -53,25 +59,25 @@ function title {
|
||||||
echo "$(tput bold)$(tput setaf 1)[ $1 ]$(tput sgr0)"
|
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 [[ "$RC" == "final" ]]; then
|
||||||
if [[ "$PROJECT" != "swift" ]]; then
|
if [[ "$LPROJECT" != "swift" ]]; then
|
||||||
RC1VERSION=`$TOOLSDIR/ms2version.py $PROJECT $SERIES-rc1`
|
RC1VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $SERIES-rc1`
|
||||||
FINALVERSION=${RC1VERSION:0:8}
|
FINALVERSION=${RC1VERSION:0:8}
|
||||||
fi
|
fi
|
||||||
MILESTONE=$FINALVERSION
|
MILESTONE=$FINALVERSION
|
||||||
VERSION=$FINALVERSION
|
VERSION=$FINALVERSION
|
||||||
$TOOLSDIR/ms2version.py --onlycheck $PROJECT $MILESTONE
|
$TOOLSDIR/ms2version.py --onlycheck $LPROJECT $MILESTONE
|
||||||
else
|
else
|
||||||
if [[ "$PROJECT" != "swift" ]]; then
|
if [[ "$LPROJECT" != "swift" ]]; then
|
||||||
MILESTONE="$SERIES-$RC"
|
MILESTONE="$SERIES-$RC"
|
||||||
VERSION=`$TOOLSDIR/ms2version.py $PROJECT $MILESTONE`
|
VERSION=`$TOOLSDIR/ms2version.py $LPROJECT $MILESTONE`
|
||||||
FINALVERSION=${VERSION:0:8}
|
FINALVERSION=${VERSION:0:8}
|
||||||
else
|
else
|
||||||
MILESTONE="$FINALVERSION-$RC"
|
MILESTONE="$FINALVERSION-$RC"
|
||||||
VERSION="${FINALVERSION}$RC"
|
VERSION="${FINALVERSION}$RC"
|
||||||
$TOOLSDIR/ms2version.py --onlycheck $PROJECT $MILESTONE
|
$TOOLSDIR/ms2version.py --onlycheck $LPROJECT $MILESTONE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo "$SERIES $RC (milestone $MILESTONE) is version $VERSION"
|
echo "$SERIES $RC (milestone $MILESTONE) is version $VERSION"
|
||||||
|
@ -106,16 +112,19 @@ fi
|
||||||
if [[ "$SKIPUPLOAD" != "1" ]]; then
|
if [[ "$SKIPUPLOAD" != "1" ]]; then
|
||||||
title "Uploading tarball to Launchpad"
|
title "Uploading tarball to Launchpad"
|
||||||
if [[ "$RC" == "final" ]]; then
|
if [[ "$RC" == "final" ]]; then
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $FINALVERSION
|
$TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION --deliverable=$PROJECT
|
||||||
else
|
else
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --milestone=$MILESTONE
|
$TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \
|
||||||
|
--deliverable=$PROJECT --milestone=$MILESTONE
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
title "Marking milestone as released in Launchpad"
|
title "Marking milestone as released in Launchpad"
|
||||||
if [[ "$RC" == "final" ]]; then
|
if [[ "$RC" == "final" ]]; then
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --nop
|
$TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \
|
||||||
|
--deliverable=$PROJECT --nop
|
||||||
else
|
else
|
||||||
$TOOLSDIR/upload_release.py $PROJECT $FINALVERSION --milestone=$MILESTONE --nop
|
$TOOLSDIR/upload_release.py $LPROJECT $FINALVERSION \
|
||||||
|
--deliverable=$PROJECT --milestone=$MILESTONE --nop
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,11 @@ def abort(code, errmsg):
|
||||||
# Argument parsing
|
# Argument parsing
|
||||||
parser = argparse.ArgumentParser(description='Grab tarball and release it '
|
parser = argparse.ArgumentParser(description='Grab tarball and release it '
|
||||||
'on LP as milestone or version.')
|
'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('version', help='Version under development (2015.1.0)')
|
||||||
parser.add_argument("--milestone", help='Milestone to publish (kilo-2)')
|
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',
|
parser.add_argument("--nop", action='store_true',
|
||||||
help='Only create release, do not upload tarball')
|
help='Only create release, do not upload tarball')
|
||||||
parser.add_argument("--tarball",
|
parser.add_argument("--tarball",
|
||||||
|
@ -53,6 +55,9 @@ if args.milestone is None:
|
||||||
else:
|
else:
|
||||||
milestone = args.milestone
|
milestone = args.milestone
|
||||||
|
|
||||||
|
if args.deliverable is None:
|
||||||
|
args.deliverable = args.project
|
||||||
|
|
||||||
# Connect to LP
|
# Connect to LP
|
||||||
print "Connecting to Launchpad..."
|
print "Connecting to Launchpad..."
|
||||||
try:
|
try:
|
||||||
|
@ -70,7 +75,12 @@ except KeyError:
|
||||||
for lp_milestone in lp_proj.all_milestones:
|
for lp_milestone in lp_proj.all_milestones:
|
||||||
if lp_milestone.name == milestone:
|
if lp_milestone.name == milestone:
|
||||||
if lp_milestone.release:
|
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:
|
if args.milestone:
|
||||||
short_ms = lp_milestone.code_name.lower()
|
short_ms = lp_milestone.code_name.lower()
|
||||||
if not short_ms.startswith("rc"):
|
if not short_ms.startswith("rc"):
|
||||||
|
@ -88,10 +98,13 @@ if not args.nop:
|
||||||
print "Downloading tarball..."
|
print "Downloading tarball..."
|
||||||
tmpdir = tempfile.mkdtemp()
|
tmpdir = tempfile.mkdtemp()
|
||||||
if args.tarball is None:
|
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:
|
else:
|
||||||
base_tgz = "%s-%s.tar.gz" % (args.project, args.tarball)
|
base_tgz = "%s-%s.tar.gz" % \
|
||||||
url_tgz = "http://tarballs.openstack.org/%s/%s" % (args.project, base_tgz)
|
(args.deliverable, args.tarball)
|
||||||
|
url_tgz = "http://tarballs.openstack.org/%s/%s" % \
|
||||||
|
(args.deliverable, base_tgz)
|
||||||
tgz = os.path.join(tmpdir, base_tgz)
|
tgz = os.path.join(tmpdir, base_tgz)
|
||||||
|
|
||||||
(tgz, message) = urllib.urlretrieve(url_tgz, filename=tgz)
|
(tgz, message) = urllib.urlretrieve(url_tgz, filename=tgz)
|
||||||
|
@ -129,9 +142,12 @@ else:
|
||||||
rel_notes = "This is %s %s release." \
|
rel_notes = "This is %s %s release." \
|
||||||
% (args.project.capitalize(), args.version)
|
% (args.project.capitalize(), args.version)
|
||||||
|
|
||||||
lp_release = lp_milestone.createProductRelease(
|
if lp_milestone.release:
|
||||||
date_released=datetime.datetime.utcnow(),
|
lp_release = lp_milestone.release
|
||||||
release_notes=rel_notes)
|
else:
|
||||||
|
lp_release = lp_milestone.createProductRelease(
|
||||||
|
date_released=datetime.datetime.utcnow(),
|
||||||
|
release_notes=rel_notes)
|
||||||
|
|
||||||
# Mark milestone inactive
|
# Mark milestone inactive
|
||||||
print "Marking milestone inactive..."
|
print "Marking milestone inactive..."
|
||||||
|
@ -141,13 +157,14 @@ lp_milestone.lp_save()
|
||||||
if not args.nop:
|
if not args.nop:
|
||||||
# Upload file
|
# Upload file
|
||||||
print "Uploading release files..."
|
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:
|
if args.milestone:
|
||||||
description = '%s "%s" milestone' % \
|
description = '%s "%s" milestone' % \
|
||||||
(args.project.capitalize(), args.milestone)
|
(args.deliverable.capitalize(), args.milestone)
|
||||||
else:
|
else:
|
||||||
description = '%s %s release' % \
|
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',
|
lp_file = lp_release.add_file(file_type='Code Release Tarball',
|
||||||
description=description,
|
description=description,
|
||||||
|
|
Loading…
Reference in New Issue