簡體   English   中英

如何通過 api 從與當前運行關聯的 Azure DevOps 環境中獲取更改

[英]How to grab changes from Azure DevOps environment associated with current run via api

我們在 Azure DevOps 中有基於 yaml 的管道,它通過 deployOnce 策略將更改部署到不同的環境,如下所示:

jobs:
  - deployment: deploymentName
    displayName: deploymentDisplayName
    dependsOn: []
    environment: int
    strategy:
      runOnce:
        deploy:
          steps:

這還在 Azure DevOps 管道中的環境的更改選項卡中創建了很好的更改報告:

對環境變化的看法

這個視圖有什么好處 - 它也顯示了變化,也屬於以前失敗的部署。

我試圖弄清楚這一點,但實際上無法找到正確的 API 調用來檢索此數據。

有一個 Rest API - 環境部署記錄 - 列表

GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/environments/{environmentId}/environmentdeploymentrecords?api-version=7.0

沒有內置的 REST API 可以獲取與 REST API 相關的更改,但是仍然有一種“作弊”的方式來獲取這些信息。

您可以打開開發人員控制台(在大多數瀏覽器中為 F12)和 select“網絡”選項卡。 然后在Azure DevOps中,點擊環境中的一個部署。 你會得到這樣的網絡跟蹤:

https://dev.azure.com/{organization}/{project}/_environments/{environment}/runs?environmentExecutionRecordId=xxx&ownerId=xxx&definitionId=xxx&planType=xxx&view=jobshistory&__rt=fps&__ver=2

您可能會在ms.vss-environments-web.environment-traceability-changesms.vss-environments-web.environment-traceability-commits-data-provider中獲得您感興趣的信息。

最后,我無法通過一個直接的 API 電話找到任何方法來收集這些更改,並構建了腳本來為我完成這些更改

簡而言之,它收集當前 Azure DevOps 項目中的所有環境,根據規則對其進行過濾,然后根據名稱選擇管道中最后一個成功的部署作業(我在每個環境中都有幾個依賴的部署作業),最后嘗試獲取 git head部署到目標環境。 然后它將通過git log收集所有 git 消息並根據規則過濾它們,在 output 變量中向我顯示要部署在目標環境中的 Jira 票證的逗號分隔列表。 該腳本在構建階段執行,其結果在部署階段由部署管道使用

暫無
暫無

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

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