Skip to content

Instantly share code, notes, and snippets.

@anderseide
Created December 12, 2019 19:51
Show Gist options
  • Save anderseide/ad1225a5210894aa465b09b2fcc33592 to your computer and use it in GitHub Desktop.
Save anderseide/ad1225a5210894aa465b09b2fcc33592 to your computer and use it in GitHub Desktop.
azure-devops-pipeline-build-state
- task: PowerShell@2
inputs:
targetType: inline
script: |
$systemAccessToken = $env:SYSTEM_ACCESSTOKEN
$pipelineDefinitionId = $env:PIPELINE_DEFINITION_ID
$projectBaseUrl = $env:PROJECT_BASE_URL
$uri = "$($projectBaseUrl)/_apis/build/builds?api-version=5.1&definitions=$($pipelineDefinitionId)&queryOrder=queueTimeDescending&`$top=1"
$headers = @{"Authorization" = "Bearer $systemAccessToken"}
Write-Output "Get info from last queued run"
$response = Invoke-WebRequest -Uri $uri -Headers $headers -Method GET
$lastBuild = $response.Content | ConvertFrom-Json
Write-Output "Result:"
Write-Output $lastBuild.value
$lastBuildName = $lastBuild.value.definition.name
$lastBuildLink = $lastBuild.value._links.web.href
$lastBuildStatus = $lastBuild.value.status
$lastBuildResult = $lastBuild.value.result
Write-Output "Last build name is '$lastBuildName'"
Write-Output "Last build link is '$lastBuildLink'"
Write-Output "Last build status is '$lastBuildStatus'"
Write-Output "Last build result is '$lastBuildResult'"
if (($lastBuildStatus -ne 'completed') -or ($lastBuildResult -ne 'succeeded')) {
Write-Output "##vso[task.logissue type=error] $lastBuildName either failed or is still running, so stopping this deployment. See $lastBuildLink for details"
exit 1
}
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
PIPELINE_DEFINITION_ID: {definitionId}
PROJECT_BASE_URL: 'https://dev.azure.com/{organization}/{projectName}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment