簡體   English   中英

使用 REST API Azure devops 傳遞變量組名稱

[英]Pass a Variable group name using REST API Azure devops

有沒有辦法在不編輯發布定義的情況下使用 REST API 將變量組名稱傳遞給發布管道。

我可以使用以下方法來做到這一點

   $defurl = "https://vsrm.dev.azure.com/org/proj/_apis/release/definitions/13?api-version=5.1" 
   $def = Invoke-RestMethod -Uri $defurl -Method Get -Headers $header
   $def.variableGroups="VariableGroupName"
   $json = @($def) | ConvertTo-Json -Depth 99 
   $udef = Invoke-RestMethod  -Uri $defurl  -Method Put -Body $json -ContentType "application/json" -Headers $header

但問題是“ Put ”請求更新原始定義。 有沒有辦法在不編輯發布定義的情況下傳遞變量組。 這是一種動態編輯發布定義以傳遞變量組的好習慣嗎?

有沒有辦法在不編輯發布定義的情況下傳遞變量組

恐怕沒有這種方法可以在編輯發布定義的情況下傳遞Variablegroup

要將Variablegroup名稱傳遞給發布定義,我們必須使用Put請求來更新定義。 由於沒有選項/REST API,我們可以在運行發布管道時使用它來更新定義。

如果您不想修改原始定義,您可以在原始定義中獲取Variablegroup名稱,然后使用上面的 REST API 添加/更新Variablegroup名稱。 在發布管道的末尾,我們可以再次調用上面的 REST API 來恢復原始定義中的Variablegroup名稱。

此外,如果您添加的變量組中的變量不多,您可以在發布管道中使用Logging 命令覆蓋變量,這不會改變原始定義。

Write-Host "##vso[task.setvariable variable=testvar;]testvalue"

更新:

如何在發布管道外使用這個日志命令來修改變量組???

答案是不。 是因為我們在創建發布管道時無法更新變量組,所以它只顯示發布變量:

在此處輸入圖片說明

希望這可以幫助。

您使用相同的$defurl與 get 和 post。 該帖子試圖對定義api doc src執行更新,因此此代碼將始終更新發布定義。

我認為您正在尋找的端點是release -> Create這將開始一個新的部署。 我沒有使用這個端點修改變量組,但已經覆蓋了特定的變量,如果沒有彈出更好的答案,我會嘗試在我的答案中添加一些代碼。

我發現使用 fiddler 檢查 web gui 發送的 REST 調用幫助我弄清楚我的 json body 需要看起來像什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM