共用方式為


設定組建、發行和測試的保留原則

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

保留原則可讓您設定系統中所儲存的執行、版本和測試的保留時間。 若要節省儲存空間,您想要刪除較舊的執行、測試和版本。

下列保留原則可在您的 Project 設定的 Azure DevOps 中使用:

  1. 管線 - 設定工件、符號、附件、執行和拉取請求執行的保留時間。
  2. 發行 (傳統) - 設定是否要儲存組建並檢視預設和最大保留設定。
  3. 測試 - 設定保持自動化和手動測試回合、結果和附件的時間長度。

項目設定保留原則

注意

如果您使用內部部署伺服器,您也可以指定專案的保留原則預設值,以及設定版本被永久銷毀的時機。 深入瞭解 下文將會提到的發行保留

必要條件

根據預設,參與者、組建管理員、專案管理員和版本管理員群組的成員都可以管理保留原則。

若要管理保留原則,您必須具有下列其中一個訂用帳戶:

您也可以購買 Azure Test Plans 的每月存取權,並指派基本 + Test Plans 存取層級。 請參閱依使用者角色來測試存取權

設定保留原則

  1. 登入您的專案。

  2. 移至項目設定的 [齒輪圖示設定] 索引標籤。

  3. 選取 管線 下的 設定發行保留,或者在 測試 中的 保留

    • 選取 [設定 ] 以設定執行、成品、符號、附件和提取要求執行的保留原則。
    • 選取 [發行保留] 以設定發行保留 原則,並設定何時刪除或永久終結版本。
    • 選取 [保留 ] 以設定保留手動和自動化測試執行的時間長度。

    項目設定中保留設定的螢幕快照。

重要

Azure Pipelines 不再支持個別管線保留原則。 我們建議使用專案層級保留規則。

設定運行保留政策

在大部分情況下,您不需要保留已完成的執行超過特定天數。 使用保留原則,您可以控制要保留每個執行的天數,然後再刪除。

  1. 移至項目設定的 [齒輪圖示設定] 索引標籤。

  2. 選取 [管線] 區段中的 [設定 ]。

警告

Azure DevOps 不再支援每條管線保留規則。 設定 YAML 和傳統管線保留原則的唯一方法是透過上述項目設定。 您無法再設定每個管道的保留政策。

每個管線要保留的最近執行數目設定,需要多一點說明。 此設定的解譯會根據您在管線中建置的存放庫類型而有所不同。

  • Azure Repos:Azure Pipelines 會針對管線的預設分支和存放庫的每個受保護分支保留已設定的最新執行數目。 已設定任何分支原則的分支會被視為受保護的分支。

    例如,請考慮具有兩個分支 mainrelease的存放庫。 pipeline's default branch假設 是 main 分支,且release分支具有分支原則,使其成為受保護的分支。 在此情況下,如果您將原則設定為保留三個執行,那麼會保留 main 的最新三個執行以及 release 分支的最新三個執行。 此外,無論分支為何,這條管線的最近三次執行也會被保留。

    為了進一步釐清此邏輯,我們不妨說,此管線的執行清單如下,最近的一次執行在最上面。 下表顯示如果您已設定為保留最新的三個回合,將會保留哪些回合(忽略天數設定的效果):

    跑# 分支 保留/未保留 為什麼?
    回合 10 主要 已保留 最新的主項 3 個和最新的管道 3 個
    回合 9 分支1 已保留 管道最新的3個
    回合 8 分支2 已保留 管道最新的3個
    回合 7 主要 已保留 主要的最新 3 個
    回合 6 主要 已保留 主要的最新 3 個
    回合 5 主要 未保留 主要或管線都沒有最新的三個版本
    回合 4 主要 未保留 主要或管線都沒有最新的三個版本
    回合 3 分支1 未保留 主要或管線都沒有最新的三個版本
    Run 2 發行 已保留 最新三項即將釋出的內容
    回合 1 主要 未保留 主要或管線都沒有最新的三個版本
  • 所有其他 Git 存放庫: Azure Pipelines 會保留已設定的最新執行次數,以涵蓋整個管線。

  • TFVC: 無論分支為何,Azure Pipelines 都會保留整個管線的最新執行數目。

執行中哪些部分會被刪除

刪除一個運行時,會刪除以下資訊:

  • 日誌
  • 所有管線和組建成品
  • 所有符號
  • 二進位
  • 測試結果
  • 運行元數據
  • 來源標籤(TFVC)或標記(Git)

通用套件、NuGet、npm 和其他套件不會與管線的保留策略綁定。

何時刪除運行

您的保留政策會每天處理一次。 因為我們為了負載平衡目的將政策處理的工作分散到一整天,這導致政策處理的時間變得不固定。 沒有選項可變更此程式。

