Docker 如何在使用Azure DevOps REST API创建构建定义时提供管道参数?
我可以使用Azure DevOps REST API创建构建定义。当我从门户运行构建定义时,它没有使用Docker 如何在使用Azure DevOps REST API创建构建定义时提供管道参数?,docker,azure-devops,azure-pipelines,azure-devops-rest-api,azure-repos,Docker,Azure Devops,Azure Pipelines,Azure Devops Rest Api,Azure Repos,我可以使用Azure DevOps REST API创建构建定义。当我从门户运行构建定义时,它没有使用azure pipeline.yml文件,该文件是azure Repos中代码库的一部分。管道文件(azure pipeline.yml)包含docker任务,该任务将为应用程序构建映像。但这一行动不起作用。为了解决这个问题,我创建了两个定义 从Azure DevOps门户手动创建生成定义 使用Azure DevOps REST API创建了生成定义 第一种方法按预期工作。它正在为应用程序和do
azure pipeline.yml
文件,该文件是azure Repos中代码库的一部分。管道文件(azure pipeline.yml
)包含docker任务,该任务将为应用程序构建映像。但这一行动不起作用。为了解决这个问题,我创建了两个定义
存储库相关
在门户中创建生成定义
使用Azure DevOps REST API创建生成定义
如果您已经拥有yaml管道azure-pipeline.yml,请参阅上面的帖子。不需要调用createdefinitionapi来创建一个以azure-pipeline.yml作为参数的api。您可以调用管道yaml,然后手动或通过
如果要使用api创建定义,可以首先使用api调用现有的生成管道定义,以便可以参考返回的响应来检查需要为创建定义api配置哪些属性
下面是一个示例,除了本博客之外,您还可以通过引用来自Get定义api的响应来定义管道任务(在过程:{phases:[{steps:}]}
中定义)
正如您所看到的,使用api定义构建管道非常复杂,不建议使用中讨论的方法。创建管道最方便的方法是手动通过GUI或使用yaml
更新:
如果调用Get Definition api来获取现有yaml管道的json格式定义。您将看到没有processParameters
属性。
因此,在使用api创建yaml管道时,不需要定义processParameters
属性。您只能在进程属性“进程”中定义yaml文件:{“yamlFilename”:“azure pipelines.yml”,“type”:2}
出于测试目的,我首先获取现有yaml管道的json格式定义,然后修改一点json文件。然后我从azure管道UI中删除yaml管道。最后,我使用创建API定义来创建yaml管道。然后按照预期创建yaml管道
您在问题中发布的最后一个屏幕截图位于经典管道中。Yaml管道没有参数
部分
属性processParameters
将定义此Parameters
部分。它用于链接整个生成定义中使用的任务的所有重要参数。查看有关经典管道中processParameters的更多信息
你能分享这两条管道吗?@Shaykibaramczyk请在问题中找到编辑的部分。我使用这个文件使用RESTAPI调用创建构建定义。我没有获得手动方法的文件。你能共享生成定义UI吗?@Shaykibaramczyk我在问题中包含了两种方法的图片。使用REST API创建生成定义后,我使用生成队列REST API运行定义。但是它没有使用代码库中的管道文件。从日志中,我没有得到正在调用的docker任务。我相信它没有使用管道文件。从上面的帖子来看,processParameters
不起作用。它在定义设置中没有包含构建过程参数中管道文件的路径。如何在JSON请求正文中提供管道路径?我调用了一个现有的yaml管道,yaml文件似乎在流程属性“process”:{“yamlFilename”:“azure pipelines.yml”,“type”:2}
是的。我也尝试过这种方法。定义设置中未包含yamlFilename
as build paramater。
{
"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
}]
}