Copilot 程式碼審查、GitHub Copilot 自動修復,以及適用於 macOS 管線代理程式的 Apple Silicon

這次衝刺我們釋出了預覽新功能,旨在提升程式碼品質、安全性及建置能力。 Copilot 支援的 Azure Repos(有限公開預覽版)程式碼審查,直接將 AI 輔助洞見導入拉取請求,幫助團隊更有效率地識別問題並改進程式碼。 GitHub Copilot Autofix 用於程式碼掃描(有限公開預覽版)進一步強化安全性,會自動建議偵測到的漏洞修正方案。 此外,Apple Silicon(ARM64)對 macOS 管線代理程式的支援(按需付費預覽版)擴展了建置選項,使原生 macOS 工作負載能提升效能與彈性。 這些預覽功能提供了探索 Azure DevOps 中新一代開發者生產力與平台支援的機會。

請參閱發行說明以獲取詳細資訊。

適用於 Azure DevOps 的 GitHub Advanced Security

Azure Boards

Azure Pipelines

Azure Repos

適用於 Azure DevOps 的 GitHub Advanced Security

GitHub Copilot 程式碼掃描的自動修正(有限公開預覽)

GitHub Copilot Autofix 現已針對 GitHub Advanced Security for Azure DevOps 開放有限公開預覽。 Copilot Autofix 會分析 CodeQL 掃描的程式碼警示,並建議針對性的程式碼修正,並自動建立包含修正的拉取請求。 開發者可以檢視建議的修補並合併拉取請求,減少修復安全漏洞所花費的時間。

GitHub Advanced Security for Azure DevOps 中程式碼掃描的 Copilot Autofix

有意參與的組織可註冊預覽版,並在核准後啟用 Copilot Autofix,適用於其組織及資料庫。

欲了解更多資訊,請參閱 Copilot Autofix 的程式碼掃描(預覽)。

CodeQL 預設設定部署完成

CodeQL 程式碼掃描預設設定的公開預覽版現已完成,並對所有 GitHub Azure DevOps 客戶開放。 透過使用 CodeQL 預設設定,你可以在無需手動設定管線的情況下,為你的儲存庫啟用程式碼掃描。 啟用後,CodeQL 會自動透過 Azure Pipelines 掃描你的程式碼,並在你的資料庫警示中顯示安全漏洞。

要開始,請參見 「設定程式碼掃描」。

拉取請求的進階安全狀態檢查(一般可用性)

提取要求的進階安全性狀態檢查現已正式推出。 使用可設定的 AdvancedSecurity/NewHighAndCritical 和 AdvancedSecurity/AllHighAndCritical 分支原則,在偵測到高或重大嚴重性的警示時封鎖完成提取要求,協助您的團隊防止新的弱點進入受保護的分支。

欲了解更多資訊,請參閱 「將狀態檢查設定為分支政策」。

用於檢視警示的 Build 身分存取權將被移除

在 Sprint 269 首次引入的變更基礎上:為進階安全 API 建立受限身份存取,我們正完成移除建置身份服務查看進階安全警示的權限。 此變更自2026年7月1日起實施,至2026年7月15日結束。

部署完成後,你無法使用 build service account 來查看管線閘門的警示。 如果您的管線仰賴建置服務帳戶來讀取警示並作為建置把關機制,請改為使用進階安全性狀態檢查;這可讓您的團隊在偵測到新的高嚴重性或重大嚴重性警示時,以原生方式封鎖提取要求的完成。

下一步請參見 「將狀態檢查設定為分支政策」。 關於此變更的更多背景,請參見 「建立身份可再次存取進階安全讀取警示」。

Azure Boards

編碼代理模型選擇選項

不同模型在使用 Copilot 編碼代理處理工作項目時,可能會產生不同的結果,尤其是在使用自訂指令或自訂代理時。

你現在可以選擇程式代理在從工作項目建立拉取請求時使用的模型,讓你更能掌控對團隊和程式碼庫最合適的方案。

Azure Boards 中的 Coding agent 模型選擇選項

Azure Pipelines

從 GitHub 存放庫執行 PR 驗證作業時的更細緻留言要求

為了保護你的管線免於未經授權的使用,你可以要求團隊成員或貢獻者在拉取請求驗證開始前提供意見。

