我们的发布管道配置了多个阶段。对于每个合并到主请求中的请求,将自动创建一个新版本。
我们有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上停机来解决此问题,或者在不受自动部署等影响的环境中隔离测试。但是,基于我们拥有的资源以及我们有时间改进此问题,我们可以想知道是否有一种方法可以使管道实例之间更加相互了解...
答案 0 :(得分:0)
但是根据我们拥有的东西以及我们可以改善的时间 我们想知道是否有一种方法可以创建一个实例 管道彼此之间更加了解...
对不起,但是恐怕我们现在还没有这种开箱即用的功能。
此处是one discussion的类似主题,您可以对其进行跟踪并在此处发表评论,以分享您的反馈。 (由于一个用于构建管道而不是用于发布,因此您可以post a new feature request用于发布管道)
作为临时解决方法:
您可以将AT阶段中的步骤移至DEV阶段。创建代理作业AT
,并将AT阶段的内容移至DEV阶段的AT作业,并确保在Deployment queue settings
下的Pre-deployment conditions
中禁用并行阶段部署:
此设置可用于阶段级别,但不适用于发行版级别。因此,仅当您将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)"
。
然后其余的api将与来自当前上下文的令牌一起执行。