如果下列所有條件都成立,就會刪除執行:

  • 超過保留設定中所設定的天數
  • 它不是保留設定中所設定的最近執行之一
  • 未標示為無限期保留
  • 一釋放就不會被保留

在流水線運行時自動設定保留期許可權

保留租約用於管理管道執行的存留期,超過配置的保留期限。 您可以在管線執行過程中新增或移除保留租用,方法是呼叫 租用 API。 您可以在管線內使用腳本叫用此 API,並使用如 runId 和 definitionId 的預定義變數。

在管線運行過程中可以新增保留租用,期限為特定期間。 例如,部署至測試環境的管線執行可以保留較短的持續時間,而部署至生產環境的執行可以保留較長的時間。

在管線執行中手動設定保存租約

您可以在管線執行詳細資料頁面上使用[更多動作] 選單,手動設定要保留的管線執行。

手動保留運行

刪除一次執行

您可以在 [管線執行詳細資料] 頁面上使用 [更多動作] 選單來刪除執行。

注意

如果目前有任何保留原則套用至此程序,必須先移除這些保留原則,才能刪除程序。 如需指引,請參閱 管線執行詳細資訊 - 刪除執行

產品小組正積極努力改善數據刪除時間。 如果有多個與主機相關聯的測試點,您可能會在刪除數據時看到多天的處理延遲。

刪除一次執行

設定發行保留原則

傳統版本發佈管道的發行保留政策決定發行及與之鏈接的執行會保留多久。 使用這些策略,您可以控制每個版本在上次修改或部署後,您要保留多少天,以及每個管線應保留的最小釋出數目。

每當發行版本被修改或部署到某個階段時,其保留計時器都將被重設。 保留設定的最低版本數目會優先於天數。 例如,如果您指定保留至少三個版本,則不論指定的天數為何,最新的三個版本都會無限期保留。 不過,當您不再需要這些版本時,您可以手動刪除這些版本。 如需了解更多有關釋出保留如何運作的詳細資訊,請參閱下面的常見問題。

身為發行管線的作者,您可以在 保留 索引標籤上自訂管線發行的保留原則。

YAML 和建置管線的保留原則相同。 您可以在 [設定] 區段的 [管線] 之 [項目設定] 中看到您的管線的保留設定。

全域發行保留原則

如果您使用內部部署 Team Foundation Server 或 Azure DevOps Server,您可以指定專案的發行保留原則預設值和最大值。 您也可以指定版本何時永久終結(從 組建總管中的 [已刪除 ] 索引標籤中移除)。

內部部署版本保留設定

如果您使用 Azure DevOps Services,您可以檢視但無法變更項目的這些設定。

您可以從項目的發行保留設定中檢閱 全域發行保留 原則設定:

  • Azure DevOps Services: https://dev.azure.com/{organization}/{project}/_settings/release?app=ms.vss-build-web.build-release-hub-group
  • 內部部署: https://{your_server}/tfs/{collection_name}/{project}/_admin/_apps/hub/ms.vss-releaseManagement-web.release-project-admin-hub

發行保留的最大策略規則設定了所有發行管線的保留期限上限。 發行管線的作者無法針對其定義設定設定超出此處指定的值。

默認 保留原則 會設定所有發行管線的預設保留值。 建置管線的作者可以覆寫這些設定值。

銷毀政策 可協助您在刪除版本後的一段時間保留這些發行。 無法在個別發行管線中覆寫此原則。

設定資料集合層級的保留政策

針對內部部署伺服器,您也可以使用自定義保留規則來設定集合層級保留原則。 這些保留原則適用於傳統組建管線。 的頁面 https://{your_server}/{collection_name}/_settings/buildqueue 會控管您的最大值和預設值。

顯示如何設定集合層級保留原則的螢幕快照。

使用複製檔案功能來延長數據的儲存時間

您可以使用 複製檔案工作,將您的組建和工件數據儲存超過保留政策中設定的時間。 複製檔案工作發佈組建成品工作更好,因為使用發佈組建成品工作儲存的數據會被定期清理和刪除。

