共用方式為


建立可重複使用的開發箱自訂內容

Microsoft 開發箱自訂是自訂開發箱的「設定即程式碼」方法。 在本文中,您將了解如何使用工作目錄和設定檔來自訂開發箱,以便安裝軟體、新增擴充功能、複製存放庫及執行其他工作。 這些工作會在建立程序的最後一個階段套用至新開發箱。 您可以新增設定和軟體,而不需要建立自訂虛擬機器 (VM) 映像。

自訂對開發小組很有用。 開發人員小組負責人可以使用自訂內容來預先設定其特定開發小組所需的軟體,並撰寫僅適用於與其小組相關工作的設定檔。 此方法可讓開發人員建立最適合其工作的開發箱,而不必要求 IT 部門進行變更,也無需等候工程小組建立自訂 VM 映像。

藉由使用自訂內容,您可以將一般設定步驟自動化,從而節省時間,並減少設定錯誤的風險。 一些範例工作包括:

  • 使用 WinGet 套件管理員安裝軟體。
  • 進行 OS 設定,例如啟用 Windows 功能。
  • 設定應用程式,例如安裝 Visual Studio 擴充功能。

您可以分階段採用自訂內容,建置從簡單但運作正常的設定到自動化程序。 這些階段如下所示:

  1. 使用範例設定檔來建立自訂開發箱
  2. 寫入設定檔
  3. 從程式碼存放庫共用設定檔
  4. 在目錄中定義新工作
  5. 使用 Azure Key Vault 的祕密

重要

Microsoft 開發箱中的自訂功能目前處於預覽階段。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

必要條件

設定 Microsoft 開發箱以進行自訂所需的權限

若要執行建立自訂內容並套用至開發箱所需的動作,您需要特定權限。 下表描述設定自訂內容所需的動作以及權限或角色。

動作 權限/角色
將目錄附加至開發人員中心 具有開發人員中心參與者權限的平台工程師。
使用開發人員入口網站在開發箱建立期間上傳並套用 yaml 檔案 開發箱使用者
建立設定檔 任何人都可以建立設定檔。
將工作新增至目錄 新增至裝載目錄之存放庫的權限。

使用範例設定檔來建立自訂開發箱

使用預設快速入門目錄和範例設定檔來開始進行自訂。

附加快速入門目錄

將具有自訂工作的目錄附加至開發人員中心表示您可以在該開發人員中心建立開發箱,並從該目錄參考自訂工作。 Microsoft 在 GitHub 上提供了一個範例存放庫,其中包含一組標準預設工作,可協助您開始進行,稱為「快速入門目錄」。

若要將快速入門目錄附加至開發人員中心:

  1. 登入 Microsoft 開發箱開發人員入口網站

  2. 在左側功能表的 [環境設定] 下,選取 [目錄],然後選取 [新增]

  3. 在 [新增目錄] 中,選取 [開發箱自訂工作] 作為快速入門目錄。 然後選取 [新增]

  4. 在開發人員中心,選取 [目錄],並確認您的目錄出現。

    Azure 入口網站的螢幕擷取畫面,其中顯示 [新增目錄] 窗格,並已醒目提示 [Microsoft 的快速入門目錄] 和 [開發箱自訂工作]。

    如果連線成功,[狀態] 會顯示為 [同步成功]

建立您的自訂開發箱

現在您有一個目錄,其中定義了開發人員可以使用的工作。 您可以從設定檔參考這些工作,並建立自訂開發箱。

  1. 從範例存放庫下載範例 yaml 設定。 此範例設定會安裝 Visual Studio Code,並將 OrchardCore .NET Web 應用程式存放庫複製到您的開發箱。

  2. 登入 Microsoft 開發箱開發人員入口網站

  3. 選取 [新增]>[開發箱]

  4. 在 [新增開發箱] 中輸入下列值,然後選取 [繼續]:

    設定
    名稱 輸入開發箱的名稱。 開發箱名稱必須是專案內的唯一名稱。
    計畫 從下拉式清單中選取專案。
    開發箱集區 從下拉式清單中選取集區,其中包含該專案的所有開發箱集區。 選擇位置距離您最近的開發箱集區,以最大限度降低延遲。
    套用自訂內容 選取 [套用自訂內容]

    此螢幕擷取畫面顯示開發人員入口網站中的開發箱自訂選項,其中已醒目提示 [上傳的自訂檔案]。

  5. 在 [自訂您的開發箱] 頁面上,選取 [上傳自訂檔案],然後選取 [從檔案新增自訂內容]

    此螢幕擷取畫面顯示 [自訂您的開發箱] 頁面,其中已醒目提示 [上傳自訂檔案] 和 [從檔案新增自訂內容]。

  6. 瀏覽至您下載範例 yaml 設定檔的位置,然後選取 [開啟]

  7. 確認該設定檔列在 [上傳自訂檔案] 底下,然後選取 [驗證]

    此螢幕擷取畫面顯示 [自訂您的開發箱] 頁面,其中已列出上傳的自訂檔案並醒目提示 [驗證]。

  8. 在開發箱驗證設定檔之後,選取 [繼續]

    此螢幕擷取畫面顯示自訂工作驗證成功訊息,並已醒目提示 [繼續]。

  9. 在 [開發箱建立摘要] 頁面上,開發箱會顯示將套用的工作。 選取 建立

    此螢幕擷取畫面顯示 [開發箱建立摘要] 頁面,其中已醒目提示 [建立] 按鈕。

