Update deprecated query parameter to header (#18705)
[mono-project.git] / scripts / ci / util.sh
blob8b2978c24f5562d203f07e0ab4da8c310777b643
1 #!/bin/bash -e
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" --header "Authorization: token ${GITHUB_STATUS_AUTH_TOKEN}" --post-data "{\"state\": \"$1\", \"context\":\"$2\", \"description\": \"$3\", \"target_url\": \"$4\"}" "https://api.github.com/repos/mono/mono/statuses/${ghprbActualCommit}"
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)"
33 else
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}\",
62 \"Type\": \"${1}\",
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"