**操作:**我尝试在自托管的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,它是默认代理www.example.com的一部分pools.it是一台Windows计算机,上面有所有g++、mingw和其他相关工具。
1.我在本地尝试了我的构建任务,没有任何问题。
1.我尝试使用azure 'ubuntu-latest'代理完成构建任务,没有任何问题。
1.我按照这些规范创建了自托管代理。我是azure repo. https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops的所有者
如何正确配置自托管代理的池ymal参数?我是否需要在服务器端或Azure存储库配置上执行其他步骤?是否有其他想法说明问题所在?
# 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'
4条答案
按热度按时间toe950271#
我对
Default
感到困惑,因为组织中已经有一个名为Default
的管道。详细说明此处提供的答案。
这是您可以在DevOps中找到这些信息的屏幕。
mi7gmzs62#
由于您使用的是自托管代理,因此可以使用以下格式:
那么它应该像预期的那样工作。
您可以参考有关POOL Definition in Yaml的文档。
r6l8ljro3#
我也遇到过同样的问题,用"name"替换pool下的vmImage对我很有效。
触发器:
pool:name:'Weltgeist'#使用自托管代理进行测试
p5cysglq4#
另外请注意,如果您的代理仅出现在“Azure Pipelines”池中,而未出现在任何其他池中,则该代理可能已被配置为“Environment”资源,无法用作构建步骤的一部分。我花了很长时间尝试使用自托管VM进行构建步骤,考虑到引用VM的正确方法是从Pipelines〉Enviroments区域创建VM资源:
该代理将被正确创建并在“Azure Pipelines”池中可见,但在任何其他池中都不可用,这意味着它无法在用于设置构建所用服务器的yaml中引用。
我能够解决这个问题,方法是使用
.\config.cmd remove
在我的自托管虚拟机上注销代理,然后在没有--environment --environmentname "<name>"
的情况下运行./config
,这是在上述注册脚本中提供的(如“Add resouce”屏幕截图所示)奇怪的是,注册脚本比代理池中显示的“新建代理”表单更快地注册代理:
必要的文件被拉到服务器(无需先下载),并自动生成生存期为3小时的PAT。