finish moving announce.sh to releases repo by deleting it
Remove the announce.sh script from this repo so we only have one copy in the releases repo that we need to maintain. Change-Id: I486df8fa09050bd2e903922263c12192f4d21805 Depends-On: https://review.openstack.org/564329 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
8a69cd398a
commit
950fcd6b8d
18
README.rst
18
README.rst
@ -106,24 +106,6 @@ The top-level scripts call the various base tools to get their work done.
|
|||||||
repository to
|
repository to
|
||||||
``openstack-infra/project-config/jenkins/scripts/release-tools``.
|
``openstack-infra/project-config/jenkins/scripts/release-tools``.
|
||||||
|
|
||||||
announce.sh
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This script generates an email message ready to be sent to announce
|
|
||||||
the release of a library or other tool. Note that the EMAIL environment
|
|
||||||
variable needs to be set prior to running the tool.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
./announce.sh ~/repos/openstack/oslo.rootwrap
|
|
||||||
./announce.sh ~/repos/openstack/oslo.rootwrap 3.0.3
|
|
||||||
|
|
||||||
The output goes to ``relnotes/`` in a file named for the project and
|
|
||||||
version. For example, the announcement for the rootwrap release above
|
|
||||||
would be written to ``relnotes/oslo.rootwrap-3.0.3``.
|
|
||||||
|
|
||||||
rccut.sh
|
rccut.sh
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
215
announce.sh
215
announce.sh
@ -1,215 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Script to generate a release announcement for a project.
|
|
||||||
#
|
|
||||||
# All Rights Reserved.
|
|
||||||
#
|
|
||||||
# Licensed 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.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ $# -lt 1 ]; then
|
|
||||||
echo "Usage: $0 path-to-repository [version]"
|
|
||||||
echo
|
|
||||||
echo "Example: $0 ~/repos/openstack/oslo.rootwrap"
|
|
||||||
echo "Example: $0 ~/repos/openstack/oslo.rootwrap 3.0.3"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
source $TOOLSDIR/functions
|
|
||||||
|
|
||||||
REPODIR=$(cd $1 && pwd)
|
|
||||||
VERSION=$2
|
|
||||||
|
|
||||||
# If the version looks like an alpha or beta, ignore it. The script
|
|
||||||
# for producing release notes has templates for regular releases and
|
|
||||||
# release candidates.
|
|
||||||
if [[ $VERSION =~ (a|b) ]]; then
|
|
||||||
echo "No announcements are generated for alpha or beta releases."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The repository directory may be named something other than what the
|
|
||||||
# repository is, if we're running under CI or someone has checked it
|
|
||||||
# out locally to an alternate name. Use the git remote URL as a source
|
|
||||||
# of better information for the real repository name.
|
|
||||||
REMOTE_URL=$(cd $REPODIR && git config --get remote.origin.url || echo "")
|
|
||||||
if [ ! -z "$REMOTE_URL" ]; then
|
|
||||||
SHORTNAME=$(basename $REMOTE_URL)
|
|
||||||
REPOORGNAME=$(basename $(dirname $REMOTE_URL))
|
|
||||||
else
|
|
||||||
# WARNING(dhellmann): This formulation only works in CI where the
|
|
||||||
# workspace structure matches the git repo names upstream.
|
|
||||||
SHORTNAME=$(basename $REPODIR)
|
|
||||||
REPOORGNAME=$(basename $(dirname $REPODIR))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Assign a default "from" email address if one is not specified by the
|
|
||||||
# user's environment.
|
|
||||||
export EMAIL=${EMAIL:-no-reply@openstack.org}
|
|
||||||
|
|
||||||
if [[ -z "$VIRTUAL_ENV" ]]; then
|
|
||||||
if ! (cd $TOOLSDIR && tox -e venv --notest); then
|
|
||||||
echo "Failed to build virtualenv"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
source $TOOLSDIR/.tox/venv/bin/activate
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make our output directory before we start moving around into
|
|
||||||
# temporary directories.
|
|
||||||
RELNOTESDIR="$PWD/relnotes"
|
|
||||||
mkdir -p $RELNOTESDIR
|
|
||||||
|
|
||||||
# Set up temporary directory for scratch files
|
|
||||||
setup_temp_space announce-$SHORTNAME
|
|
||||||
|
|
||||||
cd $REPODIR
|
|
||||||
|
|
||||||
# Determine the most recent tag if we weren't given a value.
|
|
||||||
if [[ -z "$VERSION" ]]; then
|
|
||||||
VERSION=$(get_last_tag)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Look for the previous version on the same branch. If the command
|
|
||||||
# fails because there are no other tags, we will produce the entire
|
|
||||||
# history.
|
|
||||||
PREVIOUS_VERSION=$(git describe --abbrev=0 ${VERSION}^ 2>/dev/null || echo "")
|
|
||||||
if [[ "$PREVIOUS_VERSION" = "" ]]; then
|
|
||||||
# There was no previous tag, so we're looking for the full history
|
|
||||||
# of the project.
|
|
||||||
PREVIOUS_VERSION=$(git rev-list --max-parents=0 HEAD | tail -1)
|
|
||||||
first_release="--first-release"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract the tag message by parsing the git show output, which looks
|
|
||||||
# something like:
|
|
||||||
#
|
|
||||||
# tag 2.0.0
|
|
||||||
# Tagger: Doug Hellmann <doug@doughellmann.com>
|
|
||||||
# Date: Tue Dec 1 21:45:44 2015 +0000
|
|
||||||
#
|
|
||||||
# python-keystoneclient 2.0.0 release
|
|
||||||
#
|
|
||||||
# meta:version: 2.0.0
|
|
||||||
# meta:series: mitaka
|
|
||||||
# meta:release-type: release
|
|
||||||
# -----BEGIN PGP SIGNATURE-----
|
|
||||||
# Comment: GPGTools - http://gpgtools.org
|
|
||||||
#
|
|
||||||
# iQEcBAABAgAGBQJWXhUIAAoJEDttBqDEKEN62rMH/ihLAGfw5GxPLmdEpt7gsLJu
|
|
||||||
# ...
|
|
||||||
#
|
|
||||||
TAG_META=$(git show --no-patch "$VERSION" | grep '^meta:' || true)
|
|
||||||
if [[ -z "$TAG_META" ]]; then
|
|
||||||
echo "WARNING: Missing meta lines in $VERSION tag message,"
|
|
||||||
echo " skipping announcement."
|
|
||||||
echo
|
|
||||||
echo "Was the tag for $VERSION created with release.sh?"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
function get_tag_meta {
|
|
||||||
typeset fieldname="$1"
|
|
||||||
|
|
||||||
echo "$TAG_META" | grep "^meta:$fieldname:" | sed "s/meta:$fieldname: *//"
|
|
||||||
}
|
|
||||||
|
|
||||||
# How far back should we look for release info? If there is no
|
|
||||||
# explicit metadata (signaled by passing "-"), use whatever previous
|
|
||||||
# version number we were able to detect.
|
|
||||||
DIFF_START=$(get_tag_meta diff-start)
|
|
||||||
if [[ "$DIFF_START" == "-" ]]; then
|
|
||||||
DIFF_START="$PREVIOUS_VERSION"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The series name is part of the commit message left by release.sh.
|
|
||||||
SERIES=$(get_tag_meta series)
|
|
||||||
|
|
||||||
# The type of release this is.
|
|
||||||
RELEASETYPE=$(get_tag_meta release-type)
|
|
||||||
|
|
||||||
# Figure out if that series is a stable branch or not. We don't
|
|
||||||
# release pre-releases on stable branches, so we only need to check
|
|
||||||
# for stable if the release type is a normal release.
|
|
||||||
if [[ $RELEASETYPE = "release" ]]; then
|
|
||||||
if git branch -a | grep -q origin/stable/$SERIES; then
|
|
||||||
stable="--stable"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If this is the first full release in a series, it isn't "stable"
|
|
||||||
# yet.
|
|
||||||
FIRST_FULL=$(get_tag_meta first)
|
|
||||||
if [[ $FIRST_FULL = "yes" ]]; then
|
|
||||||
stable=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set up email tags for the project owner.
|
|
||||||
PROJECT_OWNER=${PROJECT_OWNER:-$(get-repo-owner --email-tag $REPOORGNAME/$SHORTNAME || echo "")}
|
|
||||||
if [[ "$PROJECT_OWNER" != "" ]]; then
|
|
||||||
email_tags="--email-tags ${PROJECT_OWNER}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Only include the PyPI link if we are told to.
|
|
||||||
INCLUDE_PYPI_LINK=$(get_tag_meta pypi)
|
|
||||||
if [[ "$INCLUDE_PYPI_LINK" == "yes" ]]; then
|
|
||||||
include_pypi_link="--include-pypi-link"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$DIFF_START to $VERSION on $SERIES"
|
|
||||||
|
|
||||||
relnotes_file="$RELNOTESDIR/$SHORTNAME-$VERSION"
|
|
||||||
|
|
||||||
# If we don't have a setup.py, use a CI system environment variable or the
|
|
||||||
# current directory name as the library name so the email template makes
|
|
||||||
# sense.
|
|
||||||
if [ -e setup.py ] ; then
|
|
||||||
# Some projects have setup_requires dependencies on packages that are
|
|
||||||
# not pre-installed, so run a setuptools command in a way to get them
|
|
||||||
# installed without capturing the output in the email we're going to
|
|
||||||
# be sending.
|
|
||||||
echo "Priming setup_requires packages"
|
|
||||||
python setup.py --name
|
|
||||||
library_name=$(python setup.py --name)
|
|
||||||
description="$(python setup.py --description)"
|
|
||||||
elif [ -n "$ZUUL_PROJECT" ] ; then
|
|
||||||
# We may be running in the context of a Zuul CI system, in which case
|
|
||||||
# we can infer the project name from the repo name it supplies.
|
|
||||||
library_name="$(basename ${ZUUL_PROJECT})"
|
|
||||||
else
|
|
||||||
# As a last resort, guess that the project name may be the same as that
|
|
||||||
# of the local working directory at the point this script is invoked.
|
|
||||||
library_name="$(basename $(pwd))"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Generating email body in $relnotes_file"
|
|
||||||
release-notes \
|
|
||||||
--email \
|
|
||||||
$email_tags \
|
|
||||||
--series "$SERIES" \
|
|
||||||
$stable \
|
|
||||||
$first_release \
|
|
||||||
--publishing-dir-name "$SHORTNAME" \
|
|
||||||
. "$library_name" "$DIFF_START" "$VERSION" \
|
|
||||||
$include_pypi_link \
|
|
||||||
--description "$description" \
|
|
||||||
| tee $relnotes_file
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Sending release announcement"
|
|
||||||
send-mail -v $relnotes_file
|
|
Loading…
Reference in New Issue
Block a user