From: Jonathan Rajotte Date: Wed, 11 Nov 2020 23:17:47 +0000 (-0500) Subject: gerrit: depends-on: use master when dependency changes are merged X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=32dae18e9f1860e274a91cf31c0f21825b2ee71a;p=lttng-ci.git 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 --- 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"