我正在处理Azure DevOps YAML管道,我不确定我们是否可以在整个管道中使用单个代理。我有多个作业/阶段-构建、部署、部署后,并希望将其分配给单个代理,因为它使用相同的工件。是否有办法通过管道分配单个代理?先谢了。
plicqrtu1#
我不希望代理每次都为新工作做结帐操作使用checkout关键字配置或禁止此行为。
steps: - checkout: none
你可以参考这份官方文件了解详情。
a9wyjsp72#
是的,您可以在YAML上定义特定的代理。例如:池:名称:代理池名称要求:-agent.name-等于座席名称https://learn.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml
l0oc07j23#
如果你不能像@Savio Moreira建议的那样使用Specif代理,我发现唯一的选择就是重复一些步骤。在我的情况下有一个类似的管道与2阶段:
仅当使用YAML阶段和启用分支策略中的条件创建PR时,才会触发"生成"部件。仅当合并到主文档时,才会触发"发布"部件。有些步骤需要重复,但执行是唯一的,这有点烦人,使用相同的管道,我可以在合并之前执行验证,然后在代码进入master后创建工件。checkout选项没有帮助,因为在我的例子中,每个阶段都在完全不同的容器上执行。
xqnpmsa84#
是的,有一种方法,所有你需要做的是存储你的第一份工作的代理名称在一个变量中,然后为任何其他工作,你需要要求相同的代理。
jobs: - job: A steps: - bash: | echo "##vso[task.setvariable variable=AgentName;isoutput=true]$(Agent.Name)" name: passOutput - job: B dependsOn: A variables: AgentName: $[ dependencies.A.outputs['passOutput.AgentName'] ] pool: name: pool1 demands: Agent.Name -equals $(Agent.Name) steps: - bash: | echo $(AgentName)
4条答案
按热度按时间plicqrtu1#
我不希望代理每次都为新工作做结帐操作
使用checkout关键字配置或禁止此行为。
你可以参考这份官方文件了解详情。
a9wyjsp72#
是的,您可以在YAML上定义特定的代理。
例如:池:名称:代理池名称要求:-agent.name-等于座席名称
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml
l0oc07j23#
如果你不能像@Savio Moreira建议的那样使用Specif代理,我发现唯一的选择就是重复一些步骤。
在我的情况下有一个类似的管道与2阶段:
仅当使用YAML阶段和启用分支策略中的条件创建PR时,才会触发"生成"部件。仅当合并到主文档时,才会触发"发布"部件。
有些步骤需要重复,但执行是唯一的,这有点烦人,使用相同的管道,我可以在合并之前执行验证,然后在代码进入master后创建工件。
checkout选项没有帮助,因为在我的例子中,每个阶段都在完全不同的容器上执行。
xqnpmsa84#
是的,有一种方法,所有你需要做的是存储你的第一份工作的代理名称在一个变量中,然后为任何其他工作,你需要要求相同的代理。