![](/img/trans.png)
[英]Calling Azure DevOps REST API using JavaScript
[英]Customizing Azure DevOps REST API call
我正在使用 Azure DevOps 的 REST API 來處理發布管道。
發布管道使用任務作為代理作業的一部分。 此任務使用 ARM 模板文件和參數文件將 VM 部署到 Azure。 到目前為止,我可以使用 Azure DevOps REST API 成功執行發布管道,並使用以下代碼成功部署 VM。
使用 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
GET 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。 見下文:
然后你會在響應中找到任務的字段( deployPhasesSnapshot --> workflowTasks --> inputs )
更新:
如果要更新 storageName 參數。 請按照以下步驟操作:
1、創建一個名為storageName
的管道變量。 並檢查Settable at release time
。 請看下面的截圖:
2、設置部署任務的override template parameters
字段如下:
3、如果你想創建一個新版本。 可以調用create release rest api
POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=5.1
然后更新請求正文中的管道變量storageName
。 見下文:
請求正文:
{
"definitionId": 7,
"variables": {
"storageName": {
"value": "foo"
}
}
}
然后storageName
參數將被覆蓋為“foo”。
更新 2:
如果要更新現有版本。 需要調用更新發布環境 rest api
PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=5.1-preview.6.
首先,您需要將管道變量storageName
scope 設置為其階段。 見下文:
然后更新請求正文中的storageName
值。 並將status
設置為inProgress
以重新部署該階段。 這樣覆蓋的 storageName 將反映在發布中。
{
"status": "inProgress",
"variables": {
"storageName": {
"value": "storageName-rest-api-three"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.