使用 Microsoft 開發箱自訂功能來簡化雲端式開發環境的設定。 開始新專案或加入新小組可能既複雜又耗時。 小組自訂會使用映像定義檔案 (imagedefinition.yaml) 預先安裝工具、複製存放庫,以及設定集區中每個開發箱的設定。 透過小組自訂,系統管理員可以提供可隨時編碼的工作站,其中包含應用程式、工具、存放庫、程式碼庫、套件和建置指令碼。 本文說明如何在 Visual Studio Code 中建立、測試及編輯開發箱的映像定義檔案。
您可以透過兩種方式在開發箱中使用自訂。 小組自訂會為小組建立共用組態。 使用者自訂設置 為個別開發人員建立個人配置。 下列清單摘要說明這些自訂類型之間的差異。
- 小組自訂:定義一次,透過目錄中的 imagedefinition.yaml 套用至集區中的每個開發箱。
- 使用者自訂:建立開發箱時上傳的個人 YAML;只影響那一個開發箱。
- 使用小組來確保一致性和合規性;使用使用者以滿足個人喜好。
若要深入了解,請參閱 Microsoft 開發箱自訂。
請遵循下列步驟設定小組自訂:
先決條件
| Product | 需求 |
|---|---|
| Microsoft 開發箱 | - 設定具有開發箱集區和開發箱專案的開發人員中心,以便您可以建立開發箱。
- 將目錄附加至開發人員中心,其中包含可在映像定義檔案中使用的工作。 如果您沒有目錄,請參閱 從 GitHub 或 Azure Repos 新增和設定目錄。 - 權限 - 若要建立開發箱: 加入至少一個專案的開發箱使用者安全性群組。 - 若要啟用開發人員中心的專案層級目錄: 具有訂用帳戶寫入權限的平台工程師。 - 若要啟用專案的目錄同步設定: 具有訂用帳戶寫入權限的平台工程師。 - 若要將目錄附加至專案: 專案的開發人員中心專案管理員或參與者權限。 |
| Visual Studio Code | - 安裝最新版本 |
建立映像定義檔
若要定義小組所需的工具、套件和設定,請建立 YAML 格式的映像定義檔案,以列出開發箱環境所需的工作。
使用內建工作或目錄進行自訂工作
工作是可重複使用的動作,來自內建基本項目 (WinGet、PowerShell 和 Git-Clone),或來自您附加至開發人員中心專案的目錄。 選擇最適合您的自訂需求和專案要求的來源。
使用 WinGet、PowerShell 和 Git-Clone 內建工作。 開發箱的開發中心原生支援 PowerShell 和 WinGet 工作。 如果您的自訂只需要 PowerShell、WinGet 或 Git-Clone,您可以開始使用這些內建工作,並建立映像定義檔案。 如需詳細資訊,請參閱 建立映像定義檔。
這很重要
WinGet 內建工作與 WinGet 可執行檔不同。 WinGet 內建工作是以 PowerShell WinGet Cmdlet 為基礎。
使用目錄來定義自定義工作。 建立您自己的自訂工作。 若要讓自訂工作可供整個組織使用,請將具有自訂工作定義的目錄附加至您的開發人員中心。 Dev Box 支援 Azure Repos 和 GitHub 目錄。 因為工作只會在開發人員中心定義,因此將工作和映像定義儲存在不同的存放庫中。
若要深入了解如何定義自訂工作,請參閱設定開發箱自訂的工作。
開發箱支援具有 GitHub Copilot 代理程式模式的代理程式工作流程。 使用自然語言提示來產生映像定義檔案 (imagedefinition.yaml)。 GitHub Copilot 可讓您更輕鬆地設定開發箱環境,因為您可以透過交談方式描述您的需求,而不是手動建立 YAML 檔案。
開發箱代理程式工作流程可讓您:
- 模擬您目前的開發環境 - 產生或變更符合您目前電腦設定的定義。
- 使用存放庫內容 - 在特定 GitHub 存放庫的內容中建立或變更定義。
- 使用自然語言指令 - 透過描述您想要的開發環境來產生映像定義檔案。
備註
代理程式工作流程僅支援開發箱基本工作,包括 WinGet、PowerShell 和 Git-Clone。
產生映像定義檔案
打開 Visual Studio Code。
安裝開發箱延伸模組。
開啟延伸模組 (Ctrl+Shift+X),搜尋開發箱,然後安裝延伸模組。
透過在設定編輯器中設定 chat.agent.enabled 來確保已啟用代理程式模式。 此設定需要 Visual Studio Code 1.99 或更新版本。
在 VS Code 中開啟 Copilot Chat。
確定 [選取工具] 底下已預先選取 [開發箱工具]。
選擇 [代理程式模式],然後選擇模型:[Claude 3.5 Sonnet]。
提供自然語言提示,例如:
「我想設定一個開發箱,其中包含處理這個 [存放庫名稱] 存放庫所需的所有工具和套件。」
「我想在開發箱上預先安裝 Visual Studio 2022 Enterprise、Visual Studio Code、Git、.NET SDK 8、Node.js LTS 和 Docker Desktop,並將小組的存放庫 [URL] 複製到開發箱上。」
「我想設定一個開發箱,其中包含我目前電腦上安裝的所有開發工具和套件。」
小提示
如果您想要在存放庫的內容中產生定義,請在 Visual Studio Code 中複製並開啟特定存放庫。
請依照提示設定套件。
出現提示時,選取 [繼續] 以繼續套件設定。
Copilot 會產生 imagedefinition.yaml 檔案。
使用更多提示來縮小搜尋範圍。
- 繼續與代理程式互動,直到您想要的工具和套件出現在檔案中。
將映像定義檔案上傳至存放庫
您可以使用 GitHub 或 Azure Repos 存放庫作為目錄,讓映像定義檔案可從開發箱專案存取。 每個專案都可以有一個目錄,可儲存多個映像定義檔案,而您可以在集區上設定這些檔案,以符合開發人員小組的需求。
一旦您有了要使用的映像定義檔案,請將其上傳至目錄。 下列各節說明如何將目錄附加至專案,並在設定開發箱集區時讓映像定義可供選取。
在專案層級設定映像定義
專案可協助您有效率地管理開發箱資源。 您可以為每個開發人員小組指派其本身的專案,以有效地組織資源。 在目錄存放庫中建立多個映像定義,每個定義都會在本身的資料夾中,以專案下的不同開發人員小組為目標。
啟用專案層級目錄
請先在開發人員中心層級啟用專案層級目錄,才能將目錄新增至專案。 若要在開發人員中心層級啟用專案層級目錄:
在 Azure 入口網站中,前往您的開發人員中心。
在左側功能表的 [設定] 底下,選取 [開發人員中心設定]。
在 [專案層級目錄] 底下,選取 [ 啟用每個項目的目錄],然後選取 [ 套用]。
如需如何將目錄新增至專案的詳細資訊,請參閱 從 GitHub 或 Azure Repos 新增和設定目錄。
設定專案的目錄同步設定
設定您的專案以從目錄中同步處理映像定義。 此設定可讓您使用目錄中的映像定義來建立開發箱集區。
登入 Azure 入口網站。
在 [搜尋] 方塊中輸入「projects」。 從結果清單中,選取 [專案]。
開啟您想要設定目錄同步設定的開發箱專案。
選取 [目錄]。
選取 [同步設定]。
在 [同步設定] 窗格中,選取 [映像定義],然後選取 [儲存]。
附加包含映像定義檔案的目錄
若要使用映像定義檔案,請將包含該檔案的目錄附加至您的專案。 這會讓映像定義在設定開發箱集區時可供選取。
[映像定義] 窗格會顯示專案可以使用的映像定義。
若要了解如何附加目錄,請參閱從 GitHub 或 Azure Repos 新增和設定目錄。
設定開發箱集區以使用映像定義
讓您的開發小組使用自訂,方法是使用映像定義檔案設定開發箱集區。 將映像定義檔案作為目錄儲存在連結至專案的存放庫中。 將此自訂檔指定為集區的映像定義,並將自訂套用至新的開發箱。
請遵循下列步驟來建立開發箱集區,並指定映像定義:
登入 Azure 入口網站。
在 [搜尋] 方塊中輸入「projects」。 在結果清單中,選取 [專案]。
開啟您要用來建立新開發箱集區關聯的開發箱專案。
選取 [開發箱集區],然後選取 [建立]。
在 [建立 Microsoft 開發箱集區] 窗格上,輸入下列值:
設定 價值觀 名稱 輸入集區的名稱。 開發人員在建立開發箱時可以看到集區名稱。 它在專案內必須是唯一的。 定義 此方塊列出了可存取目錄和開發箱定義中的映像定義。 選取映像定義檔。 網路連線 選取 [部署至 Microsoft 裝載的網路],或使用現有的網路連線。 啟用單一登入 選取 [是],以允許此集區中開發箱的單一登入。 需要為組織設定單一登入。 如需詳細資訊,請參閱為開發箱啟用單一登入 (英文)。 開發箱建立者權限 選取 [本機系統管理員] 或 [標準使用者]。 啟用自動停止 預設值為 [是]。 選取 [否] 以關閉自動停止排程。 您可以設定在建立集區之後自動停止排程。 停止時間 選取停止集區中所有開發箱的時間。 時區 選取停止時間的時區。 授權 選取此核取方塊,以確認組織具有套用至此集區中開發箱的 Azure Hybrid Benefit 授權。 選取 ,創建。
檢查新的開發箱集區是否出現在清單中。 您可能需要重新整理畫面。
使用開發人員入口網站來建立開發箱
若要檢查系統是否已套用映像定義檔案中的自訂,請在開發箱開發人員入口網站建立開發箱。 請遵循 快速入門:使用 Dev Box 開發者入口網站建立並連接到開發方塊中的步驟。 然後連線到新的開發箱,並檢查自訂是否如預期般運作。
變更映像定義檔案,並建立新的開發箱來測試它們。 當您確定自訂正確無誤時,請建置可重複使用的映像。
在 Dev Box 自定義中使用模組化腳本和檔案
模組化腳本和檔案,例如 PowerShell 腳本、所需狀態設定 (DSC) 檔案、組態檔、文字檔或影像,可以儲存在共用目錄中,以便您可以跨多個影像重複使用和標準化 Dev Box 自定義。
它們旨在:
- 在多個開發箱設定之間促進重複使用
- 減少重複和維護開銷
- 啟用一致的設置規範
目錄結構
與 imagedefinition.yaml 相同資料夾中的檔案,或其子資料夾中的檔案,會在建立時複製到開發箱。 您可以在執行自訂工作時使用這些檔案。
下圖顯示 Dev Box 自定義中模組化腳本和檔案的目錄結構。
在最上層,有一個 圖像定義文件 夾。 在裡面,您可以找到圖像定義子文件夾,例如 frontend-imagedef 和 backend-imagedef。 frontend-imagedef 資料夾有一個 PowerShell 腳本檔案。 backend-imagedef資料夾包含包含DSC檔案的子資料夾。 您可以使用任一結構來儲存指令碼和其他檔案。
參考模組化指令碼或檔案
映像定義檔案會設定在系統內容中執行的「工作」,以及在使用者內容中的新開發箱上首次登入後執行的 userTasks 清單。 使用任務的顯示名稱來闡明每個任務的用途。 在影像定義檔案中,參考您要執行的模組化指令碼,或您要包含的檔案。
$schema: "1.0"
name: "modular-script"
image: microsoftvisualstudio_visualstudioplustools_vs-2022-ent-general-win11-m365-gen2
description: "This definition shows examples of referencing PowerShell scripts and DSC configuration files."
tasks:
- name: ~/powershell
displayName: "Modular Script"
parameters:
script: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso.ps1
- name: ~/winget
displayName: "Install VS Code"
parameters:
configurationFile: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso.dsc.yaml
userTasks:
- name: ~/winget
displayName: "Install Insomnia"
parameters:
configurationFile: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso-user.dsc.yaml
開發箱會驗證所有工作是否都引用了內建工具 (例如 PowerShell 或 WinGet),或是可在 DevCenter 層級取得的工具。 它會將所有映像定義檔案下載到新開發箱上的設定目錄,以及相關的工作檔案。 然後,它會在其下載的任務目錄中執行每個任務,並在完成後上傳任務狀態。
後續步驟
現在您已經有了為開發小組設定和建立開發箱的映像定義檔,請瞭解如何使用開發人員中心映像來優化開發箱建立時間。