msbuild

Форк
0
/
telemetry-end.yml 
102 строки · 3.8 Кб
1
parameters:
2
  maxRetries: 5
3
  retryDelay: 10 # in seconds
4

5
steps:
6
- bash: |
7
    if [ "$AGENT_JOBSTATUS" = "Succeeded" ] || [ "$AGENT_JOBSTATUS" = "PartiallySucceeded" ]; then
8
      errorCount=0
9
    else
10
      errorCount=1
11
    fi
12
    warningCount=0
13

14
    curlStatus=1
15
    retryCount=0
16
    # retry loop to harden against spotty telemetry connections
17
    # we don't retry successes and 4xx client errors
18
    until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]]
19
    do
20
      if [ $retryCount -gt 0 ]; then
21
        echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..."
22
        sleep $RetryDelay
23
      fi
24

25
      # create a temporary file for curl output
26
      res=`mktemp`
27

28
      curlResult=`
29
        curl --verbose --output $res --write-out "%{http_code}"\
30
        -H 'Content-Type: application/json' \
31
        -H "X-Helix-Job-Token: $Helix_JobToken" \
32
        -H 'Content-Length: 0' \
33
        -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$Helix_WorkItemId/finish" \
34
        --data-urlencode "errorCount=$errorCount" \
35
        --data-urlencode "warningCount=$warningCount"`
36
      curlStatus=$?
37

38
      if [ $curlStatus -eq 0 ]; then
39
        if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then
40
          curlStatus=$curlResult
41
        fi
42
      fi
43

44
      let retryCount++
45
    done
46

47
    if [ $curlStatus -ne 0 ]; then
48
      echo "Failed to Send Build Finish information after $retryCount retries"
49
      vstsLogOutput="vso[task.logissue type=error;sourcepath=templates/steps/telemetry-end.yml;code=1;]Failed to Send Build Finish information: $curlStatus"
50
      echo "##$vstsLogOutput"
51
      exit 1
52
    fi
53
  displayName: Send Unix Build End Telemetry
54
  env:
55
    # defined via VSTS variables in start-job.sh
56
    Helix_JobToken: $(Helix_JobToken)
57
    Helix_WorkItemId: $(Helix_WorkItemId)
58
    MaxRetries: ${{ parameters.maxRetries }}
59
    RetryDelay: ${{ parameters.retryDelay }}
60
  condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT'))
61
- powershell: |
62
    if (($env:Agent_JobStatus -eq 'Succeeded') -or ($env:Agent_JobStatus -eq 'PartiallySucceeded')) {
63
      $ErrorCount = 0
64
    } else {
65
      $ErrorCount = 1
66
    }
67
    $WarningCount = 0
68

69
    # Basic retry loop to harden against server flakiness
70
    $retryCount = 0
71
    while ($retryCount -lt $env:MaxRetries) {
72
      try {
73
        Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$env:Helix_WorkItemId/finish?errorCount=$ErrorCount&warningCount=$WarningCount" -Method Post -ContentType "application/json" -Body "" `
74
          -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken }
75
        break
76
      }
77
      catch {
78
        $statusCode = $_.Exception.Response.StatusCode.value__
79
        if ($statusCode -ge 400 -and $statusCode -le 499) {
80
          Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)"
81
          Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message
82
          exit 1
83
        }
84
        Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..."
85
        $retryCount++
86
        sleep $env:RetryDelay
87
        continue
88
      }
89
    }
90

91
    if ($retryCount -ge $env:MaxRetries) {
92
      Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries."
93
      exit 1
94
    }
95
  displayName: Send Windows Build End Telemetry
96
  env:
97
    # defined via VSTS variables in start-job.ps1
98
    Helix_JobToken: $(Helix_JobToken)
99
    Helix_WorkItemId: $(Helix_WorkItemId)
100
    MaxRetries: ${{ parameters.maxRetries }}
101
    RetryDelay: ${{ parameters.retryDelay }}
102
  condition: and(always(),eq(variables['Agent.Os'], 'Windows_NT'))
103

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.