我可以使用Azure DevOps REST API创建生成定义。当我从门户网站运行生成定义时,它没有使用azure-pipeline.yml
文件,该文件是Azure Repos中代码库的一部分。管道文件(azure-pipeline.yml
)包含docker任务,该任务将为应用程序构建映像。但是此操作不起作用。为了解决这个问题,我创建了两个定义。
第一种方法按预期工作。它正在为应用程序创建一个docker映像,并且docker任务正常运行。第二种方法不起作用,它只是从存储库中签出源代码。
我遇到了包括管道文件路径在内的过程参数。我不知道如何使用REST API进行配置。
编辑1
{
"name": "myapp2",
"badgeEnabled": "true",
"queue": {
"name": "Hosted Ubuntu 1604",
"pool": {
"name": "Hosted Ubuntu 1604",
"isHosted": true
}
},
"jobAuthorizationScope": "projectCollection",
"jobTimeoutInMinutes": 60,
"jobCancelTimeoutInMinutes": 5,
"quality": "definition",
"type" : "build",
"process": {
"type": 2
},
"processParameters" : {
"inputs" : [{
"name" : "azure-pipeline.yml",
"required" : true
}]
}
其余配置与repositories
相关。
在门户中创建构建定义
使用Azure DevOps REST API创建构建定义
答案 0 :(得分:0)
如果您已经拥有yaml管道azure-pipeline.yml,请从上述帖子中获取。无需调用“创建定义” api即可使用azure-pipeline.yml作为参数来创建相同的API。您可以调用,然后手动或通过Build Queue API
将管道Yaml排队如果要使用api创建定义,则可以首先使用Get Definition api调用现有的构建管道定义,以便可以参考返回的响应来检查需要配置哪些属性创建定义 api。
这里是Create VSTS Build Definitions using PowerShell的示例,此外,在此博客中,您还可以通过引用Get Definition api的响应来定义管道任务(在process:{phases:[{steps:}]}
中定义)。
如您所见,使用api定义构建管道很复杂,因此不建议使用this thread中讨论的方法。创建管道的最便捷方法是通过GUI手动或使用yaml。
更新:
如果调用Get Definition api以获取现有yaml管道的json格式定义。您将看到没有processParameters
属性。
因此,当您使用api创建Yaml管道时,无需定义processParameters
属性。只能在流程属性"process": { "yamlFilename": "azure-pipelines.yml", "type": 2}
中定义yaml文件。
出于测试目的,我首先获取现有yaml管道的json格式定义,然后修改了json文件的一部分。然后,我从azure管道UI中删除yaml管道。最后,我使用创建Definiton API 创建yaml管道。然后按预期方式创建yaml管道。
您在问题中发布的最后一个屏幕截图在经典管道中。 Yaml管道没有Parameters
部分。
属性processParameters
将定义此Parameters
部分。它用于链接所有在构建定义中使用的任务的重要参数。检查here以获得有关Classic管道中processParameters的更多信息。