建立程序完成後,新的開發箱便已安裝 nodejs 和 Visual Studio Code。

如需更多範例,請參閱 GitHub 上的開發人員中心範例存放庫 (英文)。

提示

您可以使用開發人員首頁替代開發人員入口網站,以建立、自訂及連線到您的開發箱。 開發人員首頁是原生 Windows 應用程式,提供單一位置來管理您的開發箱。 若要深入了解開發人員首頁,請參閱使用開發人員首頁建立可重複使用的開發箱自訂內容

什麼是設定檔?

開發箱自訂會使用 yaml 格式的檔案來指定要在建立新開發箱時從目錄套用的工作清單。 這些設定檔包含一或多個「工作」,用於識別目錄工作並提供參數,例如要安裝的軟體名稱。 然後,設定檔可供開發人員用來建立新的開發箱。 下列範例會使用 winget 工作來安裝 Visual Studio Code,並使用 git clone 工作複製存放庫。

# From https://github.com/microsoft/devcenter-examples
$schema: 1.0
tasks:
  - name: winget
    parameters:
      package: Microsoft.VisualStudioCode
      runAsUser: true
  - name: git-clone
    description: Clone this repository into C:\Workspaces
    parameters:
      repositoryUrl: https://github.com/OrchardCMS/OrchardCore.git
      directory: C:\Workspaces

什麼是工作?

工作會執行特定動作,例如安裝軟體。 每個工作都包含一或多個 PowerShell 指令碼,還包含一個 task.yaml 檔案,其中提供參數並定義指令碼的執行方式。 您也可以在 task.yaml 檔案中包含 PowerShell 命令。 您可以將策劃的工作集合儲存在附加至開發人員中心的目錄中,每個工作都儲存在單獨的資料夾中。 開發箱支援使用 GitHub 存放庫或 Azure DevOps 存放庫作為目錄,並以遞迴方式掃描目錄的指定資料夾以尋找工作定義。

Microsoft 提供快速入門目錄,協助您開始使用自訂內容。 其中包含定義一般工作的一組預設工作:

  • 使用 WinGet 套件管理員安裝軟體。
  • 使用 WinGet 設定部署 Desired State Configuration (DSC)。
  • 使用 git-clone 複製存放庫。
  • 設定應用程式,例如安裝 Visual Studio 擴充功能。
  • 執行 PowerShell 指令碼。

使用現有的 WinGet 設定檔自訂您的開發箱

WinGet 設定採用設定即程式碼方法,定義所需的獨特軟體和組態設定集,讓您的 Windows 環境處於準備好撰寫程式碼的狀態。 這些設定檔也可用來設定開發箱,方法是使用稍早所述 Microsoft 提供快速入門目錄中包含的 WinGet 工作。

下列範例顯示呼叫現有 WinGet DSC 檔案的開發箱自訂檔案。

tasks:
    - name: winget
      parameters:
          configure: "projectConfiguration.dsc.yaml"

若要深入了解 WinGet 設定,請參閱 WinGet 設定

寫入組態檔

您可以透過建立自己的設定檔來定義要套用至開發箱的新工作。 您可以在 Visual Studio Code 中測試設定檔,並進行任何必要的變更,而不需要為每個測試建立單獨的開發箱。

您必須先有一個目錄,其中包含附加至開發人員中心的工作,才能建立及測試自己的設定檔。 您可以使用 Visual Studio Code 擴充功能來探索附加目錄中的工作。

  1. 建立開發箱 (或使用現有的開發箱) 以進行測試。

  2. 在測試開發箱上,安裝 Visual Studio Code,然後安裝開發箱 v1.2.2 VS Code 擴充功能

  3. 從範例存放庫下載範例 yaml 設定檔,並在 Visual Studio Code 中開啟。

  4. 使用命令選擇區探索目錄中可用的工作。 從 [檢視]>[命令選擇區],選取 [開發箱: 列出此開發箱可用的工作]

    Visual Studio Code 的螢幕擷取畫面,其中顯示命令選擇區,並已醒目提示 [開發箱: 列出此開發箱可用的工作]。

  5. 在 Visual Studio Code 中使用 F5 鍵/命令選擇區測試設定。 從 [檢視]>[命令選擇區],選取 [開發箱: 套用自訂工作]

    Visual Studio Code 的螢幕擷取畫面,其中顯示命令選擇區,並已醒目提示 [開發箱: 套用自訂工作]。

  6. 設定檔會立即執行,並將指定的工作套用至您的測試開發箱。 檢查變更,並檢查 Visual Studio Code 終端是否在工作執行期間產生任何錯誤或警告。

  7. 成功執行設定檔時,請與開發人員分享,以便開發人員在建立新的開發箱時上傳。

提示

