gerrit: depends-on: use master when dependency changes are merged
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Wed, 11 Nov 2020 23:17:47 +0000 (18:17 -0500)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 4 Dec 2020 19:41:10 +0000 (14:41 -0500)
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 <jonathan.rajotte-julien@efficios.com>
scripts/lttng-tools/gerrit-depends-on.sh

index b8bcd4e9a30d6b07da061534bcaa6adbf7918c30..7f62f82d6fe52699035bbdae059f8eb268f0016c 100755 (executable)
@@ -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"
This page took 0.023561 seconds and 4 git commands to generate.