a8b8b6b87d
The change in commit 4f2636667
(travis-ci: use 'set -x' in 'ci/*'
scripts for extra tracing output, 2017-12-12) left a couple of rough
edges:
- 'ci/run-linux32-build.sh' is executed in a Docker container and
therefore doesn't source 'ci/lib-travisci.sh', which would enable
tracing executed commands. Enable 'set -x' in this script, too.
- 'ci/print-test-failures.sh' iterates over all the files containing
the exit codes of all the executed test scripts. Since there are
over 800 such files, the loop produces way too much noise with
tracing executed commands enabled, so disable 'set -x' for this
script.
- 'ci/run-windows-build.sh' busily waits in a loop for the result of
the Windows build, producing too much noise with tracing executed
commands enabled as well. Disable 'set -x' for the duration of
that loop.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
102 lines
2.7 KiB
Bash
Executable File
102 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Script to trigger the Git for Windows build and test run.
|
|
# Set the $GFW_CI_TOKEN as environment variable.
|
|
# Pass the branch (only branches on https://github.com/git/git are
|
|
# supported) and a commit hash.
|
|
#
|
|
|
|
. ${0%/*}/lib-travisci.sh
|
|
|
|
test $# -ne 2 && echo "Unexpected number of parameters" && exit 1
|
|
test -z "$GFW_CI_TOKEN" && echo "GFW_CI_TOKEN not defined" && exit
|
|
|
|
BRANCH=$1
|
|
COMMIT=$2
|
|
|
|
gfwci () {
|
|
local CURL_ERROR_CODE HTTP_CODE
|
|
CONTENT_FILE=$(mktemp -t "git-windows-ci-XXXXXX")
|
|
while test -z $HTTP_CODE
|
|
do
|
|
HTTP_CODE=$(curl \
|
|
-H "Authentication: Bearer $GFW_CI_TOKEN" \
|
|
--silent --retry 5 --write-out '%{HTTP_CODE}' \
|
|
--output >(sed "$(printf '1s/^\xef\xbb\xbf//')" >$CONTENT_FILE) \
|
|
"https://git-for-windows-ci.azurewebsites.net/api/TestNow?$1" \
|
|
)
|
|
CURL_ERROR_CODE=$?
|
|
# The GfW CI web app sometimes returns HTTP errors of
|
|
# "502 bad gateway" or "503 service unavailable".
|
|
# We also need to check the HTTP content because the GfW web
|
|
# app seems to pass through (error) results from other Azure
|
|
# calls with HTTP code 200.
|
|
# Wait a little and retry if we detect this error. More info:
|
|
# https://docs.microsoft.com/en-in/azure/app-service-web/app-service-web-troubleshoot-http-502-http-503
|
|
if test $HTTP_CODE -eq 502 ||
|
|
test $HTTP_CODE -eq 503 ||
|
|
grep "502 - Web server received an invalid response" $CONTENT_FILE >/dev/null
|
|
then
|
|
sleep 10
|
|
HTTP_CODE=
|
|
fi
|
|
done
|
|
cat $CONTENT_FILE
|
|
rm $CONTENT_FILE
|
|
if test $CURL_ERROR_CODE -ne 0
|
|
then
|
|
return $CURL_ERROR_CODE
|
|
fi
|
|
if test "$HTTP_CODE" -ge 400 && test "$HTTP_CODE" -lt 600
|
|
then
|
|
return 127
|
|
fi
|
|
}
|
|
|
|
# Trigger build job
|
|
BUILD_ID=$(gfwci "action=trigger&branch=$BRANCH&commit=$COMMIT&skipTests=false")
|
|
if test $? -ne 0
|
|
then
|
|
echo "Unable to trigger Visual Studio Team Services Build"
|
|
echo "$BUILD_ID"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if the $BUILD_ID contains a number
|
|
case $BUILD_ID in
|
|
''|*[!0-9]*) echo "Unexpected build number: $BUILD_ID" && exit 1
|
|
esac
|
|
|
|
echo "Visual Studio Team Services Build #${BUILD_ID}"
|
|
|
|
# Tracing execued commands would produce too much noise in the waiting
|
|
# loop below.
|
|
set +x
|
|
|
|
# Wait until build job finished
|
|
STATUS=
|
|
RESULT=
|
|
while true
|
|
do
|
|
LAST_STATUS=$STATUS
|
|
STATUS=$(gfwci "action=status&buildId=$BUILD_ID")
|
|
test "$STATUS" = "$LAST_STATUS" || printf "\nStatus: %s " "$STATUS"
|
|
printf "."
|
|
|
|
case "$STATUS" in
|
|
inProgress|postponed|notStarted) sleep 10 ;; # continue
|
|
"completed: succeeded") RESULT="success"; break;; # success
|
|
"completed: failed") break;; # failure
|
|
*) echo "Unhandled status: $STATUS"; break;; # unknown
|
|
esac
|
|
done
|
|
|
|
# Print log
|
|
echo ""
|
|
echo ""
|
|
set -x
|
|
gfwci "action=log&buildId=$BUILD_ID" | cut -c 30-
|
|
|
|
# Set exit code for TravisCI
|
|
test "$RESULT" = "success"
|