首页 > 解决方案 > 如何在不每天创建新版本的情况下在舞台上安排部署?

问题描述

我在 azure-devops 中有一个用于存储库的部署管道,它可以与发布计划配合使用。但问题是,它会为每个预定时间创建一个新版本,即使工件在第二天没有更改。即,如果存储库一个月没有更新,我有大约 30 个相同工件的新版本。

我们需要进行这种计划部署的原因是,我们每晚从目标资源组中删除所有已部署的项目,并且每天早上都需要有人/某事再次将最新版本部署到目标阶段。

我在部署前的条件下启用了阶段计划并为其设置了时间(08:00 am),它安排在第二天的上午 08:00(并部署)。但看起来它不会触发第二天的另一次部署。(如果没有更新版本)。

我在这里错过了什么吗?

在此处输入图像描述

标签: deploymentazure-devops

解决方案


由计划发布触发器触发的发布将创建一个新发布。这是设计使然,无法更改。有关详细信息,请查看Azure Pipelines中的文档发布。

如果您想按计划重新部署到某个阶段而不创建新版本。作为一种解决方法,您可以编写一个脚本来调用发布环境更新 rest api。并在你的机器上设置一个任务计划来运行这个脚本。

1,下面是在powershell脚本中重新部署一个发布阶段的示例。

您可以参考此处的步骤获取人员访问令牌(PAT)。

您可以使用Release get api来获取环境 ID。

$url ="https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=5.1-preview.6"

$pat ="{PAT}"

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

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

Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -ContentType "application/json" -Method patch -Body $body

在此线程中还有另一个示例通过 rest api 重新部署阶段。请检查一下。

2、完成上述脚本后,您需要设置一个任务计划来运行上述脚本。请在此处查看详细步骤以配置在 Windows 机器上将PowerShell 脚本运行到任务计划程序中


推荐阅读