【问题标题】:Start a build and passing variables through Azure DevOps Rest API通过 Azure DevOps Rest API 开始构建和传递变量
【发布时间】:2016-03-24 10:08:56
【问题描述】:

我想通过 REST API 开始构建 Azure Pipelines。有一个API for queuing builds,但我找不到定义变量的方法。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-rest-api


    【解决方案1】:

    当您需要在排队时设置值时,接受的答案并不能真正回答问题。 解决方案实际上非常简单,您只需在 json 有效负载中添加一个 parameters 字段。内容应该是一个包含参数的json字符串(不是直接的对象) 例如:

    {
        "parameters":  "{\"ReleaseNumber\":  \"1.0.50\", \"AnotherParameter\":  \"a value\"}",
        "definition":  {
                           "id":  2
                       }
    }
    

    编辑:此功能现在正确记录为an optional stringified dictionary。见https://www.visualstudio.com/fr-fr/docs/integrate/api/build/builds#queue-a-build

    【讨论】:

    • 不错!我很好奇你是怎么找到这个的,因为文档(如问题中的链接)似乎没有提到它。它只是一个未记录的功能吗?
    • 好在当前的门户使用与我们相同的 rest api,因此 chrome 开发人员工具或提琴手在寻找如何做事时非常有帮助:)。如果它对你有帮助,你可以投票赞成;)。
    • 其他注意事项:通过 API 启动构建时,您还可以添加 reason 字段,但请注意,虽然文档指定“buildCompletion”是字符串选项之一,但调用将失败.可用原因的真实列表在这里——docs.microsoft.com/en-us/azure/devops/extend/reference/client/…
    • 在 api 5.1 中为 azure devops 排队构建时放置一个参数部分非常失败。
    【解决方案2】:

    变量包含在definitions 中,您可以先通过 build-definition api 更新构建定义以设置变量,然后将构建排队。

    以下是通过 build-definition api 获取的变量部分:

      "variables": {
        "system.debug": {
          "value": "false",
          "allowOverride": true
        },
        "BuildConfiguration": {
          "value": "release",
          "allowOverride": true
        },
        "BuildPlatform": {
          "value": "any cpu",
          "allowOverride": true
        }
      },
    

    【讨论】:

    • 谢谢,首先设置变量然后队列可能是一种可能的解决方法。但这会改变每次运行时的构建定义,并使历史记录变得混乱。由于可以在从 UI 对构建进行排队时设置变量,因此如果 REST API 提供相同的功能会很好。
    • 至少对我来说,传递变量似乎也没有像宣传的那样工作。
    • 如果您想连续多次调用此 API,此选项可能无法正常工作,在调用队列构建之前您可能无法保存它。我需要用不同的参数连续调用它 50 次。所以我会使用接受的答案,即使它不那么漂亮。
    【解决方案3】:

    对于任何对此有问题的人(我做过),自接受答案以来使用的 API 有所不同(这对我来说根本不起作用)。但是按照 Cyprien Autexier 的建议,我查看了引擎盖(Firefox 开发工具),发现门户不再使用 Builds API。它使用管道一 (https://docs.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-6.1)。有了这个,完美无缺。

    【讨论】:

      【解决方案4】:

      对于任何查看此内容的人,我都能使其与 'templateParameters' 一起使用,它允许您发送 Object 而不是版本 7.1 上的 String。

      • 方法:POST
      • 网址:https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=7.1-preview.7
      • 正文:JSON 示例:
        {
          "sourceBranch":"Development",
          "definition": {
            "id": 5
          }
          "templateParameters": {
            "PARAMETER1": "value1",
            "parameter2": "valuex"
          }
        }
        

      文档:https://docs.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-7.1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-24
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多