Azure DevOps Server 2022 版本資訊


| | 開發人員社群 系統需求和相容性 | 授權條款 | DevOps 部落格 | SHA-256 哈希 |


在本文中,您將找到 Azure DevOps Server 最新版本的相關信息。

若要深入瞭解如何安裝或升級 Azure DevOps Server 部署,請參閱

若要下載 Azure DevOps Server 產品,請流覽 [Azure DevOps Server 下載] 頁面

Azure DevOps Server 2019 或 Team Foundation Server 2015 或更新版本支援直接升級至 Azure DevOps Server 2022。 如果您的 TFS 部署位於 TFS 2013 或更早版本上,您必須先執行一些過渡步驟,再升級至 Azure DevOps Server 2022。 如需詳細資訊,請參閱 安裝頁面


Azure DevOps Server 2022 Update 0.1 Patch 5 發行日期:2023 年 11 月 14 日

注意

Azure DevOps Server 修補程式是累積的,如果您未安裝 Patch 3,此修補程式會包含 Azure Pipelines 代理程式的更新。 安裝 Patch 5 之後的新版本代理程式將會是 3.225.0。

檔案 SHA-256 雜湊
devops2022.0.1patch5.exe DC4C7C3F9AF1CC6C16F7562DB4B2295E1318C1A180ADA079D636CCA47A6C1022

我們已發行 Azure DevOps Server 2022 Update 0.1 的修補程式,其中包含下列的修正程式。

  • 擴充 PowerShell 工作允許 啟用殼層工作自變數參數驗證的字元清單。
  • 修正在按下 [取消] 按鈕之後,導致服務連線編輯持續的問題。

Azure DevOps Server 2022 Update 0.1 Patch 4 發行日期:2023 年 10 月 10 日

注意

Azure DevOps Server 修補程式是累積的,如果您未安裝 Patch 3,此修補程式會包含 Azure Pipelines 代理程式的更新。 安裝 Patch 5 之後的新版本代理程式將會是 3.225.0。

我們已發行 Azure DevOps Server 2022 Update 0.1 的修補程式,其中包含下列的修正程式。

  • 已修正導致管線因升級管線執行模型而停滯的錯誤。
  • 已修正 「分析擁有者」身分識別在修補程式升級計算機上顯示為非作用中身分識別的錯誤。
  • 組建清除作業包含許多工作,每個工作都會刪除組建的成品。 如果其中任何一項工作失敗,則後續任何工作都不會執行。 我們已變更此行為來忽略工作失敗,並盡可能清除許多成品。

Azure DevOps Server 2022 Update 0.1 Patch 3 發行日期:2023 年 9 月 12 日

注意

此修補程式包含 Azure Pipelines 代理程式的更新。 安裝 Patch 3 之後的新版本代理程式將會是 3.225.0。

我們已發行 Azure DevOps Server 2022 Update 0.1 的修補程式,其中包含下列的修正程式。

  • CVE-2023-33136:Azure DevOps Server 遠端程式代碼執行弱點。
  • CVE-2023-38155:Azure DevOps Server 和 Team Foundation Server 提高許可權弱點。

Azure DevOps Server 2022 Update 0.1 Patch 2 發行日期:2023 年 8 月 8 日

我們已發行 Azure DevOps Server 2022 Update 0.1 的修補程式,其中包含下列的修正程式。

  • CVE-2023-36869:Azure DevOps Server 詐騙弱點。
  • 修正SOAP呼叫中的Bug,其中 ArithmeticException 可以針對巨量元數據 XML 回應引發。
  • 已實作服務連線編輯器的變更,讓端點狀態會在元件關閉時排清。
  • 已解決在 Markdown 檔案中無法運作的相對鏈接問題。
  • 已修正在定義大量標籤時,與應用層相關的效能問題,需要比正常時間更長的啟動時間。
  • 已解決代理程式集區頁面上TF400367錯誤。
  • 已修正 Analysis Owner 身分識別顯示為非使用中身分識別的錯誤。
  • 已修正 CronScheduleJobExtension 上的無限迴圈 Bug。

Azure DevOps Server 2022 Update 0.1 Patch 1 發行日期:2023 年 6 月 13 日

我們已發行 Azure DevOps Server 2022 Update 0.1 的修補程式,其中包含下列的修正程式。

  • CVE-2023-21565:Azure DevOps Server 詐騙弱點。
  • CVE-2023-21569:Azure DevOps Server 詐騙弱點。
  • 已修正服務連線編輯器的錯誤。 現在,草稿端點狀態會在元件關閉時排清。
  • 已修正卸離或附加集合失敗的錯誤,回報下列錯誤:「TF246018:資料庫作業超過逾時限制,並已取消。

Azure DevOps Server 2022 Update 0.1 發行日期:2023 年 5 月 9 日

Azure DevOps Server 2022.0.1 是錯誤修正的匯總。 其中包含先前發行 Azure DevOps Server 2022.0.1 RC 中的所有修正。 您可以直接安裝 Azure DevOps Server 2022.0.1 或從 Azure DevOps Server 2022 或 Team Foundation Server 2015 或更新版本升級。

Azure DevOps Server 2022 Update 0.1 RC 發行日期:2023 年 4 月 11 日

