Azure DevOps YAML自托管代理管道构建受困于查找自代理

时间:2020-09-02 02:45:28

标签: c++ azure-devops continuous-integration yaml g++

操作:我试图在自托管的Windows计算机上配置并运行一个简单的c ++ azure管道。我对这一切都很陌生。我在下面运行了脚本。

预期:查看构建任务,显示任务和清理任务。看你好词。

结果:错误,脚本找不到我的构建代理。

##[warning]An image label with the label Weltgeist does not exist.
,##[error]The remote provider was unable to process the request.
Pool: Azure Pipelines
Image: Weltgeist
Started: Today at 10:16 p.m.
Duration: 14m 23s

信息与测试:

  1. 我自托管的代理名称是Weltgeist,它是 默认代理池。这是Windows计算机,具有所有g ++,mingw和 其他相关工具。

  2. 我在本地尝试了构建任务,没问题。

  3. 我尝试使用不带azure'ubuntu-latest'代理的构建任务 问题。

  4. 我按照这些规范创建了自托管代理。 我是Azure Repo的所有者。 https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops

如何为自托管代理正确配置pool ymal参数? 我还有其他步骤可做服务器端吗?或在天蓝色的回购配置? 还有其他什么地方出错了吗?


# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- master

pool:
  vmImage: 'Weltgeist' #Testing with self-hosted agent

steps:
- script: |
    mkdir ./build
    g++ -g ./src/hello-world.cpp -o ./build/hello-world.exe
  displayName: 'Run a build script'

- script: |
    ./build/hello-world.exe
  displayName: 'Run Display task'

- script: |
    rm -r build
  displayName: 'Clean task'

(更新) 解决方案:

Thx,按照下面的答案进行更新并阅读了更多的库ymal定义后,它可以工作。请注意,我还修改了其他几行使其适用于我的环境。


trigger:
- master

pool:
  name: Default
  demands:
   - agent.name -equals Weltgeist

steps:
- script: |
    mkdir build
    g++ -o ./build/hello-world.exe ./src/hello-world.cpp
  displayName: 'Run a build script'

- script: |
    cd build
    hello-world.exe
    cd ..
  displayName: 'Run Display task'

- script: |
    rm -r build
  displayName: 'Clean task'

3 个答案:

答案 0 :(得分:1)

我对 Default 感到困惑,因为组织中已经有一个名为 Default 的管道。

扩展此处提供的答案。

pool:
  name: NameOfYourPool
  demands:
   - agent.name -equals NameOfYourAgent

这是您可以在 DevOps 中找到该信息的屏幕。

enter image description here

答案 1 :(得分:0)

由于您使用的是自托管代理,因此可以使用以下格式:

pool:
  name: Default
  demands:
   - agent.name -equals Weltgeist  

然后它将按预期工作。

您可以参考有关POOL Definition in Yaml的文档。

答案 2 :(得分:0)

我遇到了同样的问题,用“name”替换池下的 vmImage 对我有用。 PFB,

触发:

  • 大师

池: name: 'Weltgeist' #Testing with self-hosted agent