我可以在我的 Azure 管道中使用 2 个代理池吗?

Can I use 2 agent pools in my azure pipelines?

我有一个自托管代理。它用作一种部署代理。 我们软件的所有发行版本都由该代理构建,然后复制到网络位置。

问题:有没有一种方法可以在我的管道中同时使用来自 'azure-pipelines' Microsoft 托管池和我自己的自托管池的代理?

编辑

很遗憾,目前无法做到这一点。 这就是为什么你应该给功能请求投赞成票https://developercommunity.visualstudio.com/t/allow-agent-pools-to-contain-microsoft-hosted-and/396893

这是不可能的。 developer community 上有一张票要求类似的功能,但它已经关闭。

还有一个ticketAllow agent pools to contain Microsoft hosted and self-hosted agents提到了类似的情况,它是开放的,但MS在那儿沉默了。

您想获得哪些好处?

基本上,您可以在一个 build/release 定义中使用多个代理池。您只需将定义拆分为多个作业,然后将所需的代理池分配给相应的作业。

如果您想从一个管道动态分配不同的池来执行相同的构建步骤,我们不能这样做(正如 Krzysztof 提到的)。

你可以做一些骇人听闻的事情并使用多个 jobs/stages。 Jobs/stages 将使用不同的池。您只需要跳过它是否是发布版本。请注意,管道骨架未经过测试。

variables:
  ${{ eq(variables['Build.SourceBranch'], 'release/*') }}:
    release_build: True

stages:
- stage: normal
  condition: eq(variables['release_build'], False)
  pool:
    vmImage: 'windows-latest'
  jobs:
    - job: Builds
      steps:
        - template: build.yaml

- stage: release
  condition: eq(variables['release_build'], True)
  pool: My-agent
  jobs:
    - job: Builds
      steps:
        - template: build.yaml