我目前正在尝试在范围内更新管道变量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
答案 0 :(得分:1)
范围变量不是在根级别定义的。但是在舞台上。因此,您必须在此处进行修改:
此处,变量{
"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本身?
答案 1 :(得分:0)
是否可以在“发行”以外的范围内更新变量?如果可以,怎么办?
答案是肯定的。
如果要更新发布管道,则使用的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": {},
...
};
以下是摘要:要更改变量的范围,只需将变量定义移至目标范围即可。