3 function report_github_status
{
4 if [ -z "$1" ]; then echo "No status specified. Skipping GitHub manual status report."; return 1; fi;
5 if [ -z "$2" ]; then echo "No context specified. Skipping GitHub manual status report."; return 1; fi;
6 if [ -z "$3" ]; then echo "No description specified. Skipping GitHub manual status report."; return 1; fi;
7 if [ -z "${ghprbActualCommit}" ]; then echo "Not a pull request. Skipping GitHub manual status report."; return 1; fi;
8 if [ -z "${GITHUB_STATUS_AUTH_TOKEN}" ]; then echo "No auth token specified. Skipping GitHub manual status report."; return 1; fi;
10 wget
-qO- --header "Content-Type: application/json" --post-data "{\"state\": \"$1\", \"context\":\"$2\", \"description\": \"$3\", \"target_url\": \"$4\"}" "https://api.github.com/repos/mono/mono/statuses/${ghprbActualCommit}?access_token=${GITHUB_STATUS_AUTH_TOKEN}"
13 function helix_set_env_vars
{
14 if [[ ${CI_TAGS} != *'helix'* ]]; then return 0; fi;
16 if [[ ${CI_TAGS} == *'-i386'* ]]; then export MONO_HELIX_ARCHITECTURE
="x86";
17 elif [[ ${CI_TAGS} == *'-amd64'* ]]; then export MONO_HELIX_ARCHITECTURE
="x64";
18 elif [[ ${CI_TAGS} == *'-arm64'* ]]; then export MONO_HELIX_ARCHITECTURE
="arm64";
19 elif [[ ${CI_TAGS} == *'-armel'* ]]; then export MONO_HELIX_ARCHITECTURE
="armel";
20 elif [[ ${CI_TAGS} == *'-armhf'* ]]; then export MONO_HELIX_ARCHITECTURE
="armhf";
21 else echo "Couldn't determine architecture for Helix."; return 1; fi
23 if [[ ${CI_TAGS} == *'linux-'* ]]; then export MONO_HELIX_OPERATINGSYSTEM
="Debian 9"; export MONO_HELIX_TARGET_QUEUE
="Debian.9.Amd64";
24 elif [[ ${CI_TAGS} == *'osx-'* ]]; then export MONO_HELIX_OPERATINGSYSTEM
="macOS 10.12"; export MONO_HELIX_TARGET_QUEUE
="OSX.1012.Amd64";
25 elif [[ ${CI_TAGS} == *'win-'* ]]; then export MONO_HELIX_OPERATINGSYSTEM
="Windows 10"; export MONO_HELIX_TARGET_QUEUE
="Windows.10.Amd64";
26 else echo "Couldn't determine operating system and target queue for Helix."; return 1; fi
28 if [[ ${CI_TAGS} == *'pull-request'* ]]; then
29 export MONO_HELIX_CREATOR
="$ghprbPullAuthorLogin"
30 export MONO_HELIX_TARGET_QUEUE
="${MONO_HELIX_TARGET_QUEUE}.Open"
31 export MONO_HELIX_SOURCE
="pr/jenkins/mono/mono/$ghprbTargetBranch/"
32 export MONO_HELIX_BUILD_MONIKER
="$(git rev-parse HEAD)"
34 version_number
=$
(grep AC_INIT configure.ac |
sed -e 's/AC_INIT(mono, \[//' -e 's/\],//')
35 major_ver
=$
(echo "$version_number" | cut
-d .
-f 1)
36 minor_ver
=$
(echo "$version_number" | cut
-d .
-f 2)
37 build_ver
=$
(echo "$version_number" | cut
-d .
-f 3)
38 blame_rev
=$
(git blame configure.ac HEAD |
grep AC_INIT |
sed 's/ .*//')
39 patch_ver
=$
(git log
"$blame_rev"..HEAD
--oneline |
wc -l |
sed 's/ //g')
40 export MONO_HELIX_CREATOR
="monojenkins"
41 export MONO_HELIX_SOURCE
="official/mono/mono/$MONO_BRANCH/"
42 export MONO_HELIX_BUILD_MONIKER
=$
(printf %d.
%d.
%d.
%d
"$major_ver" "$minor_ver" "$build_ver" "$patch_ver")
46 function helix_send_build_start_event
{
47 if [[ ${CI_TAGS} != *'helix-telemetry'* ]]; then return 0; fi;
48 if [ -z "$1" ]; then echo "No type."; return 1; fi;
50 url
="https://helix.dot.net/api/2018-03-14/telemetry/job"
52 # we need an API key for non-PR builds
53 if [[ "${MONO_HELIX_SOURCE}" != "pr/"* ]]; then
54 if [ -z "$MONO_HELIX_API_KEY" ]; then echo "No Helix API key."; return 1; fi;
55 url
="${url}?access_token=${MONO_HELIX_API_KEY}"
58 mkdir
-p "helix-telemetry/${1}"
59 wget
-O- --method="POST" --header='Content-Type: application/json' --header='Accept: application/json' --body-data="{
60 \"QueueId\": \"Build\",
61 \"Source\": \"${MONO_HELIX_SOURCE}\",
63 \"Build\": \"${MONO_HELIX_BUILD_MONIKER}\",
64 \"Properties\": { \"architecture\": \"${MONO_HELIX_ARCHITECTURE}\", \"operatingSystem\": \"${MONO_HELIX_OPERATINGSYSTEM}\"}
65 }" "${url}" > "helix-telemetry/${1}/job-token.txt"
66 helix_job_token
=$
(cat "helix-telemetry/${1}/job-token.txt" |
sed 's/"//g')
68 wget
-O- --method="POST" --header='Accept: application/json' --header="X-Helix-Job-Token: ${helix_job_token}" "https://helix.dot.net/api/2018-03-14/telemetry/job/build?buildUri=${BUILD_URL//+/%2B}" > "helix-telemetry/${1}/build-id.txt"
71 function helix_send_build_done_event
{
72 if [[ ${CI_TAGS} != *'helix-telemetry'* ]]; then return 0; fi;
73 if [ -z "$1" ]; then echo "No type."; return 1; fi;
74 if [ -z "$2" ]; then echo "No error count."; return 1; fi;
76 helix_job_token
=$
(cat "helix-telemetry/${1}/job-token.txt" |
sed 's/"//g')
77 helix_build_id
=$
(cat "helix-telemetry/$1/build-id.txt" |
sed 's/"//g')
78 wget
-O- --method="POST" --header='Accept: application/json' --header="X-Helix-Job-Token: ${helix_job_token}" "https://helix.dot.net/api/2018-03-14/telemetry/job/build/${helix_build_id}/finish?errorCount=${2}&warningCount=0"