Azure DevOps Server 2022.0.1 RC 是錯誤修正的匯總。 其中包含先前發行的 Azure DevOps Server 2022 修補程式中的所有修正程式。 您可以直接安裝 Azure DevOps Server 2022.0.1 或從 Azure DevOps Server 2022 或 Team Foundation Server 2015 或更新版本升級。

此版本包含下列 Bug 的修正:

  • 已將 Git 虛擬文件系統 (GVFS) 從 升級至 v2.39.1.1-micorosoft.2 以解決安全性弱點。
  • 測試數據未遭到刪除,導致資料庫成長。 使用此修正程式,我們更新了組建保留期,以防止建立新的孤立測試數據。
  • 匯報 至 AnalyticCleanupJob,作業狀態為 [已停止],現在我們回報 [成功]。
  • 已修正 「tfx extension publish」 命令失敗,並出現「字典中沒有指定的索引鍵」錯誤。
  • 已實作因應措施,以解決和存取Team Calendar擴充功能時發生錯誤。
  • CVE-2023-21564:Azure DevOps Server 跨網站腳本弱點
  • CVE-2023-21553:Azure DevOps Server 遠端程式代碼執行弱點
  • 已更新 MSBuild 和 VSBuild 工作以支援 Visual Studio 2022。
  • 更新載入重新驗證的方法,以防止 XSS 攻擊向量。
  • Azure DevOps Server 2022 Proxy 回報下列錯誤:VS800069:此服務僅適用於內部部署 Azure DevOps。
  • 已修正透過 Web UI 的擱置集輔助功能問題。
  • 已解決在 Azure DevOps Server Management Console 中更新 SMTP 相關設定之後,需要重新啟動 tfsjobagent 服務和 Azure DevOps Server 應用程式集區的問題。
  • 在到期日之前,未傳送 PAT 的通知七天。

Azure DevOps Server 2022 修補程式 4 發行日期:2023 年 6 月 13 日

我們已發行 Azure DevOps Server 2022 的修補程式,其中包含下列專案的修正程式。

  • CVE-2023-21565:Azure DevOps Server 詐騙弱點。
  • CVE-2023-21569:Azure DevOps Server 詐騙弱點。
  • 已修正服務連線編輯器的錯誤。 現在,草稿端點狀態會在元件關閉時排清。
  • 已修正卸離或附加集合失敗的錯誤,回報下列錯誤:「TF246018:資料庫作業超過逾時限制,並已取消。

Azure DevOps Server 2022 修補程式 3 發行日期:2023 年 3 月 21 日

