From 73d6e8b1a036964f3dff4a3dfd59f8f4e0f0ae9a Mon Sep 17 00:00:00 2001 From: Sean McGinnis Date: Thu, 19 Sep 2019 16:04:06 -0500 Subject: [PATCH] Update lib release instructions for freeze This updates the instructions for client and non-client lib freeze to make sure all changes are captured in a final release. Also adds a helper tool to separate out the two types of libs since they have different deadlines. Change-Id: I29ea73bcc5a9649d7d9c502ebc0a05c840e41484 Signed-off-by: Sean McGinnis --- doc/source/reference/process.rst | 29 +++++++++------ .../list_client_library_unreleased_changes.sh | 37 +++++++++++++++++++ tools/list_library_unreleased_changes.sh | 3 +- 3 files changed, 55 insertions(+), 14 deletions(-) create mode 100755 tools/list_client_library_unreleased_changes.sh diff --git a/doc/source/reference/process.rst b/doc/source/reference/process.rst index cf60dc78bf..3ffa3c6880 100644 --- a/doc/source/reference/process.rst +++ b/doc/source/reference/process.rst @@ -162,12 +162,22 @@ Between Milestone-2 and Milestone-3 #. Two weeks before Milestone-3, include a reminder about the final library release freeze coming the week before Milestone-3. - #. Run the command from milestone-2 again to get a list of libraries:: + #. Run the following command to get a list of libraries:: tools/list_library_unreleased_changes.sh #. Include list of unreleased libraries in the email to increase visibility. +#. One week before Milestone-3, include a reminder about the final + client library release freeze coming the week of Milestone-3. + + #. Run the following command to get a list of client libraries:: + + tools/list_client_library_unreleased_changes.sh + + #. Include list of unreleased client libraries in the email to increase + visibility. + #. Two weeks before Milestone-3, prepare other teams to the final release rush. @@ -191,15 +201,12 @@ Final Library Release (week before Milestone-3) =============================================== #. Generate a list of all cycle-with-intermediary libraries (except client - libraries) which did not release since the YYYY-MM-DD date of milestone-2. + libraries) which have commits that have not been included in a release. For this, run:: - tox -e venv -- list-deliverables --unreleased-since YYYY-MM-DD - --model cycle-with-intermediary --type library + ./tools/list_library_unrelease_changes.sh - Generate release requests for all cycle-with-intermediary libraries - (except client libraries) which had changes, but did not release since - milestone-2. That patch will be used as a base to communicate with the + That patch will be used as a base to communicate with the team: if a team wants to wait for a specific patch to make it to the library, someone from the team can -1 the patch to have it held, or update that patch with a different commit SHA. @@ -227,14 +234,12 @@ Milestone-3 =========== #. Generate a list of all cycle-with-intermediary client libraries which - did not release since the YYYY-MM-DD date of milestone-2. + have commits that have not been included in a release. For this, run:: - tox -e venv -- list-deliverables --unreleased-since YYYY-MM-DD - --model cycle-with-intermediary --type client-library + ./tools/list_client_library_unreleased_changes.sh - Generate release requests for all client libraries which had changes, - but did not release since milestone-2. That patch will be used as a base + That patch will be used as a base to communicate with the team: if a team wants to wait for a specific patch to make it to the library, someone from the team can -1 the patch to have it held, or update that patch with a different commit SHA. diff --git a/tools/list_client_library_unreleased_changes.sh b/tools/list_client_library_unreleased_changes.sh new file mode 100755 index 0000000000..dc0aeb90f3 --- /dev/null +++ b/tools/list_client_library_unreleased_changes.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Convenience wrapper to show the unreleased changes in all +# libraries, so we don't have to remember the incantation. + +if [[ $# -gt 1 ]]; then + echo "Usage: $(basename $0) " + exit 1 +fi + +BRANCH=${1:-master} +if [ "$BRANCH" = "master" ]; then + SERIES=$(ls -1 deliverables | sort | tail -n 1) +else + SERIES=$(basename $BRANCH) +fi + +TOOLSDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BASEDIR=$(dirname $TOOLSDIR) +source $TOOLSDIR/functions + +# Set up the virtualenv where the list-deliverables command will be +# found. This is done outside of the invocation below because +# otherwise we get the tox output mixed up in the repo list output and +# try to do things like look at the history of "venv" and +# "installing". +if [[ -z "$VIRTUAL_ENV" ]]; then + if [[ ! -d $BASEDIR/.tox/venv ]]; then + (cd $BASEDIR && tox -e venv --notest) + fi + source $BASEDIR/.tox/venv/bin/activate +fi + +echo "Finding $SERIES library repositories..." +repos=$(list-deliverables --repos --type client-library --series $SERIES) + +$TOOLSDIR/list_unreleased_changes.sh $BRANCH $repos diff --git a/tools/list_library_unreleased_changes.sh b/tools/list_library_unreleased_changes.sh index f7e756407c..55843f3975 100755 --- a/tools/list_library_unreleased_changes.sh +++ b/tools/list_library_unreleased_changes.sh @@ -32,7 +32,6 @@ if [[ -z "$VIRTUAL_ENV" ]]; then fi echo "Finding $SERIES library repositories..." -repos=$(list-deliverables --repos --type library --type client-library \ - --series $SERIES) +repos=$(list-deliverables --repos --type library --series $SERIES) $TOOLSDIR/list_unreleased_changes.sh $BRANCH $repos