在Azure DevOps中通过env:PATH指定Agent能力

60次阅读
没有评论

问题描述

在使用Azure DevOps 2020u1时遇到了一个问题。他的代理(agents)拥有一些工具,这些工具没有注册任何环境变量(ENV_VARs)。这些工具要么在系统的PATH中,要么在特定的位置。他想知道如何在作业(Job)中定义一个需要特定文件存在的任务,例如需要使用klocwork的kwinject工具。换句话说,他希望能够实现类似以下的操作:

demands:
  - c:\my\full\path\to\a\tool\executable.exe
  - my_program_in_path.exe

另外,他注意到在Azure DevOps界面中,PATH并没有被视为”CAPABILITY”(能力)。

解决方案

在Azure DevOps中,可以通过在作业的demands属性中定义需要的Agent能力,从而实现在作业执行前检查所需工具是否存在。虽然PATH在Azure DevOps界面中没有被视为”CAPABILITY”,但仍然可以通过其他方式来满足这一需求。

以下是实现这一目标的步骤:

步骤1:定义Agent能力

  1. 登录到Azure DevOps的Web界面。
  2. 导航到”Project Settings”(项目设置)。
  3. 在左侧导航栏中,选择”Agent Pools”(代理池)。
  4. 选择你想要修改的代理池,然后点击”Capabilities”(能力)选项卡。
  5. 在”User capabilities”(用户能力)或”System capabilities”(系统能力)下,点击”Add capability”(添加能力)。
  6. 输入一个名称,例如”customPathCapability”,然后将路径值设置为所需工具的路径,例如”c:\my\full\path\to\a\tool”。
  7. 保存更改。

步骤2:在作业中使用Agent能力

  1. 在你的Azure DevOps项目中,打开一个作业或创建一个新作业。
  2. 在作业的定义中,使用demands属性来指定Agent需要具备的能力。使用之前定义的”customPathCapability”来检查特定路径是否存在,如下所示:
jobs:
- job: YourJobName
  steps:
  - script: echo This job requires the custom path capability
    displayName: 'Check Custom Path Capability'
  demands:
    customPathCapability: c:\my\full\path\to\a\tool
  - script: your_command_here
    displayName: 'Run Your Command'

在上面的示例中,首先在作业中使用demands属性检查Agent是否拥有”customPathCapability”,并且路径与所需工具的路径相匹配。如果条件满足,作业将继续执行。

通过这种方式,你可以定义自定义的Agent能力,并在作业中使用demands属性来检查这些能力,以确保所需工具的存在。这样,你就能够实现在作业执行前对Agent的能力进行检查,从而满足特定工具的需求。

请注意,这里的示例是为了说明解决方案的原理,实际操作中需要根据具体情况进行调整。此外,对于涉及路径和工具的问题,可能还需要考虑操作系统的差异和版本问题。

正文完