【问题标题】:Azure Devops Release pipeline - Queue new release when previous is executingAzure Devops 发布管道 - 在先前执行时排队新版本
【发布时间】:2020-08-04 11:56:19
【问题描述】:

我们的发布管道配置了多个阶段。对于合并到 master 的每个 pull request,都会自动创建一个新版本。 我们有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 失败。有没有办法让 Release X+1 在队列中等待,直到 Release X 的 AT 完成?

我们也可以通过避免部署期间 DEV 停机来解决这个问题,或者在不受自动化部署影响的环境中隔离测试等。但根据我们所拥有的,以及我们可用于改进这一点的时间,我们想知道是否有办法让管道实例更加了解彼此...

【问题讨论】:

  • 这个问题怎么样?下面的答案是否解决了您的问题,如果是,您可以Accept it as an Answer,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。

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


【解决方案1】:

但基于我们所拥有的,以及我们可以改进的时间 这我们想知道是否有办法制作 a 的实例 管道更了解对方...

抱歉,我们目前还没有这种开箱即用的功能。

这里是one discussion,关于类似的主题,您可以跟踪它并在那里发表评论以分享您的反馈。 (因为那个是构建管道而不是发布,你可以post a new feature request发布管道)

作为临时解决方法:

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

此设置适用于阶段级别,但不适用于发布级别。所以它只有在你将 AT 阶段的内容移动到 DEV 阶段时才有效。 (你也可以从这个similar issue得到提示)

在 Gates 中调用 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 将使用当前上下文中的令牌执行。

【讨论】:

  • 与此同时,我试图在DEV 的触发器上设置一个门,以调用 azure devops api 来检查是否有AT 的实例正在进行中。 api提供了这种能力,我可以使用个人访问令牌来调用它,但我似乎无法通过服务连接来做到这一点......有可能让它工作吗?
  • @BenSav 我的更新可以帮助解决如何调用rest api吗?如果我的回答有帮助,请accept it as answer。所以它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
相关资源
最近更新 更多