我們已發行 19.205.33506.1) Azure DevOps Server 2022 的 (修補程式,其中包含下列專案的修正程式。

  • 已解決在 Azure DevOps Server Management Console 中更新 SMTP 相關設定之後,需要重新啟動 tfsjobagent 服務和 Azure DevOps Server 應用程式集區的問題。
  • 將端點狀態複製到服務端點編輯面板,而不是以傳址方式傳遞它。
  • 先前,在編輯服務連線時,編輯會在選取取消按鈕之後保存在UI中。 在此修補程式中,我們已修正當小組已將通知傳遞設定為 [不要傳遞] 的通知 SDK 中。 在此案例中,如果通知訂閱已設定為 [ 小組喜好 設定傳遞] 選項,則小組成員將不會收到通知。 不需要進一步擴充小組底下的身分識別,即可檢查成員的喜好設定。

Azure DevOps Server 2022 修補程式 2 發行日期:2023 年 2 月 14 日

我們已發行 Azure DevOps Server 2022 的修補程式,其中包含下列專案的修正程式。

  • CVE-2023-21564:Azure DevOps Server 跨網站腳本弱點
  • 已更新 MSBuild 和 VSBuild 工作以支援 Visual Studio 2022。
  • 更新載入重新驗證的方法,以防止可能的 XSS 攻擊向量。
  • Azure DevOps Server 2022 Proxy 回報下列錯誤:VS800069:此服務僅適用於內部部署 Azure DevOps。

Azure DevOps Server 2022 Patch 1 發行日期:2023 年 1 月 24 日

我們已發行 Azure DevOps Server 2022 的修補程式,其中包含下列的修正程式。

  • 測試數據未遭到刪除,導致資料庫成長。 透過此修正,我們已更新組建保留期,以防止建立新的孤立測試數據。
  • 匯報 至 AnalyticCleanupJob,作業狀態為 [已停止],現在我們回報 [成功]。
  • 已修正 「tfx extension publish」 命令失敗,並出現「字典中沒有指定的索引鍵」錯誤。
  • 已實作因應措施,以解決和存取Team Calendar擴充功能時發生錯誤。

Azure DevOps Server 2022 發行日期:2022 年 12 月 6 日

Azure DevOps Server 2022 是 Bug 修正的匯總。 其中包含先前發行 Azure DevOps Server 2022 RC2 和 RC1 中的所有功能。

Azure DevOps Server 2022 RC2 發行日期:2022 年 10 月 25 日

Azure DevOps Server 2022 RC2 是 Bug 修正的匯總。 其中包含先前發行 Azure DevOps Server 2022 RC1 中的所有功能。

注意

已啟用新的SSH RSA 演算法

除了我們先前支援的SHA1 SSH-RSA之外,RSA 公鑰支援也已改善以支援SHA2公鑰類型。

現在支援的公鑰類型包括:

  • SSH-RSA
  • RSA-SHA2-256
  • RSA-SHA2-512

需要採取動作

如果您藉由在檔案中 .ssh/config1 明確指定來啟用 SSH-RSA,請實作因應措施,您必須移除 PubkeyAcceptedTypes,或修改它以使用 RSA-SHA2-256 或 RSA-SHA2-512 或兩者。 如果仍然提示您輸入密碼,並 GIT_SSH_COMMAND="ssh -v" git fetch 在此文件中沒有顯示相互簽章演算法,您可以找到該 怎麼做的詳細數據。

尚未新增橢圓鍵支援,而且在我們的待辦專案上仍維持高度要求的功能。

Azure DevOps Server 2022 RC1 發行日期:2022 年 8 月 9 日

Azure DevOps Server 2022 的新功能摘要

重要

在舊版的 Azure DevOps Server (2020) 中,倉儲和分析服務已被取代。 在 Azure DevOps Server 2022 中,倉儲和分析服務已從產品中移除。 分析現在提供產品內報告體驗。

Azure DevOps Server 2022 引進許多新功能。 一些重點包括:

您也可以跳至個別區段,以查看每個服務的新功能:


Boards

傳遞計劃

我們很高興宣布傳遞計劃現在包含在 Azure DevOps Server 中。 傳遞計劃提供3個主要案例:

  • 計劃的時程表檢視
  • 工作的進度
  • 相依性追蹤

以下是主要功能。 篩選、標記和欄位準則也是傳遞計劃的一部分。

有兩個主要檢視:壓縮和展開

傳遞計劃 2.0 可讓您使用開始和目標日期或反覆專案日期,在時程表上檢視計劃中的所有工作專案。優先順序的順序是開始 & 目標日期,然後接著反覆專案。 這可讓您新增公事包層級的工作專案,例如通常未定義至反覆專案。

壓縮檢視和展開 檢視 有兩個主要 檢視。 您也可以按下計劃右側的放大鏡來放大和縮小計劃。

壓縮檢視和展開 檢視 有兩個主要 檢視。 您也可以按下計劃右側的放大鏡來放大和縮小計劃。

  • 壓縮檢視

    壓縮檢視會顯示所有工作專案卡片 折疊 ,這表示不會顯示所有卡片資訊。 此檢視適用於計劃中工作的整體檢視。 若要折疊卡片字段,請按下計劃右側放大圖示旁的卡片圖示。

    以下是在壓縮和展開檢視之間切換的計劃範例。

    要示範壓縮檢視的 Gif。

  • 展開的檢視

    展開的檢視會顯示工作項目的進度,方法是計算子專案和鏈接項目的數目,並顯示完成百分比。 目前進度取決於工作項目計數。

    以下是使用展開檢視的計劃範例。 請注意進度列和完成百分比。

    使用展開檢視的計劃範例

相依性追蹤

相依性追蹤是以工作項目中定義的前置任務和後續連結為基礎。 如果未定義這些連結,則不會顯示任何相依性行。 當工作項目發生相依性問題時,相依性連結圖示會以紅色標示。

以紅色顯示相依性的相依性圖示進行相依性追蹤

  • 檢視相依性

    特定相依性是透過相依性面板來檢視,其中顯示該工作專案的所有相依性,包括方向。 紅色驚嘆號表示相依性問題。 若要顯示面板,只要按下卡片右上角的相依性連結圖示即可。 以下是相依性的範例。

    檢視相依性的範例

    另一個檢視相依性的範例

  • 相依性行

    工作專案之間的相依性會以個別工作專案之間的方向箭頭線可視化。 多個相依性會顯示為多行。 紅色線條表示有問題。

    以下是一些範例。

    以個別工作項目之間的方向箭頭線可視化相依性工作專案

    以下是具有多個相依性的工作專案範例,而且也會使用壓縮檢視運作。

    在壓縮檢視中具有多個相依性的工作專案範例

    發生問題時,線條色彩為紅色,因此相依性圖示也是。

    範例如下。

    具有多個相依性的工作項目範例

卡片樣式

卡片現在可以使用規則來設定樣式,例如工作流程看板。 開啟方案設定,然後按兩下 [樣式]。 在 [樣式] 窗格中,按兩下 [ + 新增樣式規則 ] 以新增規則,然後按兩下 [ 儲存]。 最多可以有 10 個規則,每個規則最多可以有 5 個子句。

樣式設定

  • 之前

卡片樣式之前

  • After

卡片樣式之後

若要深入了解傳遞方案,請參閱 這裡的檔。

已移除工作項目中樞上的專案

工作項目中樞是您建立或指派給您的專案清單的位置。 它提供數個個人化樞紐和篩選函式,以簡化列出工作專案。 [指派給我] 樞紐的其中一大抱怨是顯示已移除的工作專案。 我們同意已移除的工作專案已不再為值,且不應該出現在待辦專案中。 在此短期衝刺中,我們會隱藏工作項目中樞上 [已指派給我] 檢視中的所有已移除專案。

工作專案中 的開發區段 會顯示相關認可和提取要求的清單。 您可以檢視認可或提取要求的作者以及相關聯的時間。 透過此更新,我們已修正在檢視中不正確顯示作者的虛擬人偶問題。

拿掉從工作專案歷程記錄下載已刪除附件的能力

我們已修正用戶能夠從工作專案歷程記錄下載附件的小型問題,即使附件已從窗體中移除也一樣。 現在,移除附件之後,就無法從歷程記錄下載,也無法從 REST API 回應取得下載 URL。

已將 [不會修正] 值新增至 [錯誤原因] 欄位

如同所有其他工作項目類型,Bug 工作專案類型具有定義完善的工作流程。 每個工作流程都包含三個或多個狀態和原因。 原因會指定專案從某個狀態轉換到另一個狀態的原因。 透過此更新,我們新增 了 「不會」修正 敏捷式程式中 Bug 工作項目類型的原因值。 當將 Bug 從 [新增] 或 [作用中] 移至 [已解決] 時,此值將作為原因。 您可以在 Azure Boards 檔中深入瞭解如何定義、擷取、分級和管理軟體 Bug

Pipelines

在傳統組建中移除每個管線保留原則

您現在可以在 Azure DevOps 專案設定中設定傳統組建和 YAML 管線的保留原則。 不再支援傳統組建管線的個別管線保留規則。 雖然這是設定 YAML 管線保留的唯一方式,但您也可以根據每個管線設定傳統組建管線的保留。 我們已在即將推出的版本中移除傳統組建管線的所有每個管線保留規則。

這代表您:任何用來擁有個別管線保留規則的傳統組建管線,都會受到專案層級保留規則的控管。

為了確保您在升級時不會遺失任何組建,我們將在升級時建立所有現有組建的租用,該組建不會有租用。

建議您在升級之後檢查專案層級保留設定。 如果您的管線特別需要自定義規則,您可以在管線中使用自定義工作。 如需透過工作新增保留租用的資訊,請參閱 組建、發行和測試文件的設定保留原則

管線中環境變數的新控件

Azure Pipelines 代理程式會掃描標準輸出中的特殊 記錄命令 ,並加以執行。 setVariable命令可用來設定變數或修改先前定義的變數。 這可能會被系統外部的動作專案利用。 例如,如果您的管線有一個步驟會列印 ftp 伺服器中的檔案清單,則具有 ftp 伺服器存取權的人員可以新增檔案,其名稱包含 setVariable 命令,並導致管線變更其行為。

我們有許多用戶依賴在其管線中使用記錄命令來設定變數。 在此版本中,我們會進行下列變更,以降低命令不必要的使用 setVariable 風險。

  • 我們已新增工作作者的新建構。 藉由在 中包含 task.json如下的代碼段,工作作者可以控制其工作是否設定任何變數。
{
    "restrictions": {
        "commands": {
            "mode": "restricted"
        },
        "settableVariables": {
            "allowed": [
                "myVar",
                "otherVar"
            ]
        }
    },
}​ 
  • 此外,我們會更新一些內建工作,例如 ssh,使其無法遭到惡意探索。

  • 最後,您現在可以使用 YAML 建構來控制步驟是否可以設定變數。

steps:
- script: echo hello
  target:
    settableVariables: none
steps:
- script: echo hello
  target:
    settableVariables:
    - things
    - stuff

產生分支組建的無限制令牌

GitHub Enterprise 使用者通常會使用分叉來參與上游存放庫。 當 Azure Pipelines 從 GitHub Enterprise 存放庫的分支建置貢獻時,它會限制授與作業存取令牌的許可權,而且不允許這類作業存取管線密碼。 您可以在我們的 檔案中找到建置分叉安全性的詳細資訊。

這可能比這類封閉式環境中更嚴格,使用者可能仍可從內部來源共同作業模型獲益。 雖然您可以在管線中設定設定,讓秘密可供分岔使用,但沒有設定可控制作業存取令牌範圍。 在此版本中,我們會讓您控制產生一般作業存取令牌,即使是分叉的組建也一般。

您可以從管線編輯器中的 觸發程式 變更此設定。 變更此設定之前,請確定您完全瞭解啟用此設定的安全性含意。

產生分支組建的無限制令牌

存放庫作為 YAML 管線中的受保護資源

您可以組織 Azure DevOps 專案來裝載許多子專案,每個專案都有自己的 Azure DevOps Git 存放庫和一或多個管線。 在此結構中,您可能會想要控制哪些管線可以存取哪些存放庫。 例如,假設您在相同的專案中有兩個存放庫 A 和 B,以及一般建置這些存放庫的兩個管線 X 和 Y。 您可能想要防止管線 Y 存取存放庫 A。一般而言,您希望 A 的參與者控制他們想要提供存取權的管線。

雖然 Azure Git 存放庫和管線有部分可能,但沒有任何管理經驗。 這項功能可解決該差距。 Azure Git 存放庫現在可以視為 YAML 管線中的 受保護資源 ,就像服務連線和代理程式集區一樣。

身為存放庫 A 的參與者,您可以將檢查和管線許可權新增至存放庫。 若要這樣做,請瀏覽至項目設定,選取 [存放庫],然後選取您的存放庫。 您會注意到名為「檢查」的新功能表,您可以在其中設定 Azure 函式形式的任何內建或自定義檢查。

新增檢查

在 [安全性] 索引標籤下,您可以管理可存取存放庫的管線清單。

管理安全性索引標籤中的管線清單

每當 YAML 管線使用存放庫時,Azure Pipelines 基礎結構會驗證並確保滿足所有檢查和許可權。

注意

這些許可權和檢查僅適用於 YAML 管線。 傳統管線無法辨識這些新功能。

變數群組和安全檔案的許可權和檢查

您可以在 YAML 管線中使用不同類型的 共享資源 。 範例包括服務連線、變數群組、安全檔案、代理程式集區、環境或存放庫。 為了保護管線免於存取資源,資源的擁有者可以設定該資源的許可權和檢查。 每次管線嘗試存取資源時,都會評估所有設定的許可權和檢查。 這些保護已在服務連線、環境和代理程式集區上提供一段時間。 它們最近已新增至 存放庫。 在此版本中,我們會將相同的保護新增至變數群組和保護檔案。

若要限制對一組小型管線的變數群組或安全檔案的存取,請使用 Pipelines 許可權 功能。

我的秘密變數

若要設定每次執行管線時應該評估的檢查或核准,請使用 核准和檢查連結庫 功能。

新增檢查核准

自動建立環境的變更

當您撰寫 YAML 管線並參考不存在的環境時,Azure Pipelines 會自動建立環境。 這個自動建立可能會發生在用戶內容或系統內容中。 在下列流程中,Azure Pipelines 知道執行作業的使用者:

  • 您會在 Azure Pipelines Web 體驗中使用 YAML 管線建立精靈,並參考尚未建立的環境。
  • 您使用 Azure Pipelines Web 編輯器更新 YAML 檔案,並在對不存在的環境新增參考之後儲存管線。 在上述每個案例中,Azure Pipelines 對執行作業的使用者有清楚的瞭解。 因此,它會建立環境,並將使用者新增至環境的系統管理員角色。 此使用者具有管理環境的所有許可權,以及/或將其他使用者包含在管理環境的各種角色中。

在下列流程中,Azure Pipelines 沒有建立環境之使用者的相關信息:您可以使用另一個外部程式碼編輯器來更新 YAML 檔案、新增不存在之環境的參考,然後觸發持續整合管線。 在此情況下,Azure Pipelines 並不知道使用者的相關資訊。 先前,我們藉由將所有專案參與者新增至環境的系統管理員角色,來處理此案例。 接著,專案的任何成員都可以變更這些權限,並防止其他人存取環境。

我們收到有關將環境系統管理員許可權授與專案所有成員的意見反應。 當我們聆聽您的意見反應時,我們聽說,如果執行作業的使用者不清楚,就不應該自動建立環境。 在此版本中,我們已對環境自動建立方式進行變更:

  • 未來,管線執行不會在環境不存在且用戶內容未知時自動建立環境。 在這種情況下,管線將會失敗,並 出現環境找不到錯誤。 在管線中使用環境之前,您必須預先建立具有正確安全性的環境,並檢查設定。
  • 具有已知用戶內容的管線仍會自動建立環境,就像過去一樣。
  • 最後,應該注意自動建立環境的功能只會新增,以簡化開始使用 Azure Pipelines 的程式。 它適用於測試案例,不適用於生產案例。 您應該一律使用正確的許可權和檢查預先建立生產環境,然後在管線中使用它們。

從建置管線移除深入解析對話

根據您的意見反應,瀏覽組建管線時所顯示的 [工作/管線深入解析] 對話框已移除以改善工作流程。 管線分析仍可供使用,因此您有所需的深入解析。

只有在使用獨佔鎖定檢查時,才支援循序部署,而不是最新的

在YAML管線中,會使用檢查來控制 受保護資源上的階段執行。 您可以使用的其中一個常見檢查是 獨佔鎖定檢查。 此檢查只允許從管線執行單一執行。 當多次執行嘗試同時部署到環境時,檢查會取消所有舊的執行,並允許部署最新的執行。

當您的版本是累積的,並包含先前執行的所有程式代碼變更時,取消舊執行是很好的方法。 不過,有一些管線的程式代碼變更不是累計的。 透過這項新功能,您可以選擇允許所有執行以循序方式繼續並部署至環境,或保留取消舊執行並只允許最新的先前行為。 您可以使用管線 YAML 檔案中呼叫 lockBehavior 的新屬性來指定此行為。 的值 sequential 表示所有執行都會循序取得受保護資源的鎖定。 的值 runLatest 表示只有最新的執行會取得資源的鎖定。

若要搭配 sequential 部署或 runLatest使用獨佔鎖定檢查,請遵循下列步驟:

  1. 在環境 (或其他受保護的資源上啟用獨佔鎖定檢查) 。
  2. 在管線的 YAML 檔案中,指定名為 lockBehavior的新屬性。 這可以針對整個管線或指定階段指定:

在階段上設定:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

在管線上設定:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

如果您未指定 lockBehavior,則會假設為 runLatest

支援加拿大的 ServiceNow 版本

Azure Pipelines 與 ServiceNow 的現有整合。 整合依賴 ServiceNow 中的 應用程式 ,以及 Azure DevOps 中的 擴充功能 。 我們現在已更新應用程式,以使用加拿大的 ServiceNow 版本。 傳統和 YAML 管線現在都可與加拿大合作。 若要確保此整合能夠運作,請從服務立即存放區升級至新版本的應用程式, (4.188.0) 。 如需詳細資訊,請參閱 與 ServiceNow 變更管理整合

新的 YAML 條件表示式

在 YAML 檔案中撰寫條件表示式,只要使用 ${{ else }}${{ elseif }} 表示式變得更容易。 以下是如何在 YAML 管線檔案中使用這些表達式的範例。

steps:
- script: tool
  env:
    ${{ if parameters.debug }}:
      TOOL_DEBUG: true
      TOOL_DEBUG_DIR: _dbg
    ${{ else }}:
      TOOL_DEBUG: false
      TOOL_DEBUG_DIR: _dbg
variables:
  ${{ if eq(parameters.os, 'win') }}:
    testsFolder: windows
  ${{ elseif eq(parameters.os, 'linux' }}:
    testsFolder: linux
  ${{ else }}:
    testsFolder: mac

支援路徑篩選中的通配符

在管線 YAML 檔案中指定 CI 或 PR 觸發程式的包含和排除分支時,可以使用通配符。 不過,指定路徑篩選時無法使用它們。 例如,您無法包含符合 src/app/**/myapp*的所有路徑。 這已指出數個 客戶造成不便。 此更新會填滿此間距。 現在,您可以在指定路徑篩選時, **使用通配符 (、 *?) 。

管線的預設代理程序規格將是 Windows-2022

映像 windows-2022 已準備好成為 Azure Pipelines Microsoft 裝載代理程式中卷 windows-latest 標的預設版本。 到目前為止,此標籤指向 windows-2019 代理程式。 此變更將在 1 月 17 日開始的數周內推出。 我們計劃於 3 月完成移轉。

Azure Pipelines 自 2021 年 9 月起支援 windows-2022 。 我們已監視您的意見反應來改善 windows-2022 影像穩定性,現在我們已準備好將其設定為最新版本。

映射 windows-2022 包含Visual Studio 2022。 如需 和 windows-2019之間windows-2022差異的完整清單,請流覽 GitHub 問題。 如需映像上安裝之軟體的完整清單,請查看 這裡

管線資料夾重新命名會驗證許可權

可以重新命名包含管線的資料夾。 只有在使用者至少有一個管線包含於資料夾中的編輯許可權時,重新命名資料夾才會成功。

Pipelines Agent 運行時間升級規劃

什麼是管線代理程式?

Azure DevOps Pipeline Agent 是在管線主機上執行以執行管線作業的軟體產品。 它會在 Microsoft 裝載的代理程式、擴展集代理程式和自我裝載代理程式上執行。 在後者的情況下,您會自行安裝。 管線代理程式是由在 .NET) 中實作的接聽程式和背景工作角色 (所組成,背景工作會執行在 Node 或 PowerShell 中實作的工作,因此會為其裝載這些運行時間。

即將升級至 .NET 6 & Red Hat 6 淘汰

隨著 .NET 6 的發行,我們能夠利用其新的跨平臺功能。 具體而言,我們將能夠提供Apple Silicon和 Windows Arm64 的原生相容性。 因此,我們計劃在未來幾個月內移至管線代理程式的 .NET 6 (接聽程式和背景工作角色) 。

由於有一些限制,因此我們會從 2022 年 4 月 30 日代理程式卸除 Red Hat Enterprise Linux 6 支援。

匯報 至 Azure 檔案複製工作

我們推出新版本的 Azure 檔案複製工作。 此工作可用來將檔案複製到 Microsoft Azure 記憶體 Blob 或虛擬機, (VM) 。 新版本有數個經常由社群要求的更新:

  • AzCopy 工具的版本已更新為 10.12.2,其支援檔案內容類型。 因此,當您複製 PDF、Excel、PPT 或其中一個支援的 mime 類型時,檔案的內容類型會正確設定。

  • 使用新版本的 AzCopy,您也可以設定設定,以在目的地類型為 Azure Blob 時清除目標。 設定此選項將會刪除該容器中的所有資料夾/檔案。 或者,如果提供 Blob 前置詞,則會刪除該前置詞中的所有資料夾/檔案。

  • 新版本的工作依賴安裝在代理程式上的 Az 模組,而不是 AzureRM 模組。 這會在使用工作時移除不必要的警告。

這些變更是這項工作的主要版本更新的一部分。 您必須明確地更新管線,才能使用新版本。 我們選擇更新主要版本,以確保我們不會中斷仍相依於 AzureRM 模組的任何管線。

管線詳細數據檢視的新擴充點

我們已新增兩個新的擴充點,您可以在延伸模塊中設定目標。 這些擴充點可讓您在管線標頭中新增自定義按鈕,並在管線資料夾上新增自定義功能表:

  • 管線標頭中的自訂按鈕: ms.vss-build-web.pipelines-header-menu
  • 管線資料夾上的自訂選單: ms.vss-build-web.pipelines-folder-menu

若要使用這些新的擴充點,只要在 Azure DevOps 延伸模組的 vss-extension.json 指令清單檔中新增以它們為目標的新貢獻即可。

例如:

"contributions": [
        {
            "id": "pipelinesFolderContextMenuTestItem",
            "type": "ms.vss-web.action",
            "description": "Custom menu on a pipeline folder",
            "targets": [
                "ms.vss-build-web.pipelines-folder-menu"
            ],
            "properties": {
                "text": "Test item",
                "title": "ms.vss-code-web.source-item-menu",
                "icon": "images/show-properties.png",
                "group": "actions",
                "uri": "main.html",
                "registeredObjectId": "showProperties"
            }
        },
        {
            "id": "pipelinesHeaderTestButton",
            "type": "ms.vss-web.action",
            "description": "Custom button in the pipeline header",
            "targets": [
                "ms.vss-build-web.pipelines-header-menu"
            ],
            "properties": {
                "text": "Test item",
                "title": "ms.vss-code-web.source-item-menu",
                "icon": "images/show-properties.png",
                "group": "actions",
                "uri": "main.html",
                "registeredObjectId": "showProperties"
            }
        }
]

結果會是:

  • 管線標頭中的自定義按鈕

    管線標頭中的自定義按鈕

  • 管線資料夾上的自定義功能表

    管線資料夾上的自定義功能表

已改善移轉至 Azure DevOps Services

執行從 Azure DevOps Server 匯入至 Azure DevOps Services 時,您必須考慮 Azure DevOps 不再支援每個管線保留規則。 透過此更新,當您從內部部署 Azure DevOps Server 移轉至 Azure DevOps Services 時,我們移除了這些原則。 若要深入瞭解如何設定保留原則,請參閱我們的 檔,以設定組建、發行和測試的保留原則。

管線執行 REST API 的改善

先前, 管線執行 REST API 只會傳回存放 self 庫。 透過此更新,管線執行 REST API 會傳回組建的所有存放庫資源。

擴充的 YAML 管線範本現在可以傳遞階段、作業和部署的內容資訊

透過此更新,我們會新增 、 deploymentstage YAML 管線元件的新templateContext屬性job,以便與範本搭配使用。

以下是使用 templateContext的案例:

  • 您可以使用範本來減少程式碼重複,或 改善管線的安全性

  • 您的範本會接受 作為 、 jobs或的參數stages清單deployments

  • 範本會處理輸入清單,並在每個階段、作業或部署上執行一些轉換。 例如,它會設定每個作業執行所在的環境,或新增其他步驟以強制執行合規性

  • 處理需要管線作者將其他資訊傳遞給清單中的每個階段、作業或部署的範本

讓我們看看下列範例。 假設您正在撰寫管線,以執行提取要求驗證的端對端測試。 您的目標是只測試系統的一個元件,但因為您打算執行端對端測試,所以您需要一個環境,其中有更多系統元件可供使用,而且您需要指定其行為。

您瞭解其他小組會有類似的需求,因此您決定將環境設定的步驟擷取到範本中。 其程式代碼如下所示:

testing-template.yml

parameters: 
- name: testSet
  type: jobList

jobs:
- ${{ each testJob in parameters.testSet }}:
  - ${{ if eq(testJob.templateContext.expectedHTTPResponseCode, 200) }}:
    - job:
      steps:
        - script: ./createSuccessfulEnvironment.sh ${{ testJob.templateContext.requiredComponents }}
        - ${{ testJob.steps }}
  - ${{ if eq(testJob.templateContext.expectedHTTPResponseCode, 500) }}:
    - job:
      steps:
        - script: ./createRuntimeErrorEnvironment.sh ${{ testJob.templateContext.requiredComponents }}
        - ${{ testJob.steps }}

範本的功能是針對 參數中的每個 testSet 作業,它會設定 ${{ testJob.templateContext.requiredComponents }} 所指定系統元件的回應,以傳回 ${{ testJob.templateContext.expectedHTTPResponseCode }}。

然後,您可以建立自己的管線,如 testing-template.yml 下列範例所示。

sizeapi.pr_validation.yml

trigger: none

pool:
  vmImage: ubuntu-latest

extends:
  template: testing-template.yml
  parameters:
    testSet:
    - job: positive_test
      templateContext:
        expectedHTTPResponseCode: 200
        requiredComponents: dimensionsapi
      steps:
      - script: ./runPositiveTest.sh
    - job: negative_test
      templateContext:
        expectedHTTPResponseCode: 500
        requiredComponents: dimensionsapi
      steps:
      - script: ./runNegativeTest.sh

此管線會執行兩個測試,一個是正數和一個負面測試。 這兩項測試都需要 dimensionsapi 元件可供使用。 作業 positive_test 預期會傳 dimensionsapi 回 HTTP 代碼 200,但 negative_test 預期它會傳回 HTTP 代碼 500。

支援群組受管理的服務帳戶作為代理程式服務帳戶

Azure Pipelines 代理程式現在支援 Windows 上自我裝載代理程式的群組受控服務帳戶。

群組受管理的服務帳戶 可為做為服務帳戶的網域帳戶提供集中式密碼管理。 Azure Pipelines 代理程式可以辨識這種類型的帳戶,因此在設定期間不需要密碼:

.\config.cmd --url https://dev.azure.com/<Organization> `
             --auth pat --token <PAT> `
             --pool <AgentPool> `
             --agent <AgentName> --replace `
             --runAsService `
             --windowsLogonAccount <DOMAIN>\<gMSA>

參考性執行

參考執行會告訴您 Azure DevOps 無法擷取 YAML 管線的原始程式碼。 這類執行看起來像下面這樣。

最近執行的管線

例如,Azure DevOps 會擷取 YAML 管線的原始程式碼,以回應外部事件,例如,推送認可或響應內部觸發程式,例如,檢查是否有程式碼變更並啟動排程的執行。 當此步驟失敗時,系統會建立參考執行。 只有在管線的程式代碼位於 GitHub 或 BitBucket 存放庫中時,才會建立這些執行。

擷取管線的 YAML 程式代碼可能會因為:

  • 發生中斷的存放庫提供者
  • 要求節流
  • 驗證問題
  • 無法擷取管線 .yml 檔案的內容

深入瞭解 信息執行

組建定義 REST API retentionRules 屬性已過時

組建定義 REST APIBuildDefinition 回應類型中 retentionRules ,屬性現在會標示為過時,因為此屬性一律會傳回空白集合。

Repos

新增 TFVC 頁面

我們已更新 Azure DevOps 中的各種頁面,以使用新的 Web 平臺,目標是讓各種服務的體驗更一致且更容易存取。 TFVC 頁面已更新為使用新的 Web 平臺。 在此版本中,我們會讓新的 TFVC 頁面正式推出。

停用存放庫

客戶經常要求停用存放庫,並防止使用者存取其內容。 例如,您可能會想要在下列情況下執行此動作:

  • 您已在存放庫中找到秘密。
  • 第三方掃描工具發現存放庫不符合規範。

在這種情況下,您可能會想要在解決問題時暫時停用存放庫。 透過此更新,如果您有刪除存放庫許可權,您可以停用存放 。 藉由停用存放庫,您可以:

  • 可以在存放庫清單中列出存放庫
  • 無法讀取存放庫的內容
  • 無法更新存放庫的內容
  • 查看當存放庫嘗試在 Azure Repos UI 中存取存放庫時已停用的訊息

採取必要的風險降低步驟之後,具有 刪除存放庫 許可權的使用者可以重新啟用存放庫。 若要停用或啟用存放庫,請移至 [項目設定],選取 [存放庫],然後選取特定存放庫。

停用存放庫

設定分支建立者不要在其分支上取得「管理許可權」

當您建立新的分支時,您會在該分支上取得「管理許可權」。 此許可權可讓您變更其他使用者的許可權,或允許其他用戶參與該分支。 例如,分支建立者可能會使用此許可權來允許另一個外部用戶變更程序代碼。 或者,它們可能會允許管線 (建置服務識別) 變更該分支中的程序代碼。 在某些具有較高合規性需求的專案中,使用者不應進行這類變更。

透過此更新,您可以設定小組專案中的任何和所有存放庫,並限制分支建立者取得「管理許可權」許可權。 若要這樣做,請瀏覽至項目設定,選取 [存放庫],然後選取 [所有存放庫或特定存放庫的設定]。

所有存放庫設定

此設定預設為開啟,以模擬現有的行為。 但是,如果您想要使用這個新的安全性功能,可以將其關閉。

防止分叉使用者在其上游PR上投票

透過 Azure Repos,存放庫具有「讀取」許可權的使用者可以分叉存放庫,並在其分支中進行變更。 若要提交提取要求及其上游的變更,使用者需要上游的「參與提取要求」許可權。 不過,此許可權也會控管誰可以在上游存放庫中投票提取要求。 因此,您最終可以在使用者不是存放庫參與者的情況下提交提取要求,並根據您設定分支原則的方式進行合併。

在升級內部來源模型的專案中,分叉和參與是常見的模式。 為了進一步保護並提升此模式,我們會將提取要求的許可權從「參與提取要求」變更為「參與」。 不過,所有項目中預設不會進行這項變更。 您必須加入加入並選取存放庫上的新原則,稱為「嚴格投票模式」,才能切換此許可權。 如果您依賴 Azure Repos 中的分叉,建議您這麼做。

存放庫設定

報表

圖表小工具中可用的依標籤分組

依標籤分組圖表小工具現在預設可供所有客戶使用。 使用圖表小工具時,現在有一個選項可供標記使用。 用戶可以選取小工具中的所有標記或一組標記,以可視化方式呈現其資訊。


圖表小工具中可用的依標籤分組

在待用小工具中顯示自定義工作項目類型

先前,您無法看到在已關閉小工具中設定的自定義工作項目類型,以及由自定義欄位加總或計算。 透過此更新,我們已修正此問題,現在您可以在待用小工具中看到自定義工作項目類型。


意見反應

我們很希望聽聽您的意見! 您可以回報問題或提供想法,並透過 開發人員社群 追蹤問題,並取得 Stack Overflow 的建議。


頁面頂端