X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fgerrit-fetch-dependencies.sh;h=c897f552e8f1b24a3f8303fe758812c10aec1791;hb=0ff7cbacb76c80c8e2222d6d5917de5119c0d8fd;hp=4870b10e7b3ef01ba3f72253b1a43964cac31f62;hpb=8c159f91ad6c28b20fc1cf271915380d83ad2f80;p=releng%2Fglobal-jjb.git diff --git a/shell/gerrit-fetch-dependencies.sh b/shell/gerrit-fetch-dependencies.sh index 4870b10e..c897f552 100644 --- a/shell/gerrit-fetch-dependencies.sh +++ b/shell/gerrit-fetch-dependencies.sh @@ -8,11 +8,14 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## +echo "---> gerrit-fetch-dependencies.sh" # Fetches patches all projects provided by comment trigger # # Takes a list of Gerrit patches and fetches all projects and cherry-pick # patches for projects. The trigger is # 'recheck: SPACE_SEPERATED_LIST_OF_PATCHES' +# or +# 'reverify: SPACE_SEPERATED_LIST_OF_PATCHES' # # NOTE: This script assumes the user will provide the correct dependency order # via the PATCHES list. @@ -22,14 +25,27 @@ set -eu -o pipefail REPOS_DIR="$WORKSPACE/.repos" -PATCHES=($(echo "$GERRIT_EVENT_COMMENT_TEXT" | grep 'recheck:' | awk -F: '{print $2}')) +IFS=" " read -r -a PATCHES <<< \ + "$(echo "$GERRIT_EVENT_COMMENT_TEXT" | \ + grep -E '(recheck:|reverify:)' | awk -F: '{print $2}')" + +# shellcheck disable=SC1090 +source ~/lf-env.sh + +lf-activate-venv "git-review==1.28" + projects=() -for patch in $(echo "${PATCHES[@]}"); do +for patch in "${PATCHES[@]}"; do json=$(curl -s "$GERRIT_URL/changes/$patch" | sed -e "s/)]}'//") project=$(echo "$json" | jq -r '.project') branch=$(echo "$json" | jq -r '.branch') + if [ "$GERRIT_CHANGE_NUMBER" == "$patch" ]; then + echo "WARN: GERRIT_CHANGE and $patch are one and the same. Ignoring patch..." + continue + fi + if [ ! -d "$REPOS_DIR/$project" ]; then git clone -q --depth 1 -b "$branch" "$GIT_URL/$project" "$REPOS_DIR/$project" @@ -38,7 +54,10 @@ for patch in $(echo "${PATCHES[@]}"); do fi pushd "$REPOS_DIR/$project" - git remote add gerrit "$GIT_URL/$project" + # If remote gerrit already exists just make sure path is expected + if ! git remote add gerrit "$GERRIT_URL/$project" > /dev/null 2>&1; then + git remote set-url gerrit "$GERRIT_URL/$project" + fi git review --cherrypick="$patch" popd done