是否有一个变量可以找到最后一次成功部署到一个阶段?
Is there a variable to find the last successful deployment to a stage?
在发布管道中部署到某个阶段时,当前进行的部分过程是从部署在该阶段的先前版本进行整理,这意味着告诉当前部署先前部署的版本是什么。目前这是使用自定义变量手动完成的,但它似乎应该是可以从代理检索的那种东西。鉴于在管道中较早的时候会出现不同数量的具有增量修订的版本,因此使用的变量是每个阶段的,而不是在整个管道中知道以前的版本是什么。
有谁知道是否有办法找回这个?
predefined Release Variables 中没有以前的版本变量,但是,您应该可以通过查询 Azure DevOps REST API 在您的管道中使用 PowerShell 任务。
您的脚本 运行 在构建管道的安全上下文中。要启用此功能,请打开 agent phase needs to have the "allow scripts to access the OAuth token"。
List Deployments endpoint 可用于查询所有部署,但可对其进行过滤以查找适合您的发布定义和当前环境的成功发布。
使用以下脚本添加 PowerShell 任务:
param( )
# use this function to invoke the scripts locally with a PAT token
function getAuthToken($user, $accessToken) {
$userString = "{0}:{1}" -f $user, $accessToken
$base64String = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($userString))
return "Basic {0}" -f $base64String
}
function getOAuthToken() {
return "Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN
}
function getServerUrl() {
return [string]::Format("https://{0}{1}", $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI, $env:SYSTEM_TEAMPROJECTID)
}
function InvokeRestApi($relativeUri, $authHeader) {
$baseUrl = getServerUrl
$url = [Uri]::EscapeUriString((getServerUrl) + $relativeUri + "?api-version=5.0")
Write-Host "Querying:" $url
return Invoke-WebRequest $url -Headers @{Authorization=($authHeader)} | ConvertFrom-Json
}
$auth = getAuthToken
$url = "/release/deployments?definitionId=" + $env:RELEASE_DEFINITIONID
$url += "&definitionEnvironmentId=" + $env:RELEASE_DEFINITIONENVIRONMENTID
$url += "&deploymentStatus=succeeded"
$url += "&queryOrder=descending"
$json = InvokeRestApi $url $auth
$lastRelease = $json.value[0]
在发布管道中部署到某个阶段时,当前进行的部分过程是从部署在该阶段的先前版本进行整理,这意味着告诉当前部署先前部署的版本是什么。目前这是使用自定义变量手动完成的,但它似乎应该是可以从代理检索的那种东西。鉴于在管道中较早的时候会出现不同数量的具有增量修订的版本,因此使用的变量是每个阶段的,而不是在整个管道中知道以前的版本是什么。 有谁知道是否有办法找回这个?
predefined Release Variables 中没有以前的版本变量,但是,您应该可以通过查询 Azure DevOps REST API 在您的管道中使用 PowerShell 任务。
您的脚本 运行 在构建管道的安全上下文中。要启用此功能,请打开 agent phase needs to have the "allow scripts to access the OAuth token"。
List Deployments endpoint 可用于查询所有部署,但可对其进行过滤以查找适合您的发布定义和当前环境的成功发布。
使用以下脚本添加 PowerShell 任务:
param( )
# use this function to invoke the scripts locally with a PAT token
function getAuthToken($user, $accessToken) {
$userString = "{0}:{1}" -f $user, $accessToken
$base64String = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($userString))
return "Basic {0}" -f $base64String
}
function getOAuthToken() {
return "Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN
}
function getServerUrl() {
return [string]::Format("https://{0}{1}", $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI, $env:SYSTEM_TEAMPROJECTID)
}
function InvokeRestApi($relativeUri, $authHeader) {
$baseUrl = getServerUrl
$url = [Uri]::EscapeUriString((getServerUrl) + $relativeUri + "?api-version=5.0")
Write-Host "Querying:" $url
return Invoke-WebRequest $url -Headers @{Authorization=($authHeader)} | ConvertFrom-Json
}
$auth = getAuthToken
$url = "/release/deployments?definitionId=" + $env:RELEASE_DEFINITIONID
$url += "&definitionEnvironmentId=" + $env:RELEASE_DEFINITIONENVIRONMENTID
$url += "&deploymentStatus=succeeded"
$url += "&queryOrder=descending"
$json = InvokeRestApi $url $auth
$lastRelease = $json.value[0]