0

是否可以在单个 YAML 管道中确定代理是在自托管还是在云构建中运行?如果是这样,人们将如何确定这一点?

我需要我的管道在这两个位置都可以工作,但某些步骤只有在我在一个或另一个上构建时才必须执行。

4

2 回答 2

1

我找不到直接的解决方案,但可以使用条件代理变量来完成。

例如Hosted Agent,我的代理池中有:

在此处输入图像描述

在 YAML 中,我可以使用此名称来调节运行步骤取决于它:

steps:
- script: dotnet build --configuration $(buildConfiguration)
  condition: eq(variables['Agent.Name'],'Hosted Agent') 
  displayName: 'dotnet build $(buildConfiguration)'
于 2020-07-19T18:03:07.283 回答
1

是否可以在单个 YAML 管道中确定代理是在自托管还是在云构建中运行?如果是这样,人们将如何确定这一点?

在 YAML 管道中,有一个pool关键字,用于管道作业的池。

因此,我们可以使用此pool关键字在单个 YAML 管道中确定代理是在自托管还是在云构建中运行:

如果您使用自托管代理:

pool:
  name: string  # name of the pool to run this job in

如果您使用托管代理:

pool:
  vmImage: string # name of the VM image you want to use; valid only in the Microsoft-hosted pool

并检查可用的虚拟机映像以获取更多详细信息。

此外,如果我们不添加pool关键字,Azure 管道将使用默认代理。More action您可以从管道的 -> Triggers-> YAML检查和更改它:

在此处输入图像描述 在此处输入图像描述

我需要我的管道在这两个位置工作,但某些步骤必须仅在我在一个或另一个上构建时发生

正如 Bartosz 回答的那样,我们可以使用带有代理变量的条件来实现这个请求。

于 2020-07-21T09:38:43.717 回答