- task: CopyFiles@2
  displayName: 'Copy Files to: \\mypath\storage\$(Build.BuildNumber)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: '_buildOutput/**'
    TargetFolder: '\\mypath\storage\$(Build.BuildNumber)'

常見問題集

如果我將執行或發行標示為無限期保留,保留原則仍適用嗎?

否。 當您將個別執行或發行標示為無限期保留時,管線的保留政策及由系統管理員所設定的最大限制都不會被套用。 它會一直保留,直到您決定停止保留為止。

如何指定部署至生產環境的執行將會保留更長的時間?

如果您使用傳統版本部署至生產環境,請在發行管線上自定義保留原則。 指定必須保留在生產環境中的發行版本的天數。 此外,要指明應保留與該版本相關的運行。 這將覆蓋流程保留政策。

如果您使用多階段 YAML 管線部署至生產環境,您可以設定的唯一保留原則是在項目設定中。 您無法根據部署組建的環境來自訂保留設定。

我沒有標記任何執行以無限期保留。 不過,我看到許多運行被保留。 如何防止此狀況?

這可能是下列其中一個原因:

  • 專案成員將這些運行紀錄標示為無限期保留。
  • 執行是由版本所使用,而版本會對這些執行保持保留鎖定。 如上所述,自定義發行保留原則。

如果您認為不再需要執行紀錄,或版本已被刪除,則您可以手動刪除執行紀錄。

「要保留的最低版本」設定的運作方式如何?

定義要保留的最低版本數量是在階段層級。 Azure DevOps 將始終保留在指定階段中一定數量的最近部署版本,即使這些版本已超出保留期。 僅在部署於該階段開始時,才會將發行視為該階段要保留的最低版本。 成功和失敗的部署都會被考慮在內。 等待核准的版本不會被考慮。

當發行部署到具有不同保留期限的多個階段時,保留期間如何決定?

最後的保留期限是通過考慮發行部署至所有階段的設定保留天數,並取這些階段中最大天數來決定。 最低保留版本 是在階段層級進行管理,並且不會因發行部署至多個階段而改變。 當佈署到設定為 true 的階段時,將適用於保留相關聯的工件。

我刪除了一個我有一些舊版本的階段。 在這個案例中會考慮哪些保存期限?

刪除階段時,階段層級保留設定現在不適用。 Azure DevOps 會回復至這類案例的專案層級預設保留期。

我的組織要求我們保留組建和發行的時間比設定中允許的還要長。 如何要求較長的保留期?

唯一能讓執行紀錄或發行版本保留時間超過保留設定允許的方式,就是手動設置為無限期保留。 無法手動設定較長的保留設定。 如需協助,請連絡 Azure DevOps 支援

您也可以探索使用 REST API 的可能性,以便下載執行的相關信息和成品,並將其上傳至您自己的記憶體或成品存放庫。

我損失了一些分數。 是否有辦法找回來?

如果您認為因為服務中的錯誤而遺失了執行記錄,請立即建立支援票證以復原遺失的資訊。 如果建置定義在一周前手動刪除,則無法復原它。 如果因為保留政策按預期中刪除了紀錄,那麼無法復原遺失的紀錄。

如何使用Build.Cleanup代理程式的功能?

在代理程式上設定一個Build.Cleanup能力會導致集區的清除作業只針對這些代理程式進行,讓其他代理程式可以處理一般工作。 當管線執行被刪除時,儲存在 Azure DevOps 外部的工件會透過在代理程式上執行的工作來清理。 當代理程式集區因清除作業而飽和時,這可能會導致問題。 解決方案是指定集區中作為清除任務的代理程式子集。 如果有任何代理程式已 Build.Cleanup 設定,只有這些代理程式會執行清除作業,讓其餘的代理程式可以自由繼續執行管線作業。 啟用清理功能需要瀏覽至代理程式>功能,並將Build.Cleanup設定為1

刪除構建時檔案共用工件會發生什麼事

當刪除具有檔案共用的產物的組建時,會在組建代理中排入一個新的組建工作以清理這些檔案。 根據下列準則挑選代理程式來執行此工作:是否有可用的 Build.Cleanup 代理程式? 執行組建的代理程式是否可用? 來自同一資源池的代理是否可以使用? 來自類似集區的代理是否可用? 是否有任何代理程式可供使用?

自動化測試結果在被作為發行一部分發布後,是否會保留直到該發行被刪除?

發佈在發行階段內的測試結果,會根據為這些測試結果設定的保留政策進行保留。 測試結果只有在保留發行版本後才會儲存。 如果您需要測試結果隨發行保留,請在 [項目設定] 中將自動測試執行的保留設定設為「永不刪除」。 確保只有當發行被刪除時,測試結果才會被刪除。

是否刪除手動測試結果?

否。 不會刪除手動測試結果。

如何保留版本控制標籤或標記?

警告

在建置管線期間套用的版本控制標籤或標識(如果不是由 Sources 工作自動建立的),將會被保留,即使刪除了組建也不會消失。 不過,在組建期間從來源工作自動建立的任何版本控制標籤或標記都會被視為組建成品的一部分,並且會在組建遭到刪除時一起刪除。

如果需要保留版本控制標籤或標記 (即使組建遭到刪除),則必須將其套用為管線中工作的一部分、在管線外部手動加上標籤,否則,必須無限期地保留組建。

其他管線中被使用的管線會發生什麼事?

傳統版本會保留其自動取用的管線。

其他管線中被使用的管線會發生什麼事?

傳統版本會保留其自動取用的管線。 如果您使用 YAML,您也可以建立多階段 YAML 管線來代表您的發行,並取用其中另一個 YAML 管線作為資源。 只要保留發行管線,資源管線就會自動保留。