您可以使用開發人員首頁替代 Visual Studio Code,以在圖形化使用者介面中建立和驗證設定檔。 若要深入了解開發人員首頁,請參閱使用開發人員首頁建立可重複使用的開發箱自訂內容

注意

建立和上傳檔案的能力不是安全性風險;上傳的檔案只能套用附加至開發人員中心之目錄中定義的設定。 如果該目錄中未定義工作,開發人員會收到錯誤,指出未定義工作。

從程式碼存放庫共用設定檔

將設定檔命名為 workload.yaml,並將其上傳至開發人員可存取的存放庫 (通常是其程式碼撰寫存放庫),這樣開發人員便可以順暢使用您的設定檔。 當您建立開發箱時,您會指定存放庫 URL,而設定檔會與存放庫的其餘部分一起複製。 開發箱會搜尋存放庫是否有名為 workload.yaml 的檔案,如果找到,則會執行列出的工作。 此設定可讓您順暢地在開發箱上執行自訂內容。

  1. 建立名為 workload.yaml 的設定檔。

  2. 將設定檔新增至包含程式碼之私人 Azure Repos 存放庫的根目錄,並加以認可。

  3. 登入 Microsoft 開發箱開發人員入口網站

  4. 選取 [新增]>[開發箱]

  5. 在 [新增開發箱] 中輸入下列值,然後選取 [繼續]:

    設定
    名稱 輸入開發箱的名稱。 開發箱名稱必須是專案內的唯一名稱。
    計畫 從下拉式清單中選取專案。
    開發箱集區 從下拉式清單中選取集區,其中包含該專案的所有開發箱集區。 選擇位置距離您最近的開發箱集區,以最大限度降低延遲。
    套用自訂內容 選取 [套用自訂內容]

    此螢幕擷取畫面顯示開發人員入口網站中的開發箱自訂選項,其中已醒目提示 [上傳的自訂檔案]。

  6. 在 [自訂您的開發箱] 頁面上,選取 [從存放庫選擇自訂檔案],並在 [Azure DevOps 存放庫 URL] 中輸入裝載您要套用之設定檔的存放庫 URL,然後選取 [繼續]

    此螢幕擷取畫面顯示 [自訂您的開發箱] 頁面,其中包含 [從存放庫選擇自訂檔案] 和 [Azure DevOps 存放庫 URL]。

  7. 在 [開發箱建立摘要] 頁面上,開發箱會顯示將套用的工作。 選取 建立

建立程序完成後,新的開發箱便已安裝 nodejs 和 Visual Studio Code。

新的開發箱已複製存放庫,並且已套用設定檔的所有指示。

在目錄中定義新工作

透過在目錄中建立新工作,您可以建立專為開發小組量身打造的自訂內容,並為可能的設定新增護欄。

  1. 建立存放庫來儲存您的工作。

    您可以選擇在自己的存放庫中建立快速入門目錄的複本,以作為起點。

  2. 修改現有的 PowerShell 指令碼,或建立新的指令碼,在您的存放庫中建立工作。

    若要開始建立工作,您可以使用 GitHub 上的開發人員中心範例存放庫中提供的範例和 PowerShell 文件

  3. 將您的存放庫附加至開發人員中心作為目錄

  4. 按照寫入設定檔中的步驟,為這些工作建立設定檔。

使用 Azure Key Vault 的祕密

您可以在 yaml 設定中使用 Azure Key Vault 的祕密來複製私人存放庫,或搭配您所撰寫需要存取權杖的任何自訂工作。

若要設定 Key Vault 祕密以用於 yaml 設定,

  1. 請確定您的開發人員中心專案的受控識別具有 金鑰保存庫 讀取者角色,並在密鑰保存庫上 金鑰保存庫 秘密使用者角色。

  2. 將 Key Vault 祕密的祕密使用者角色授與應該能夠在開發箱自訂期間取用祕密的每個使用者或使用者群組。 授與角色的使用者或群組必須包含開發人員中心的受控識別、您自己的使用者帳戶,以及開發箱自訂期間需要祕密的任何使用者或群組。

如需詳細資訊,請參閱

您可以使用 git-clone 工作作為範例,以下列格式參考 yaml 設定中的祕密:

$schema: "1.0"
tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{KEY_VAULT_SECRET_URI}}'

如果您想要複製私人 Azure DevOps 存放庫 (Azure Repos),則不需要在 金鑰保存庫 中設定秘密。 相反地,您可以使用 {{ado}}{{ado://your-ado-organization-name}} 作為參數。 這會在建立具有存放庫唯讀權限的開發箱時,代替您擷取存取權杖。 快速入門目錄中的 git-clone 工作會使用存取權杖來複製您的存放庫。 以下是範例:

tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{ado://YOUR_ADO_ORG}}'

如果您的組織原則要求您保持 Key Vault 私人不向網際網路公開,您可以將 Key Vault 設定為允許受信任的 Microsoft 服務略過防火牆規則。

此螢幕擷取畫面顯示 Azure 防火牆設定,其中已選取 [允許受信任的 Microsoft 服務略過此防火牆]。

若要瞭解如何允許受信任的 Microsoft 服務 略過防火牆,請參閱設定 Azure 金鑰保存庫 網路設定