共用方式為


Azure DevOps Server 2022 版本資訊


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


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

若要深入瞭解如何安裝或升級 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 日

注意

如果您未安裝 Patch 3,則 Azure DevOps Server 修補程式是累積的,此修補程式包含 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 日

注意

如果您未安裝 Patch 3,則 Azure DevOps Server 修補程式是累積的,此修補程式包含 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 Release Date:2023 年 8 月 8 日

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

  • CVE-2023-36869:Azure DevOps Server 詐騙弱點。
  • 已修正SOAP呼叫中的Bug,其中 ArithmeticException 可以針對大型元數據 XML 回應引發。
  • 已實作服務連線編輯器的變更,讓端點狀態在元件關閉時排清。
  • 已解決在 Markdown 檔案中無法運作的相對鏈接問題。
  • 已修正在定義大量標記時,與應用層花費的時間比正常時間更長的效能問題。
  • 已解決代理程式集區頁面上TF400367錯誤。
  • 已修正分析擁有者身分識別顯示為非使用中身分識別的錯誤。
  • 修正 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 是 Bug 修正的匯總。 其中包含先前發行的 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 是 Bug 修正的匯總。 其中包含先前發行的 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 管理控制台中更新 SMTP 相關設定之後,需要重新啟動 tfsjobagent 服務和 Azure DevOps Server 應用程式集區的問題。
  • 在到期日前七天未傳送 PAT 的通知。

Azure DevOps Server 2022 Patch 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 Patch 3 發行日期:2023 年 3 月 21 日

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

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

Azure DevOps Server 2022 Patch 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 可讓您使用開始日期和目標日期或反覆專案,在時程表上檢視計劃中的所有工作專案。優先順序的順序是開始和目標日期,然後接著反覆專案。 這可讓您新增組合層級的工作專案,例如通常未定義為反覆專案的Epic。

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

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

  • 壓縮檢視

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

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

    Gif 以示範壓縮檢視。

  • 展開檢視

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

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

    使用展開檢視的方案範例

相依性追蹤

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

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

  • 檢視相依性

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

    檢視相依性的範例

    檢視相依性的另一個範例

  • 相依性行

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

    以下列出一些範例。

    使用個別工作專案之間的箭頭線可視化相依性工作專案

    以下是具有多個相依性的工作專案範例,其也適用於使用壓縮檢視。

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

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

    以下是範例。

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

卡片樣式

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

設定樣式

  • 之前

卡片樣式之前

  • 之後

卡片樣式之後

若要深入瞭解傳遞計劃,請參閱這裡的

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

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

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

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

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

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

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

管線

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

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

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

我的秘密變數

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

新增檢查核准

自動建立環境的變更

當您撰寫 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 管線現在都與魁北克公司合作。 若要確保此整合能夠運作,請從 Service Now 市集升級至新版本的應用程式 (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 中標籤的預設版本 windows-latest ,Microsoft裝載的代理程式。 到目前為止,此標籤指向 windows-2019 代理程式。 這項變更將在 1 月 17 日開始的幾周內推出。 我們計劃在 3 月前完成移轉。

自 2021 年 9 月起,Azure Pipelines 已支援 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 管線範本現在可以傳遞階段、作業和部署的內容資訊

透過此更新,我們會為 、deployment、 和 stage 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 的建議


頁首