]>
Commit | Line | Data |
---|---|---|
029aeeed LS |
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" |