如何在 DevOps/VSTS 中自动启动之前成功的版本

Sur*_*esh 2 devops azure-devops azure-pipelines devops-services azure-devops-extensions

如果当前版本失败了,如何自动运行之前成功的版本?

在此输入图像描述

例如:如果A(当前版本)失败,则自动触发B(先前成功版本)版本。从另一个发布定义触发。

Mer*_*SFT 5

使用powershell调用api不需要那么复杂。我们有内置功能可以满足您的要求。由于发布管道由一个或多个阶段组成,\xef\xbc\x8cre-deploy 发布管道可以被视为重新运行阶段。

\n

因此首先打开发布管道定义。然后导航到阶段的部署后条件=> 启用自动重新部署触发器=> 选择事件操作

\n

在此输入图像描述

\n

查看实际执行结果:

\n

在此输入图像描述

\n

这是 Azure DevOps 的优势,因此您无需担心 Prod 部署期间出现问题,因为该工具会自动撤销上次成功的部署。

\n

更新:

\n
$connectionToken="{PAT}" \n\n$url="https://vsrm.dev.azure.com/{org}/{project}/_apis/release/releases?api-version=6.0"\n\n$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))\n    \n$Body=@"\n{\n  "definitionId": {specific release definition id},\n  "description": "Creating release from powershell",\n  "artifacts": [\n    {\n      "alias": "{artifact name}",\n      "instanceReference": {\n        "id": "{buildid}",\n        "name": null\n      }\n    }\n  ],\n  "isDraft": false,\n  "reason": "none",\n  "manualEnvironments": null\n}\n"@\nInvoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $Body -ContentType application/json\n
Run Code Online (Sandbox Code Playgroud)\n