deployment - 如何在不每天创建新版本的情况下在舞台上安排部署?
问题描述
我在 azure-devops 中有一个用于存储库的部署管道,它可以与发布计划配合使用。但问题是,它会为每个预定时间创建一个新版本,即使工件在第二天没有更改。即,如果存储库一个月没有更新,我有大约 30 个相同工件的新版本。
我们需要进行这种计划部署的原因是,我们每晚从目标资源组中删除所有已部署的项目,并且每天早上都需要有人/某事再次将最新版本部署到目标阶段。
我在部署前的条件下启用了阶段计划并为其设置了时间(08:00 am),它安排在第二天的上午 08:00(并部署)。但看起来它不会触发第二天的另一次部署。(如果没有更新版本)。
我在这里错过了什么吗?
解决方案
由计划发布触发器触发的发布将创建一个新发布。这是设计使然,无法更改。有关详细信息,请查看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 脚本运行到任务计划程序中
推荐阅读
- quarkus - 请求已被读取 - 使用 graphql
- amazon-web-services - 通过 cloudformation 使用 aws `cdk synth` 输出
- javascript - 反转 L:CRS 的 Y 轴。Vue2-Leaflet 上的简单地图
- django - Ngnix Django 502 错误网关
- authentication - 来自非浏览器客户端的 SAML(或其他)身份验证流程
- linear-programming - 如何用语言编写以下目标函数的语法
- c++ - 霍夫圆检测确定性
- xaml - 将列表中 itemselected 的 id 传递给按钮 xamarin
- javascript - 如何在谷歌日历api的事件对象中设置开始和结束时间
- powerbi - 具有多个特定于报告组的聚合的星型模式:好或坏