From 32dae18e9f1860e274a91cf31c0f21825b2ee71a Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Wed, 11 Nov 2020 18:17:47 -0500 Subject: [PATCH] gerrit: depends-on: use master when dependency changes are merged When the change a lttng-tools change depends on is merged/abandoned use master as the ref. This is not ideal CI time wise since we do not reuse artifact but this solve a tricky situation were we actually want to use master instead of the change available on gerrit. Intermediary changes present in master could have an impact on the change under test. Signed-off-by: Jonathan Rajotte --- scripts/lttng-tools/gerrit-depends-on.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/scripts/lttng-tools/gerrit-depends-on.sh b/scripts/lttng-tools/gerrit-depends-on.sh index b8bcd4e..7f62f82 100755 --- a/scripts/lttng-tools/gerrit-depends-on.sh +++ b/scripts/lttng-tools/gerrit-depends-on.sh @@ -26,6 +26,7 @@ conf=${conf:-} gerrit_url="https://${GERRIT_NAME}" gerrit_query="?o=CURRENT_REVISION&o=DOWNLOAD_COMMANDS" gerrit_json_query=".revisions[.current_revision].ref" +gerrit_json_query_status=".status" possible_depends_on="lttng-ust|lttng-modules" re="Depends-on: (${possible_depends_on}): ([^'$'\n'']*)" @@ -73,6 +74,24 @@ git rev-list --format=%B --max-count=1 HEAD | while read -r line; do # Get the change latest ref ref=$(curl "${gerrit_url}/changes/${gerrit_id}${gerrit_query}" | tail -n+2 | jq -r "$gerrit_json_query") + change_status=$(curl "${gerrit_url}/changes/${gerrit_id}${gerrit_query}" | tail -n+2 | jq -r "$gerrit_json_query_status") + if [ "$change_status" == "MERGED" ]; then + # When the change we depends on is merged use master as the ref. + # This is not ideal CI time wise since we do not reuse artifacts. + # This solve a tricky situation where we actually want to use master + # instead of the change available on gerrit. Intermediary changes + # present in master could have an impact on the change under test. + ref="refs/heads/master" + elif [ "$change_status" == "ABANDONED" ]; then + # We have a situation where the "HEAD" commit for feature branch are + # not merged and abandonned. Default to the master branch and hope + # for the best. This is far from ideal but we need might also need + # to find a better way to handle feature branch here. In the + # meantime use master for such cases. + echo "Depends-on change is ABANDONED. Defaulting to master" + ref="refs/heads/master" + fi + git clone "${gerrit_url}/${project}" "$WORKSPACE/src/$project" pushd "$WORKSPACE/src/$project" git fetch "${gerrit_url}/${project}" "$ref" -- 2.34.1