【问题标题】:How to use a single agent for multiple jobs/stages in azure devops YAML pipeline如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段
【发布时间】:2020-10-26 17:53:18
【问题描述】:

我正在研究 Azure DevOps YAML 管道,我不确定我们是否可以在整个管道中使用单个代理。 我有多个工作/阶段 - 构建、部署、部署后,并希望将其分配给单个代理,因为它正在使用相同的工件。 有没有办法通过管道分配单个代理。

提前致谢。

【问题讨论】:

  • 您是说在给定阶段的所有作业中专门为每个单独阶段、同一个池或同一个代理使用相同的代理?
  • 是的,我说的是对多个阶段/作业使用相同的代理
  • @Abhishek Anvekar 没有获得您的最新信息,解决方法对您有帮助吗?或者,如果您有任何疑虑,请随时在此处分享。

标签: azure tfs azure-devops yaml azure-pipelines


【解决方案1】:

是的,您可以在 YAML 上定义特定的代理。

例如: 水池: 名称:代理池名称 需要: - agent.name -等于 AgentName

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml

【讨论】:

  • 您好,感谢您的回复,我的问题有点不同,我不希望代理每次都为新工作进行结帐操作。就像我的第一份工作会生成工件一样,几秒钟内应该会自动将工件放在代理文件夹中。
  • 这是 YML 文件:触发器:-主池:vmImage:Windows-2019 阶段:-阶段:构建 displayName:“构建”作业:-作业:构建 displayName:构建步骤:-任务: PowerShell@2 输入:targetType:'inline' 脚本:Write-Host “这是构建作业”-作业:部署 displayName:部署步骤:-任务:CmdLine@2 输入:脚本:echo 这是部署作业
【解决方案2】:

我不希望代理每次都为新工作做结帐操作

使用 checkout 关键字来配置或禁止此行为。

steps:
- checkout: none

详情可以参考这位官方document

【讨论】:

    【解决方案3】:

    如果您不能像 @Savio Moreira 建议的那样使用特定代理,我发现的唯一选择是重复一些步骤。

    在我的情况下,有一个类似的管道,有 2 个阶段:

    • 构建(验证 PR)
      • Visual Studio 构建
      • Visual Studio 测试
      • VS 测试
    • 发布(合并到主文件后发布工件)
      • Visual Studio 构建
      • 复制文件
      • 发布构建工件

    只有在使用 YAML 阶段和启用分支策略中的条件创建 PR 时才会触发构建部分。 Publish部分只有在合并到master时才会触发。

    有些步骤需要重复但执行是唯一的,这有点烦人,并且使用相同的管道我可以在合并之前执行验证,然后在代码进入 master 后创建工件。

    结帐选项没有帮助,因为在我的情况下,每个阶段都在完全不同的容器上执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2020-10-31
      • 2020-01-27
      相关资源
      最近更新 更多