Azure devops 如何同步Azure DevOps管道阶段的运行?

Azure devops 如何同步Azure DevOps管道阶段的运行?,azure-devops,continuous-integration,yaml,Azure Devops,Continuous Integration,Yaml,我有一个基于YAML的Azure DevOps管道。在这个管道中,我有几个阶段,每个阶段代表一个环境的部署。这包括在Azure中提供基础设施、卸载应用程序以及运行自动验收测试 工程师可以从多个分支运行手动管道,也可以让主分支触发管道并行运行。这意味着环境部署阶段可以跨管道的多个运行实例并行运行 我想让stage等待成为唯一正在运行的实例。使用YAML管道解决此问题的最佳方法是什么?您可以在管道中为环境配置独占锁 转到Azure DevOps>您的组织>您的项目>管道>环境 选择(或创建)要同步部

我有一个基于YAML的Azure DevOps管道。在这个管道中,我有几个阶段,每个阶段代表一个环境的部署。这包括在Azure中提供基础设施、卸载应用程序以及运行自动验收测试

工程师可以从多个分支运行手动管道,也可以让主分支触发管道并行运行。这意味着环境部署阶段可以跨管道的多个运行实例并行运行


我想让stage等待成为唯一正在运行的实例。使用YAML管道解决此问题的最佳方法是什么?

您可以在管道中为环境配置独占锁

  • 转到Azure DevOps>您的组织>您的项目>管道>环境
  • 选择(或创建)要同步部署的环境
  • 在右上角有一个下拉菜单,进入“批准和检查”
  • 在右上角还有一个大大的加号按钮,单击此按钮并选择“独占锁定”
  • 这确保在任何给定时间,只有一个管道实例可以使用此环境在
    azure pipelines.yaml中使用的阶段

    azure pipelines.yaml
    中,您应该使用
    deployment
    作业中的
    environment
    字段按名称引用该环境

    下面是一个名为
    staging
    的环境部署示例。 在门户中创建环境时,应在上述步骤中使用相同的名称

    阶段:
    -阶段:部署
    工作:
    -部署:部署登台
    环境:登台
    战略:
    跳动:
    部署:
    步骤:
    -结帐:self
    -脚本:deploy-script.sh
    
    一些额外资源:


    您所说的“我想让一个阶段等待成为唯一运行的实例”是什么意思?如果您正在寻找强制阶段并行运行的方法,请检查,您将看到将
    dependsOn:[]
    属性添加到阶段将导致它们并行运行。或者我误解了你的问题?你好,杨。我不是指在单个管道实例的上下文中,而是指在管道的所有实例中。我不希望我的管道一次运行多个“部署到QA”阶段。我只希望该阶段的一个实例运行。如果您的意思是希望按顺序(一次一个)在并行运行的管道实例中运行阶段“Deploy to QA”,我认为这是不可能的,因为这些实例中的阶段没有这样的直接关系来强制它们按顺序运行。是的,类似这样的事情。我希望环境可以提供一些同步选项。我猜是典型的多线程问题。我们将不得不互相交谈:DIt很好地为用户提供了一个解决方案,但是粘贴带有少量其他内容的外部链接会产生一个脆弱的答案——也就是说,如果链接后面的内容发生变化或消失,那么您的答案也会随之改变或消失。考虑从链接中的概念来制定答案,除了张贴它们。@ WaitingForGuacamole感谢反馈。我刚刚更新了我的答案。