gpt4 book ai didi

javascript - 自定义 Azure DevOps REST API 调用

转载 作者:行者123 更新时间:2023-12-03 01:31:14 25 4
gpt4 key购买 nike

我正在使用 Azure DevOps 的 REST API 来处理发布管道。
发布管道使用任务作为代理作业的一部分。此任务使用 ARM 模板文件和参数文件将 VM 部署到 Azure 中。到目前为止,我可以使用 Azure DevOps REST API 成功执行发布管道,并使用下面的代码成功部署 VM。

snippet of the GUI

使用 GUI,我还可以在执行时成功自定义发布管道。例如,我可以将值添加到屏幕截图下方的“覆盖模板参数”字段。

但是,在搜索之后,我没有看到 Microsoft 在其 Azure DevOps REST API 文档中介绍如何在执行发布管道时访问任务中的字段。

当我调用此管道时,如何修改下面代码中的“响应正文”以访问管道任务中的字段之一,例如“覆盖模板参数”?

const sendHttpRequest = (method, url, reqBody) => 
{
const promise = new Promise((resolve,reject) =>
{
const request = new XMLHttpRequest();
request.open(method, url, true); // Send a request
request.setRequestHeader('Content-Type', 'application/json'); // Build the request header
request.setRequestHeader ("Authorization", "Basic " + btoa('Basic' + ":" + pat)); // Supply authentication

request.onload = () =>
{ // Retrieve the response
// Check the status of the request...
if (request.status >= 200 && request.status < 400)
{
myOutput.innerHTML = "Request Status: Valid | ";
resolve(request.response);
}
else
{
myOutput.innerHTML = "Request Status: Invalid |";
reject(request.response);
}
} // onload

request.send(JSON.stringify(reqBody));
}); // promise

return promise;
};
/*
Execute a pipeline
*/
function run_pipeline()
{
var reqLink = 'https://dev.azure.com/'+ org_name+'/'+ prj_name+'/_apis/pipelines/'+pipeline_id+'/runs?api-version=6.0-preview.1';

// CHANGE RESPONSE BODY TO THE DESIRED PIPELINE NEEDED TO BE RUN
responseBody = {
"previewRun": "false",
"resources": null,
"stagesToSkip": null,
"templateParameters": null,
"variables": null,
"yamlOverride": null
};

sendHttpRequest('POST', reqLink, responseBody).then(responseData =>
{
// parse the obtained data
var data = JSON.parse(responseData);
myOutput.innerHTML += " Pipeline Executed!";
console.log(data);
})
.catch(error =>
{
var message = JSON.parse(error);
myOutput.innerHTML += " Error with Data...";
console.log(message);
});
};

最佳答案

如果您需要获取发布管道任务中的字段。您可能需要使用get release rest api

获取 https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=6.0-preview .6

您可以从Release ui地址栏获取release id和environment id。见下文:

enter image description here

然后您将找到响应中的任务字段(deployPhasesSnapshot -->workflowTasks-->inputs)

enter image description here

更新:

如果您想更新 storageName 参数。请按照以下步骤操作:

1、创建一个名为storageName的管道变量。并选中在发布时可设置。请参阅下面的屏幕截图:

enter image description here

2、设置部署任务的覆盖模板参数字段如下:

enter image description here

3、如果你想创建一个新的版本。您可以调用create release rest api

发布 https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=5.1

然后更新请求正文中的管道变量storageName。见下文:

请求正文:

{
"definitionId": 7,

"variables": {
"storageName": {
"value": "foo"
}
}
}

然后 storageName 参数将被覆盖为“foo”。

更新2:

如果您想更新现有版本。您需要调用update release environment rest api

 PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=5.1-preview.6.

首先,您需要将管道变量 storageName 范围设置为其阶段。见下文:

enter image description here

然后更新请求正文中的storageName 值。并将 status 设置为 inProgress 以重新部署阶段。这样覆盖的 storageName 将反射(reflect)在发布中。

{
"status": "inProgress",


"variables": {
"storageName": {
"value": "storageName-rest-api-three"
}
}
}

关于javascript - 自定义 Azure DevOps REST API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62325774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com