Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在使用Azure DevOps REST API创建构建定义时提供管道参数?_Docker_Azure Devops_Azure Pipelines_Azure Devops Rest Api_Azure Repos - Fatal编程技术网

Docker 如何在使用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 DevOps REST API创建构建定义。当我从门户运行构建定义时,它没有使用
azure pipeline.yml
文件,该文件是azure Repos中代码库的一部分。管道文件(
azure pipeline.yml
)包含docker任务,该任务将为应用程序构建映像。但这一行动不起作用。为了解决这个问题,我创建了两个定义

  • 从Azure DevOps门户手动创建生成定义
  • 使用Azure DevOps REST API创建了生成定义
  • 第一种方法按预期工作。它正在为应用程序和docker任务创建docker映像。第二种方法不起作用,它只是从存储库中检出源代码

    我遇到了流程参数,其中包括管道文件的路径。我不知道如何使用RESTAPI配置相同的

    我正在关注这个文档

    编辑1

    其余配置与
    存储库相关

    在门户中创建生成定义

    使用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
        }]
    }