|
| 1 | +#!/usr/bin/env bash |
| 2 | +# |
| 3 | +# Script to trigger the a Git for Windows build and test run. |
| 4 | +# Set the $GFW_CI_TOKEN as environment variable. |
| 5 | +# Pass the branch (only branches on https://github.com/git/git are |
| 6 | +# supported) and a commit hash. |
| 7 | +# |
| 8 | + |
| 9 | +test $# -ne 2 && echo "Unexpected number of parameters" && exit 1 |
| 10 | +test -z "$GFW_CI_TOKEN" && echo "GFW_CI_TOKEN not defined" && exit |
| 11 | + |
| 12 | +BRANCH=$1 |
| 13 | +COMMIT=$2 |
| 14 | + |
| 15 | +gfwci () { |
| 16 | + local CURL_ERROR_CODE HTTP_CODE |
| 17 | + exec 3>&1 |
| 18 | + HTTP_CODE=$(curl \ |
| 19 | + -H "Authentication: Bearer $GFW_CI_TOKEN" \ |
| 20 | + --silent --retry 5 --write-out '%{HTTP_CODE}' \ |
| 21 | + --output >(sed "$(printf '1s/^\xef\xbb\xbf//')" >cat >&3) \ |
| 22 | + "https://git-for-windows-ci.azurewebsites.net/api/TestNow?$1" \ |
| 23 | + ) |
| 24 | + CURL_ERROR_CODE=$? |
| 25 | + if test $CURL_ERROR_CODE -ne 0 |
| 26 | + then |
| 27 | + return $CURL_ERROR_CODE |
| 28 | + fi |
| 29 | + if test "$HTTP_CODE" -ge 400 && test "$HTTP_CODE" -lt 600 |
| 30 | + then |
| 31 | + return 127 |
| 32 | + fi |
| 33 | +} |
| 34 | + |
| 35 | +# Trigger build job |
| 36 | +BUILD_ID=$(gfwci "action=trigger&branch=$BRANCH&commit=$COMMIT&skipTests=false") |
| 37 | +if test $? -ne 0 |
| 38 | +then |
| 39 | + echo "Unable to trigger Visual Studio Team Services Build" |
| 40 | + echo "$BUILD_ID" |
| 41 | + exit 1 |
| 42 | +fi |
| 43 | + |
| 44 | +# Check if the $BUILD_ID contains a number |
| 45 | +case $BUILD_ID in |
| 46 | +''|*[!0-9]*) echo "Unexpected build number: $BUILD_ID" && exit 1 |
| 47 | +esac |
| 48 | + |
| 49 | +echo "Visual Studio Team Services Build #${BUILD_ID}" |
| 50 | + |
| 51 | +# Wait until build job finished |
| 52 | +STATUS= |
| 53 | +RESULT= |
| 54 | +while true |
| 55 | +do |
| 56 | + LAST_STATUS=$STATUS |
| 57 | + STATUS=$(gfwci "action=status&buildId=$BUILD_ID") |
| 58 | + test "$STATUS" = "$LAST_STATUS" || printf "\nStatus: $STATUS " |
| 59 | + printf "." |
| 60 | + |
| 61 | + case "$STATUS" in |
| 62 | + inProgress|postponed|notStarted) sleep 10 ;; # continue |
| 63 | + "completed: succeeded") RESULT="success"; break;; # success |
| 64 | + *) echo "Unhandled status: $STATUS"; break;; # failure |
| 65 | + esac |
| 66 | +done |
| 67 | + |
| 68 | +# Print log |
| 69 | +echo "" |
| 70 | +echo "" |
| 71 | +gfwci "action=log&buildId=$BUILD_ID" | cut -c 30- |
| 72 | + |
| 73 | +# Set exit code for TravisCI |
| 74 | +test "$RESULT" = "success" |
0 commit comments