在這個衝刺之前,留言要求適用於來自同一存放庫以及來自 fork 的拉取請求。 如果你想僅針對來自 fork 的 pull request 要求團隊成員留言評論,這原本是做不到的。

自本次 Sprint 起,你可以針對每個 Pull Request 來源分別設定留言要求。 以下範例中,註解僅對來自儲存庫分支的拉取請求要求。

顯示來自倉庫分支的建置拉取請求的圖片。

使用 Microsoft Entra 驗證存取 Azure DevOps

你現在可以使用新的 Azure DevOps 服務連線,使用Microsoft Entra工作負載身份(服務主體或管理身份)存取 Azure DevOps,而非個人存取權杖(PAT)或會話權杖。

使用 Azure DevOps 服務連線有助於在多方面提升管線安全性:

  • 最低權限:使用有範圍的服務連線權限,而非廣泛的共享 建置服務帳號權限
  • 免 PAT 認證:消除建立、儲存及輪換個人存取憑證的需求
  • 無持久秘密:使用 Microsoft Entra 聯合憑證取代密碼
  • 稽核軌跡:認證嘗試會記錄在 Azure DevOps 稽核日誌中

設定 Azure DevOps 服務連線

若要建立 Azure DevOps 服務連線,您必須先將服務主體或受控識別新增為組織中的使用者,並指派其權限。

要建立服務連線,請選擇 Azure DevOps (Preview):

顯示新服務連線類型的截圖。

並選擇你剛建立的服務主體或受管理身份作為所使用的身份:

顯示服務連線設定的截圖。

你應該將身份和權限分配給它需要的組織。 你可以透過前往 檢視目前組織中的存取權 連結來執行此操作,例如將其新增至目前專案的 Readers 群組。

顯示 hservice 連線細節的截圖

使用新的 Azure DevOps 服務連線

要查看不同組織的資料庫:

resources:
  repositories:
  - repository: external-repo
    type: git
    endpoint: my-azdo-connection
    name: 'external-project/external-repo'
    ref: 'refs/heads/main'

steps:
- checkout: self
- checkout: external-repo

參考來自不同組織的 YAML 範本:

resources:
  repositories:
    - repository: templates 
      type: git
      endpoint: my-azdo-connection
      name: 'external-project/external-repo'
      ref: "refs/heads/main"    
      
steps:
- template: azdosc-template.yml@templates

要透過其中一個認證任務存取工件資料流:

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: 'my-azdo-connection'

- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    projects: '**/*.csproj'

在腳本中使用新的 Azure DevOps 服務連線

這個新AzureCLI@3任務可以用多種方式存取 Azure DevOps 並使用 Entra 認證。 在所有情況下,你都是透過設定 connectionType: 'azureDevOps',並將 azureDevOpsServiceConnection 指派為你所建立的 Azure DevOps 服務連線,來設定服務連線:

- task: AzureCLI@3
  inputs:
    connectionType: 'azureDevOps'
    azureDevOpsServiceConnection: 'my-azdo-connection'

這會使用 Azure DevOps CLI 建立已通過 Entra ID 驗證的工作階段:

- task: AzureCLI@3
  displayName: Secret-less
  inputs:
    connectionType: 'azureDevOps'
    azureDevOpsServiceConnection: 'my-azdo-connection'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az devops configure -l

      az devops project list --query "value[].{Name:name, Id:id}" `
                            -o table

      az pipelines pool list --query "[].{Id:id, Name:name}" `
                            -o table

      az rest --method get `
              --url "https://status.dev.azure.com/_apis/status/health?api-version=7.1-preview.1" `
              --resource 499b84ac-1321-427f-aa17-267ca6975798 `
              --query "sort_by(services[?id=='Pipelines'].geographies | [], &name)" `
              -o table

如果你確實需要權杖,例如你有一個現有的指令碼,會在其中使用 PAT 或將 System.AccessToken 直接內嵌在指令碼中,也有一種方法可以取得可用來存取 Azure DevOps 的 Entra 存取權杖:

