適用於 Azure DevOps 的受控 DevOps 集區 (預覽)
我們很高興宣佈受控 DevOps 集區的預覽,其設計目的是協助開發和平臺工程小組快速設定和管理自定義 DevOps 集區。
此外,我們已增強 GitHub 進階安全性的計量使用量估計 API,提供可協助您識別使用者的新功能。
如需詳細資訊,請參閱版本資訊。
適用於 Azure DevOps 的 GitHub Advanced Security
Azure Pipelines
適用於 Azure DevOps 的 GitHub Advanced Security
進階安全性計量使用量 API 現在會傳回使用者身分識別
為了協助您識別進階安全性使用者,計量使用量估計 API 現在會傳回每個使用者的 Azure DevOps 身分識別,包括其顯示名稱、CUID、電子郵件識別碼和身分識別描述元。 這項功能可在組織、專案和存放庫層級取得。 若要使用此新端點,語法類似於現有的計量使用量 API 端點,並 /details
附加至端點:
- 在組織層級:GET
https://advsec.dev.azure.com/{organization}/_apis/management/meterUsageEstimate/details?api-version=7.2-preview.1
- 在專案層級:GET
https://advsec.dev.azure.com/{organization}/{project}/_apis/management/meterUsageEstimate/details?api-version=7.2-preview.1
- 在存放庫層級:GET
https://advsec.dev.azure.com/{organization}/{project}/_apis/management/repositories/{repository}/meterUsageEstimate/details?api-version=7.2-preview.1
沒有組建的 C# 和 Java 專案的 GitHub 進階安全性程式代碼掃描
使用 CodeQL 進行程式碼掃描牽涉到對資料庫執行查詢,這些查詢代表單一語言存放庫中的程式碼。 對於 C/C++、C#、Go、Java 和 Swift 等已編譯語言,這通常需要先建置程式代碼。
不過,GitHub Advanced Security for Azure DevOps 背後的靜態分析引擎 CodeQL 現在可以掃描 C# 和 Java 專案,而不需要建置。 當建置模式設定為 「無」 時,CodeQL 資料庫會直接從程式代碼基底產生,略過建置步驟。
對於所有編譯的語言,預設建置模式為 「手動」 。不過,針對 C# 和 Java,您可以將建置模式變更為 「無」。
您可以在 AdvancedSecurity-Codeql-Init@1 設定期間設定建置模式。 如需使用 Azure DevOps 在 GitHub 進階安全性中設定程式代碼掃描的詳細指示,請參閱設定程式 代碼掃描
考慮:
如果 已選取 「無」 ,且不支援的語言 C# 或 Java 以外的語言,管線工作可能無法如預期般運作。
建置模式 「無」 目前會與其他解譯的語言搭配運作(例如 JavaScript、Python、Ruby)。
有效範例:C# 和 JavaScript,建置模式設定為 “none”。 (以解譯語言撰寫的JavaScript)
無效的範例:C#、JavaScript 和 Swift,建置模式設定為 “none” (建置模式 “none” 不支援 Swift)。
Azure Pipelines
受控DevOps集區 (預覽)
當工程小組可以專注於撰寫程式代碼來為其用戶開發應用程式和服務時,他們表現得很出色。 不過,在實務上,通常花費大量時間管理其他工作,例如維護DevOps基礎結構。
我們很高興宣佈受控 DevOps 集區(MDP)的公開預覽,這是一項新的 Azure DevOps 功能,旨在協助開發和平臺工程小組部署專為其獨特需求量身打造的自定義 DevOps 集區。 MDP 結合了擴展集代理程序的彈性,以及與Microsoft裝載的代理程式相關聯的輕鬆維護,讓小組能夠建立一致性和最佳做法,同時優化效能、安全性、合規性和成本效益。
受控DevOps集區的主要優點包括:
- 代您裝載: MDP 是由Microsoft所裝載和管理,虛擬機可讓代理程式在Microsoft擁有的 Azure 訂用帳戶內建立和維護。
- 在管理中花費的時間: MDP 可大幅減少管理代理程式所花費的時間,特別是以內部部署基礎結構或手動維護系統為基礎的代理程式。
- 特定集區: 由於可以輕鬆建立新的集區,組織可以輕鬆地建立多個小組特定或工作負載特定的集區。
- DevOps 計費: MDP 可透過許多功能,協助將小組的DevOps帳單優化。 小組可以輕鬆地在集區的 QoS/效能與成本之間找到最佳平衡點。
- 可調整: MDP 會調整為單一集區中的 1000 個代理程式。
Teams 可以建立集區,其中包含Microsoft託管代理程式中所存在的相同軟體,或小組以其案例特有的必要條件所建立的映像。
閱讀我們的 部落格文章 或其 檔,以深入瞭解受控DevOps集區。
Azure 管線工作使用節點 20
大部分管線工作都會使用 Node 作為執行器。 使用 NodeJS 做為執行器的 Azure 管線工作現在全都使用 NodeJS 20。 工作延伸模組的作者應該更新其工作,以使用節點 20。 如需如何升級的指引, 請參閱如何將自定義工作升級至最新的 Node?。
建立組建管線許可權
為了提高管線安全性,我們在管線層級引進了新的許可權 Create build pipeline
。
先前需要 Edit build pipeline
許可權才能建立或編輯管線。 這會造成安全性風險,因為它允許所有使用者建立管線,也編輯他們未建立的管線。 防止這是耗時的。
為了在不影響安全性的情況下增強管線體驗,具有許可權的 Edit build pipeline
所有使用者和群組現在也會收到 Create build pipeline
許可權。
建立管線時,其建立者會被授與 Edit build pipeline
許可權。
為了改善管線安全性,您可以選擇從參與者和讀者等使用者群組移除Edit build pipeline
許可權。 這可確保根據預設,只有管線的建立者可以編輯它。
注意
[ 編輯組建管線 ] 許可權不會防止其他人編輯 YAML 管線;它只會保護管線的屬性不受編輯。
對於新專案,具有 Edit build pipeline
許可權的使用者和群組也會具有 Create build pipeline
許可權。 未來可能會有所變更。
階段層級的獨佔鎖定檢查
某些使用案例需要管線在任何指定時間只存取特定資源一次。 為了支援此案例,我們有 獨佔鎖定 檢查。
當只有一個管線執行在任何時間點存取階段時,就會發生類似的情況。 例如,如果您有部署至 Azure 資源群組的階段,您可能會想要防止多個管線同時更新相同的資源群組。 目前,若要達到此目標,必須使用 Proxy 資源,例如環境,並將獨佔鎖定檢查放在該環境上。 這種方法可能很耗時、增加複雜度,以及增加維護工作。
在此短期衝刺中,我們引進了在階段層級指定獨佔鎖定的支援。 如果您有具有標識符的階段並指定其 lockBehavior
屬性,則會自動為該階段建立鎖定。 資源 sequential
層級和階段層級鎖定的行為保持一致。 不過,行為 runLatest
不同,因為它只會取消 runLatest
相同分支的組建,而不是針對管線的所有分支。
管線執行中的範本資訊
我們已更新 管線執行 - 取得 REST API,其中包含管線執行中擴充和包含之範本的相關信息。
例如,假設您有下列 YAML 管線程式代碼:
extends:
template: template-stages.yml@templates
parameters:
stages:
- stage: deploy
jobs:
- job:
steps:
- template: template-step.yml
新的 REST API 具有下列新屬性:
"yamlDetails":
{
"extendedTemplates":
[
{
"yamlFile": "template-stages.yml",
"repoAlias": "templates"
}
],
"includedTemplates":
[
{
"yamlFile": "template-step.yml",
"repoAlias": "templates"
}
],
"rootYamlFile":
{
"ref": "refs/heads/main",
"yamlFile": "azure-pipelines.yml",
"repoAlias": "self"
},
"expandedYamlUrl": "https://dev.azure.com/fabrikamfiber/161cfeeb-d9fd-395c-917b-fec46db44fbb/_apis/build/builds/39224/logs/1"
}
手動觸發的 YAML 管線階段
我們經常收到手動觸發 YAML 管線階段的相關要求。 當您想要整合管線,但不一定想要它執行到完成時,這些會很有説明。
例如,您的管線可能包含建置、測試、部署至預備環境,以及部署到生產環境的階段。 您可能希望所有階段都自動執行,但生產部署除外,您想要在準備好時手動觸發。
在此短期衝刺中,我們會新增手動觸發 YAML 管線階段的支援。 若要使用這項功能,您必須將 屬性新增 trigger: manual
至階段。
請考慮下列 YAML 管線範例:
stages:
- stage: stage_WUS1
displayName: Deploy WUS1
trigger: manual
jobs:
- job: DeployJob
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'AzureWIF'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: 'Write-host ''hello, world'''
- stage: stage_WUS2
displayName: Deploy WUS2
trigger: manual
jobs:
- job: DeployJob
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'AzureWIF'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: 'Write-host ''hello, world'''
當您執行此管線時,體驗如下所示:
手動觸發的階段沒有任何相依性,而且可以隨時執行。 當只有手動觸發的階段可供執行時,管線執行就會完成。
下一步
注意
這些功能將在未來兩到三周內推出。
前往 Azure DevOps 並查看。
如何提供意見反應
我們很樂意聽到您對於這些功能的看法。 使用說明功能表來回報問題或提供建議。
您也可以在 Stack Overflow 上的社群取得建議和您的問題。
感謝您!
Silviu Andrica