使用Azure DevOps REST API在给定范围内更新管道变量

问题描述

我目前正在尝试在范围内更新管道变量DEV,但是,我很难更新该变量。是否可以在“发布”以外的范围内更新变量?如果是这样,怎么办?下面是我使用的代码以及收到的错误。

let reqLink = ' https://vsrm.dev.azure.com/'+ organization +'/'+project+'/_apis/release/releases?api-version=5.1';

let reqBody = {
    "definitionId": definitionId,"variables": {
      "someVar": 
        { 
          "value": "foo","scope": "DEV"
        }
    }
  };
  
sendHttpRequest('POST',reqLink,reqBody).then(response => {
  let data = JSON.parse(response);
  console.log(data);
});

这是我收到的错误:

{"$id":"1","innerException":null,"message":"Variable(s) someVar do not exist in the release pipeline at scope: Release

解决方法

范围变量不是在根级别定义的。但是在舞台上。因此,您必须在此处进行修改:

enter image description here

此处,变量{ "query": { "bool": { "must": [ { "query_string": { "query": "*","fields": [ "field_a","field_b","field_c",] } },[ { "nested": { "path": "students","query": { "bool": { "must": [ { "wildcard": { "students.name": { "value": "*keyword*" } } } ] } } } } ] ] } } } 的范围为SomeVer。实现此目标的最简单方法是使用Stage 1命中终结点,在json上进行操作并使用GET命中终结点。

我注意到您正在击中PUT,而您应该击中相当具体的版本release/releases。还是您的目标是更新definition本身?

,

是否可以在“发行”以外的范围内更新变量?如果可以,怎么办?

答案是肯定的。

如果要更新发布管道,则使用的REST API将使用以下方法创建发布:

PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=6.0-preview.4

REST API的请求主体可能需要发布管道的详细信息。使用以下REST API来获取它。

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=6.0-preview.4

然后,您可以修改其响应正文并将其用作第一个REST API的请求正文。

属性variables没有名为scope的属性。如果要将变量从“发布”范围更新到阶段范围,则需要在variables中删除变量的原始定义,然后在目标环境中重新定义它。这是一个例子。

原始脚本:

{
    ...
    "variables": {
        "somevar": {
            "value": "foo"
        }
    },...
};

修改后的脚本:

{
    ...
    "environments": [
        {
            "id": {stage id},"name": DEV
            ...
            "variables": {
                "somevar": {
                    "value": "foo",},...
        }
    ],...
    "variables": {},...
};

以下是摘要:要更改变量的范围,只需将变量定义移至目标范围即可。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...