# Nordix Gerrit can map the email address of the user pushed the change to
# the review to the Gerrit username of the accound in Nordix Gerrit. This
# should match with the Gerrit username in the OpenDev Gerrit.
-# TODO(gibi): parse the json propely if there are tools (e.g. jq) available on
-# the jenkins slave
username=$(
curl -s -H 'Accept: application/json' \
"$nordix_gerrit_rest/accounts/?q=email:$GERRIT_EVENT_ACCOUNT_EMAIL&o=DETAILS" \
- | tee /dev/stderr \
- | sed -n 's/^.*"username":"\(\S*\)".*$/\1/p')
+ | tee /dev/stderr | tail -1 | jq -r '.[0].username')
opendev_remote_url="ssh://$username@$opendev_gerrit_base/$opendev_project"
# GERRIT_TOPIC is the rest of the refspec after GERRIT_BRANCH when the topic
# is set for the change.
if [ -z "${GERRIT_TOPIC:-}" ] ; then
- refspec="$commit_hash:refs/for/$GERRIT_BRANCH"
+ refspec="${commit_hash}:refs/for/${GERRIT_BRANCH}"
else
- refspec="$commit_hash:refs/for/$GERRIT_BRANCH/$GERRIT_TOPIC"
+ refspec="${commit_hash}:refs/for/${GERRIT_BRANCH}%topic=${GERRIT_TOPIC}"
fi
echo >&2 "Pushing to OpenDev"
# do not fail if git push fails as in case of no new changes we want to succeed. See below.
set +o pipefail
-git push "$opendev_remote_url" "$refspec" 2>&1 | tee push_result.txt
+git push --no-thin "$opendev_remote_url" "$refspec" 2>&1 | tee push_result.txt
push_result=${PIPESTATUS[0]}
# make the job a success if the above git push fails due to no new changes are needed
if [ $push_result -ne 0 ]; then
grep '(no new changes)' push_result.txt
fi
-