如何使用 2 个管道为 MS 托管代理定义并行性
How to define parallelism for MS hosted agents with 2 pipelines
我们有两个 YAML 管道,pull-request.yml
和 main.yml
。顾名思义,pull-request.yml
在每个 PR 上运行,main.yml
在部署到 main 后运行。
我配置了两个 MS 托管的并行作业。
在 main.yml
使用部署作业时,我正在部署到各种环境。一切都很好,除非 main.yml
并行执行两次。然后,它将部署到每个管道中的相同环境,导致我们的 IAC 脚本出现问题。
查看文档,it doesn't seem possible to restrict this behavior with YAML pipelines。
我现在的解决方法是切换回 1 个并行作业,但我想我的 pull-request.yml
管道必须有并行作业。然后,我想,让我们创建另一个代理池,但这只允许我添加自托管代理。我想避免这种情况,因为 MS 托管代理非常方便。
如何让我的 pull-request.yml
有并行作业,但 main.yml
只有一个实例,仅使用 MS 托管代理?
不支持对一个 pull-request.yml 进行并行作业,但对另一个 main.yaml 使用 MS 托管代理进行单个并行作业,因为如果满足要求,Microsoft 将自动检测管道代理,并且用它来 运行 工作。
但是对于部署到环境的 main.yml,也许您可以在环境上使用“独占部署锁定策略”。
如doc所述:
With this update, you can ensure that only a single run deploys to an environment at a time. By choosing the "Exclusive lock" check on an environment, only one run will proceed. Subsequent runs which want to deploy to that environment will be paused. Once the run with the exclusive lock completes, the latest run will proceed. Any intermediate runs will be canceled.
我们有两个 YAML 管道,pull-request.yml
和 main.yml
。顾名思义,pull-request.yml
在每个 PR 上运行,main.yml
在部署到 main 后运行。
我配置了两个 MS 托管的并行作业。
在 main.yml
使用部署作业时,我正在部署到各种环境。一切都很好,除非 main.yml
并行执行两次。然后,它将部署到每个管道中的相同环境,导致我们的 IAC 脚本出现问题。
查看文档,it doesn't seem possible to restrict this behavior with YAML pipelines。
我现在的解决方法是切换回 1 个并行作业,但我想我的 pull-request.yml
管道必须有并行作业。然后,我想,让我们创建另一个代理池,但这只允许我添加自托管代理。我想避免这种情况,因为 MS 托管代理非常方便。
如何让我的 pull-request.yml
有并行作业,但 main.yml
只有一个实例,仅使用 MS 托管代理?
不支持对一个 pull-request.yml 进行并行作业,但对另一个 main.yaml 使用 MS 托管代理进行单个并行作业,因为如果满足要求,Microsoft 将自动检测管道代理,并且用它来 运行 工作。
但是对于部署到环境的 main.yml,也许您可以在环境上使用“独占部署锁定策略”。
如doc所述:
With this update, you can ensure that only a single run deploys to an environment at a time. By choosing the "Exclusive lock" check on an environment, only one run will proceed. Subsequent runs which want to deploy to that environment will be paused. Once the run with the exclusive lock completes, the latest run will proceed. Any intermediate runs will be canceled.