Azure Devops发布渠道-在上一个版本执行时将新版本排队

时间:2020-08-04 11:56:19

标签: azure-devops devops azure-devops-pipelines

我们的发布管道配置了多个阶段。对于每个合并到主请求中的请求,将自动创建一个新版本。 我们有DEV => TST => REL => PRD

现在,我们还使用这些阶段来执行自动化测试。因此,在DEV之后需要一个阶段来执行一些基本的自动化测试(AT)。 因此,我们以DEV => AT => TST => REL => PRD结尾。 AT依赖DEV才能正常运行。

Screenshot of our release pipeline

我们的问题如下。当版本X执行AT时,同时合并了一个拉取请求,导致针对版本X + 1的DEV部署,这会导致针对版本X的AT发生故障。有没有办法让X + 1在队列中等待,直到AT对X完成了?

我们也可以通过避免在部署期间在DEV上停机来解决此问题,或者在不受自动部署等影响的环境中隔离测试。但是,基于我们拥有的资源以及我们有时间改进此问题,我们可以想知道是否有一种方法可以使管道实例之间更加相互了解...

1 个答案:

答案 0 :(得分:0)

但是根据我们拥有的东西以及我们可以改善的时间 我们想知道是否有一种方法可以创建一个实例 管道彼此之间更加了解...

对不起,但是恐怕我们现在还没有这种开箱即用的功能。

此处是one discussion的类似主题,您可以对其进行跟踪并在此处发表评论,以分享您的反馈。 (由于一个用于构建管道而不是用于发布,因此您可以post a new feature request用于发布管道)

enter image description here

作为临时解决方法:

您可以将AT阶段中的步骤移至DEV阶段。创建代理作业AT,并将AT阶段的内容移至DEV阶段的AT作业,并确保在Deployment queue settings下的Pre-deployment conditions中禁用并行阶段部署:

enter image description here

此设置可用于阶段级别,但不适用于发行版级别。因此,仅当您将AT阶段的内容移至DEV阶段时,此方法才有效。 (您可能还会从此similar issue中获得提示)

要在盖茨中调用Azure devops rest api:

1。创建一个Generic service connection

网址:https://vsrm.dev.azure.com/OrgName/ProjectName/_apis/release/releases/3?api-version=5.1

将用户名和密码留空。

2。将默认的"AuthToken": "$(system.AccessToken)"更改为"Authorization": "Bearer $(System.AccessToken)"

enter image description here

然后其余的api将与来自当前上下文的令牌一起执行。