Azure devops 从Spinnaker触发Azure DevOps发布管道阶段

Azure devops 从Spinnaker触发Azure DevOps发布管道阶段,azure-devops,azure-devops-rest-api,spinnaker,azure-devops-self-hosted-agent,spinnaker-halyard,Azure Devops,Azure Devops Rest Api,Spinnaker,Azure Devops Self Hosted Agent,Spinnaker Halyard,我已经在Azure DevOps中创建了发布管道。 我正在spinnaker内部进行部署。一旦部署成功/失败,部署状态报告应该在Azure DevOps的发布管道阶段发布 如何做到这一点?Rest Api可以吗?可以通过Rest Api触发azure devops发布管道阶段 您可以首先使用RESTAPI创建一个发行版 POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-vers

我已经在Azure DevOps中创建了发布管道。 我正在spinnaker内部进行部署。一旦部署成功/失败,部署状态报告应该在Azure DevOps的发布管道阶段发布


如何做到这一点?Rest Api可以吗?

可以通过Rest Api触发azure devops发布管道阶段

您可以首先使用RESTAPI创建一个发行版

 POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=6.1-preview.8
如果您想触发此版本中的特定阶段。然后您可以使用

请参阅powershell脚本中的以下示例:您可以按照以下步骤获取个人访问令牌

$url = "https://vsrm.dev.azure.com/{org}/{proj}/_apis/release/releases?api-version=6.1-preview.8"

$PAT="Personnal Access Token"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))

$body = '{
  "definitionId": releaseDefinitionId,
 }'

#Create a release
$releaseInfo = Invoke-RestMethod -Uri $url -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method post -Body  $body -ContentType "application/json"

#Trigger a specific stage
$releaseId = $releaseInfo.id
$EnvironmentIds = $releaseInfo.environments | select id

#Trigger the second stage
$EnvUrl = "https://vsrm.dev.azure.com/{org}/{proj}/_apis/Release/releases/$($releaseId)/environments/$($EnvironmentIds[1].id)?api-version=6.1-preview.7"

$envBody='{
"status": "inProgress"
}'

Invoke-RestMethod -Uri $EnvUrl -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method patch -Body $envBody -ContentType "application/json"
$url = "https://vsrm.dev.azure.com/{org}/{proj}/_apis/release/releases?api-version=6.1-preview.8"

$PAT="Personnal Access Token"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))

$body = '{
  "definitionId": releaseDefinitionId,
 }'

#Create a release
$releaseInfo = Invoke-RestMethod -Uri $url -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method post -Body  $body -ContentType "application/json"

#Trigger a specific stage
$releaseId = $releaseInfo.id
$EnvironmentIds = $releaseInfo.environments | select id

#Trigger the second stage
$EnvUrl = "https://vsrm.dev.azure.com/{org}/{proj}/_apis/Release/releases/$($releaseId)/environments/$($EnvironmentIds[1].id)?api-version=6.1-preview.7"

$envBody='{
"status": "inProgress"
}'

Invoke-RestMethod -Uri $EnvUrl -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method patch -Body $envBody -ContentType "application/json"