azure-devops - 如何在 Azure DevOps 上一次运行一个版本?
问题描述
我将在我的 azure devops 版本上实施预部署门。我每次都使用 HTTP 请求门检查是否有正在进行的部署。问题是,当一个版本的部署完成(第 1 阶段)时,如果管道中有(第 2 阶段)不进行部署,我想阻止队列中的下一个版本的部署。
最终目标是,无论队列中有多少版本,也无论池中有多少代理,我都想确保只有在部署/其他阶段没有其他活动版本时才开始发布。
解决方案
您可以在Deployments - ListInvoke REST API: GET
rest api下面添加一个调用门,并检查部署中是否有任何版本。请参见以下步骤:
https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/deployments?operationStatus=queued,queuedForAgent,phaseInProgress&api-version=6.1-preview.2
1、添加一个Invoke Rest Api Gate
进入 Pre-deployment conditions --> Enable Gate-->Add a Invoke Rest Api Gate--> 点击 Manage 创建服务连接。请参见下面的屏幕截图。
2,创建如上图所示的服务连接。
当您在上面的屏幕截图中单击管理时。您将转到服务连接页面。单击新服务连接并选择服务连接的通用类型:
3、回到Invoke Rest Api Gate。选择刚刚创建的服务连接:见下图
- 方法:
Get
- URL后缀和参数:
/_apis/release/deployments?operationStatus=queued,queuedForAgent,phaseInProgress&api-version=6.1-preview.2
- 成功标准:
eq(root['value'][0], '')
上面的 Invoke rest api 门将调用rest api 以使用过滤器(即。)deployments list
过滤这些正在进行或排队部署的发布。如果有任何部署正在进行或排队成功标准:将失败。operationStatus
operationStatus=queued,queuedForAgent,phaseInProgress
eq(root['value'][0], '')
推荐阅读
- serialization - 如何使logstash与io.confluent.kafka.serializers.KafkaAvroSerializer一起工作
- elasticsearch - Logstash:是否有可能以某种方式添加一个日期差为两个或多个日志行的字段?
- javascript - 可切换选项卡:默认选项卡
- node.js - 我应该如何配置 Typescript 来编译代码以在 Node.JS 中运行?
- flutter - 如何在颤动中使用 GridView 小部件编辑项目?
- amazon-web-services - Terraform 从账户 A 获取 AWS 数据并在账户 B 中使用
- vue.js - vue test utils 不会触发触发器
- reactjs - 如何根据使用反应的条件将marginLeft应用于样式组件?
- xamarin.android - “意外元素
在发现 " 在 Xamarin Android 中 - typescript - 细化标记联合的类型