- task: AzureCLI@3
  displayName: Use Entra access token
  inputs:
    connectionType: 'azureDevOps'
    azureDevOpsServiceConnection: 'my-azdo-connection'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # Get access token for Azure DevOps
      $token = az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" `
                                           --query "accessToken" `
                                           --output tsv
      
      # Use token in REST API call
      $headers = @{
        Authorization = "Bearer $token"
        "Content-Type" = "application/json"
      }
      
      $body = @{
        name = "Test Build"
      } | ConvertTo-Json
      
      Invoke-RestMethod -Uri "$(System.CollectionUri)$(System.TeamProject)/_apis/build/definitions?api-version=7.1" `
                        -Method POST `
                        -Headers $headers `
                        -Body $body

詳細資訊

欲了解更多如何設定 Azure DevOps 服務連線的資訊,請參閱文件。

適用於 macOS 管線代理程式的 Apple Silicon(隨用隨付預覽)

我們正在 Azure Pipelines 中公開預覽 Apple Silicon 的 macOS 代理。 從 Apple Silicon 起,我們將把 GitHub Actions 中提供的部分相同規格引入 Azure Pipelines。

作業系統 硬體規格 影像 YAML VM 映像標籤 游泳池
macOS 26 標準 macOS 26 arm64 macos-26-arm64 由 GitHub 託管的代理程式
macOS 26 特大 macOS 26 arm64 XL macos-26-arm64-xl 由 GitHub 託管的代理程式

這些客服採用按需付費的收費方式,按客服人員規模按每分鐘費率收費,詳見 價格。

要使用新代理,請在計費設定中啟用 GitHub 託管代理:

顯示如何啟用隨用隨付定價的螢幕擷取畫面。

這將為付費隨用代理提供新的 GitHub 託管代理池。

使用 Apple Silicon 映像檔

配置完成後,你可以像這樣使用 Apple Silicon macos-26-arm64 映像檔:

pool:
  name: 'GitHub-hosted Agents'
  vmImage: 'macos-26-arm64'
steps:
- bash: |
    echo Hello from macOS Tahoe arm64
    uname -a
    sw_vers

還有像這樣更震撼的 macos-26-arm64-xl 影像:

pool:
  name: 'GitHub-hosted Agents'
  vmImage: 'macos-26-arm64-xl'
steps:
- bash: |
    echo Hello from XL macOS Tahoe arm64
    uname -a
    hostinfo | grep memory

監控每分鐘使用情況

按使用量付費的客服人員是按分鐘計費。 為了監控使用分鐘數,GitHub 托管的代理程式池中更新的分析分頁讓你可以看到每個專案的使用分鐘數,並透過圖片篩選,並深入檢視代理 SKU 和管線:

截圖顯示如何使用分析標籤。

在 Azure 成本管理 中,你可以追蹤使用分鐘數,並細分 Azure DevOps 組織與專案的使用情況:

顯示如何監控隨用隨付成本的螢幕擷取畫面。

你可以利用 Azure 成本管理 的預算與警示支援,預測並監控支出。

詳細資訊

欲了解更多如何啟用 Apple Silicon agent 及代理規範的資訊,請參閱 GitHub 託管的代理文件。

Azure Repos

Copilot 適用於 Azure Repos 的程式碼審查 (公開預覽版,名額有限)

GitHub Copilot 現在可以直接在 Azure Repos 中審查拉取請求。 當拉取請求準備好進行審查時,開發者可以申請 Copilot 審查,以分析建議變更並找出潛在錯誤、程式碼品質問題及可維護性疑慮。

回饋直接在拉取請求中提供,幫助團隊及早發現問題並提升程式碼品質,然後再合併。

在 Azure Repos 中要求 Copilot 進行程式碼審查

此功能可透過有限的公開預覽方式提供。 有意參與的組織可註冊預覽,並在核准後啟用 Copilot 程式碼審查,適用於其組織及資料庫。

在分支比較頁面啟用比較提交功能

你現在可以直接在分支比較頁面的版本選擇器中搜尋並選取依 SHA 識別的提交。

先前,比較提交紀錄需要手動建立 URL。 在版本選擇器新增的 Commits 標籤後,介面中可直接提供提交至提交與分支對提交的比較功能。

分支比較頁面上的提交記錄比較

下一步

Note

這些功能將在未來兩到三周內推出。 打開 Azure DevOps 去看看吧。

如何提供意見反應

我們很樂意聽到您對於這些功能的看法。 使用說明功能表來回報問題或提供建議。

提供建議

您也可以在 Stack Overflow 的社群中獲取建議,並由社群回答您的問題。