Azure devops 如何在Azure DevOps上一次运行一个版本?

Azure devops 如何在Azure DevOps上一次运行一个版本?,azure-devops,Azure Devops,我将在我的azure devops版本上实现预部署门。 我使用HTTP请求门检查每次是否有正在进行的部署。 问题是,当一个版本上的部署完成(阶段1)时,我希望阻止队列中下一个版本上的部署,例如,如果管道中有(阶段2)不进行部署 最终目标是,无论队列中有多少版本,无论池中有多少代理,我想确保只有在部署/其他阶段中没有其他活动版本时,发布才会启动。您可以添加调用REST API:GET门以在REST API下面调用,并检查部署中是否有任何发布。请参阅以下步骤: https://vsrm.dev.az

我将在我的azure devops版本上实现预部署门。 我使用HTTP请求门检查每次是否有正在进行的部署。 问题是,当一个版本上的部署完成(阶段1)时,我希望阻止队列中下一个版本上的部署,例如,如果管道中有(阶段2)不进行部署


最终目标是,无论队列中有多少版本,无论池中有多少代理,我想确保只有在部署/其他阶段中没有其他活动版本时,发布才会启动。

您可以添加
调用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,添加一个调用Rest Api门

转到部署前条件-->启用门-->添加调用Rest Api门-->单击管理创建服务连接。请参见下面的屏幕截图

2、创建如上图所示的服务连接

当您在上面的屏幕截图中单击管理时。您将转到服务连接页面。单击新建服务连接,然后选择通用服务连接类型:

  • 服务器Url:

  • 密码:

3、返回调用RESTAPI门。选择刚刚创建的服务连接:请参见下文

  • 方法:
    Get
  • URL后缀和参数:
    /\u api/release/deployments?operationStatus=queued,queuedForAgent,phaseInProgress&api version=6.1-preview.2
  • 成功标准:
    eq(根['value'][0],'')

上面的调用rest api gate将调用
部署列表
rest api,以使用
operationStatus
过滤器(即
operationStatus=queued,queuedForAgent,phaseInProgress
)过滤正在进行或排队部署的这些发布。如果存在任何正在进行或排队的deloyment,则成功条件:
eq(root['value'][0],'')
将失败


如果您使用自托管代理和。您可以在环境和代理池上检查。

请显示您的代码以显示您迄今为止尝试的内容。我使用的是azure devops gates UI,未解决任何代码问题。我尝试了与第一个解决方案相同的操作。该方法的问题是:如果我有一个活动版本和一个挂起版本,我将用一个示例进行解释。在活动版本中,我有3个阶段,当第一阶段完成部署时,在它继续到第2阶段之前的几秒钟内,状态更改为排队,此时挂起的版本启动并开始工作,因为GATE返回值0,因为在几秒钟内没有inProgress状态。我现在正在尝试多做一个门来处理这个问题,我会更新。@VladiPikovski您不需要添加多个门。您可以尝试使用筛选器参数
operationStatus
而不是deploymentStatus。例如,
operationStatus=排队、排队代理、阶段进度
。它检索排队或正在进行的部署。我更新了上面的答案。这正是我最终所做的,很有趣:),非常感谢,用这种方法现在一切都正常了。