diff options
Diffstat (limited to 'eng/common/templates/steps/telemetry-start.yml')
-rw-r--r-- | eng/common/templates/steps/telemetry-start.yml | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/eng/common/templates/steps/telemetry-start.yml b/eng/common/templates/steps/telemetry-start.yml deleted file mode 100644 index 32c01ef..0000000 --- a/eng/common/templates/steps/telemetry-start.yml +++ /dev/null @@ -1,241 +0,0 @@ -parameters: - helixSource: 'undefined_defaulted_in_telemetry.yml' - helixType: 'undefined_defaulted_in_telemetry.yml' - buildConfig: '' - runAsPublic: false - maxRetries: 5 - retryDelay: 10 # in seconds - -steps: -- ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}: - - task: AzureKeyVault@1 - inputs: - azureSubscription: 'HelixProd_KeyVault' - KeyVaultName: HelixProdKV - SecretsFilter: 'HelixApiAccessToken' - condition: always() -- bash: | - # create a temporary file - jobInfo=`mktemp` - - # write job info content to temporary file - cat > $jobInfo <<JobListStuff - { - "QueueId": "$QueueId", - "Source": "$Source", - "Type": "$Type", - "Build": "$Build", - "Attempt": "$Attempt", - "Properties": { - "operatingSystem": "$OperatingSystem", - "configuration": "$Configuration" - } - } - JobListStuff - - cat $jobInfo - - # create a temporary file for curl output - res=`mktemp` - - accessTokenParameter="?access_token=$HelixApiAccessToken" - - curlStatus=1 - retryCount=0 - # retry loop to harden against spotty telemetry connections - # we don't retry successes and 4xx client errors - until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] - do - if [ $retryCount -gt 0 ]; then - echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." - sleep $RetryDelay - fi - - curlResult=` - cat $jobInfo |\ - curl --trace - --verbose --output $res --write-out "%{http_code}" \ - -H 'Content-Type: application/json' \ - -X POST "https://helix.dot.net/api/2018-03-14/telemetry/job$accessTokenParameter" -d @-` - curlStatus=$? - - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult - fi - fi - - let retryCount++ - done - - curlResult=`cat $res` - - # validate status of curl command - if [ $curlStatus -ne 0 ]; then - echo "Failed To Send Job Start information after $retryCount retries" - # We have to append the ## vso prefix or vso will pick up the command when it dumps the inline script into the shell - vstsLogOutput="vso[task.logissue type=error;sourcepath=telemetry/start-job.sh;code=1;]Failed to Send Job Start information: $curlStatus" - echo "##$vstsLogOutput" - exit 1 - fi - - # Set the Helix_JobToken variable - export Helix_JobToken=`echo $curlResult | xargs echo` # Strip Quotes - echo "##vso[task.setvariable variable=Helix_JobToken;issecret=true;]$Helix_JobToken" - displayName: Send Unix Job Start Telemetry - env: - HelixApiAccessToken: $(HelixApiAccessToken) - Source: ${{ parameters.helixSource }} - Type: ${{ parameters.helixType }} - Build: $(Build.BuildNumber) - QueueId: $(Agent.Os) - Attempt: 1 - OperatingSystem: $(Agent.Os) - Configuration: ${{ parameters.buildConfig }} - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) -- bash: | - curlStatus=1 - retryCount=0 - # retry loop to harden against spotty telemetry connections - # we don't retry successes and 4xx client errors - until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] - do - if [ $retryCount -gt 0 ]; then - echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." - sleep $RetryDelay - fi - - res=`mktemp` - curlResult=` - curl --verbose --output $res --write-out "%{http_code}"\ - -H 'Content-Type: application/json' \ - -H "X-Helix-Job-Token: $Helix_JobToken" \ - -H 'Content-Length: 0' \ - -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build" \ - --data-urlencode "buildUri=$BuildUri"` - curlStatus=$? - - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult - fi - fi - - curlResult=`cat $res` - let retryCount++ - done - - # validate status of curl command - if [ $curlStatus -ne 0 ]; then - echo "Failed to Send Build Start information after $retryCount retries" - vstsLogOutput="vso[task.logissue type=error;sourcepath=telemetry/build/start.sh;code=1;]Failed to Send Build Start information: $curlStatus" - echo "##$vstsLogOutput" - exit 1 - fi - - export Helix_WorkItemId=`echo $curlResult | xargs echo` # Strip Quotes - echo "##vso[task.setvariable variable=Helix_WorkItemId]$Helix_WorkItemId" - displayName: Send Unix Build Start Telemetry - env: - BuildUri: $(System.TaskDefinitionsUri)$(System.TeamProject)/_build/index?buildId=$(Build.BuildId)&_a=summary - Helix_JobToken: $(Helix_JobToken) - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) - -- powershell: | - $jobInfo = [pscustomobject]@{ - QueueId=$env:QueueId; - Source=$env:Source; - Type=$env:Type; - Build=$env:Build; - Attempt=$env:Attempt; - Properties=[pscustomobject]@{ operatingSystem=$env:OperatingSystem; configuration=$env:Configuration }; - } - - $jobInfoJson = $jobInfo | ConvertTo-Json - - if ($env:HelixApiAccessToken) { - $accessTokenParameter="?access_token=$($env:HelixApiAccessToken)" - } - Write-Host "Job Info: $jobInfoJson" - - # Basic retry loop to harden against server flakiness - $retryCount = 0 - while ($retryCount -lt $env:MaxRetries) { - try { - $jobToken = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job$($accessTokenParameter)" -Method Post -ContentType "application/json" -Body $jobInfoJson - break - } - catch { - $statusCode = $_.Exception.Response.StatusCode.value__ - if ($statusCode -ge 400 -and $statusCode -le 499) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" - Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message - exit 1 - } - Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." - $retryCount++ - sleep $env:RetryDelay - continue - } - } - - if ($retryCount -ge $env:MaxRetries) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." - exit 1 - } - - $env:Helix_JobToken = $jobToken - Write-Host "##vso[task.setvariable variable=Helix_JobToken;issecret=true;]$env:Helix_JobToken" - env: - HelixApiAccessToken: $(HelixApiAccessToken) - Source: ${{ parameters.helixSource }} - Type: ${{ parameters.helixType }} - Build: $(Build.BuildNumber) - QueueId: $(Agent.Os) - Attempt: 1 - OperatingSystem: $(Agent.Os) - Configuration: ${{ parameters.buildConfig }} - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(), eq(variables['Agent.Os'], 'Windows_NT')) - displayName: Send Windows Job Start Telemetry -- powershell: | - # Basic retry loop to harden against server flakiness - $retryCount = 0 - while ($retryCount -lt $env:MaxRetries) { - try { - $workItemId = Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build?buildUri=$([Net.WebUtility]::UrlEncode($env:BuildUri))" -Method Post -ContentType "application/json" -Body "" ` - -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } - break - } - catch { - $statusCode = $_.Exception.Response.StatusCode.value__ - if ($statusCode -ge 400 -and $statusCode -le 499) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" - Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message - exit 1 - } - Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." - $retryCount++ - sleep $env:RetryDelay - continue - } - } - - if ($retryCount -ge $env:MaxRetries) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." - exit 1 - } - - $env:Helix_WorkItemId = $workItemId - Write-Host "##vso[task.setvariable variable=Helix_WorkItemId]$env:Helix_WorkItemId" - displayName: Send Windows Build Start Telemetry - env: - BuildUri: $(System.TaskDefinitionsUri)$(System.TeamProject)/_build/index?buildId=$(Build.BuildId)&_a=summary - Helix_JobToken: $(Helix_JobToken) - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(), eq(variables['Agent.Os'], 'Windows_NT')) |