你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Microsoft Dev Box 自定义功能简化基于云的开发环境的设置。 启动新项目或加入新团队可能很复杂且耗时。 团队自定义使用映像定义文件 (imagedefinition.yaml) 来预安装工具、克隆存储库,并为池中的每个开发箱设置设置。 借助团队自定义,管理员可以使用应用、工具、存储库、代码库、包和生成脚本提供现成代码工作站。 本文介绍如何在 Visual Studio Code 中创建、测试和编辑开发框的图像定义文件。
可以通过两种方式在 Dev Box 中使用自定义项。 团队自定义 项为团队创建共享配置。 用户自定义 项为单个开发人员创建个人配置。 以下列表汇总了这些自定义类型之间的差异。
- 团队自定义:定义一次,通过目录中的 imagedefinition.yaml 应用于资源池中的每个开发箱。
- 用户自定义:在创建开发箱时上传的个人 YAML,仅影响该开发箱本身。
- 如要保持一致性和合规性,请使用团队自定义;如要满足个人偏好,请使用个人自定义。
若要了解详细信息,请参阅 Microsoft Dev Box 自定义项。
按照以下步骤配置团队自定义项:
先决条件
| 产品 | 要求 |
|---|---|
| Microsoft Dev Box | - 设置一个包含开发框池和开发框项目的开发中心,以便你可以创建开发框。
- 将目录附加到开发人员中心,其中包含可在映像定义文件中使用的任务。 如果没有目录,请参阅在 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 目录。 由于任务仅在开发人员中心定义,因此将任务和映像定义存储在单独的存储库中。
若要详细了解如何定义自定义任务,请参阅 “为 Dev Box 自定义配置任务”。
Dev Box 支持使用 GitHub Copilot 代理模式的代理工作流。 使用自然语言提示生成图像定义文件(imagedefinition.yaml)。 GitHub Copilot 让设置 Dev Box 环境更加便捷,因为你可以通过对话方式描述需求,而不用手动创建 YAML 文件。
使用 Dev Box 代理工作流可以:
- 模拟当前开发环境 - 生成或更改与当前计算机的配置匹配的定义。
- 使用存储库上下文 - 在特定 GitHub 存储库的上下文中创建或更改定义。
- 使用自然语言说明 - 通过描述所需的开发环境生成图像定义文件。
注释
代理工作流仅支持 Dev Box 基元任务,包括 WinGet、PowerShell 和 Git-Clone。
生成映像定义文件
打开 Visual Studio Code。
安装 Dev Box 扩展。
打开扩展(Ctrl+Shift+X),搜索 Dev Box 并安装扩展。
通过在“设置”编辑器中设置 chat.agent.enabled,确保启用代理模式。 此设置需要 Visual Studio Code 1.99 或更高版本。
在 VS Code 中打开 Copilot 聊天。
请确保在“选择工具”下预先选择 Dev Box 工具。
选择 代理模式,然后选择模型: 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 存储库作为目录,使映像定义文件可从开发框项目访问。 每个项目都可以有一个目录来存储多个映像定义文件,可以在池上配置这些文件,以满足开发人员团队的需求。
拥有要使用的图像定义文件后,将其上传到目录。 以下部分介绍如何将目录附加到项目,以及如何在配置开发箱池时使映像定义可供选择。
在项目级别配置映像定义
项目可帮助你高效地管理 Dev Box 资源。 可以为每个开发人员团队分配自己的项目,以有效地组织资源。 在目录存储库中创建多个映像定义,每个映像定义都位于自己的文件夹中,以针对项目下的不同开发人员团队。
启用项目级目录
在向项目添加目录之前,在开发人员中心级别启用项目级目录。 若要在开发人员中心级别启用项目级目录,请执行以下步骤:
在 Azure 门户中转到你的开发人员中心。
在左侧菜单中的 “设置”下,选择 开发人员中心设置。
在 “项目”级别目录下,选择“ 为每个项目启用目录”,然后选择“ 应用”。
有关如何向项目添加目录的详细信息,请参阅 从 GitHub 或 Azure Repos 添加和配置目录。
为项目配置目录同步设置
设置您的项目以从目录中同步图像定义。 通过此设置,可以使用目录中的映像定义来创建开发箱池。
登录到 Azure 门户。
在搜索框中输入“项目”。 从结果列表中选择“ 项目”。
打开要在其中设置目录同步设置的 Dev Box 项目。
选择“目录”。
选择“同步设置”。
在 “同步设置 ”窗格中,选择“ 映像定义”,然后选择“ 保存”。
附加包含映像定义文件的目录
若要使用图像定义文件,请将包含该文件的目录附加到项目。 这使得映像定义可用于在配置开发环境池时进行选择。
“ 图像定义 ”窗格显示项目可以使用的图像定义。
若要了解如何附加目录,请参阅 从 GitHub 或 Azure Repos 添加和配置目录。
将开发箱池配置为使用映像定义
通过设置具有映像定义文件的开发环境池,使开发团队能够使用自定义项。 将图像定义文件作为目录存储在链接到项目的存储库中。 将此文件指定为池的镜像定义,并将自定义项应用于新的开发框。
按照以下步骤创建开发环境池并指定镜像定义:
登录到 Azure 门户。
在搜索框中输入“项目”。 在结果列表中,选择“项目”。
打开要与新开发箱池关联的 Dev Box 项目。
选择“开发箱池”,然后选择“创建”。
在“创建开发箱池”页上,输入以下值:
设置 价值 名称 输入池的名称。 开发人员在创建开发箱时可以选择池名称。 名称在项目中必须唯一。 定义 该框列出了可访问目录中的映像定义以及开发箱定义。 选择映像定义文件。 网络连接 选择“ 部署到Microsoft托管网络 或使用现有网络连接”。 启用单一登录 选择“是”,为此池中的开发箱启用单一登录。 需要为组织设置单一登录。 有关详细信息,请参阅为开发箱启用单一登录。 Dev Box 创建者特权 选择“本地管理员”或“标准用户”。 启用自动停止 默认值为“是”。 选择 “否 ”可关闭自动停止计划。 可以在创建池后设置自动停止计划。 停止时间 选择停止池中所有开发箱的时间。 时区 选择停止时间的时区。 许可 选中此复选框以确认您的组织拥有适用于此池开发机的 Azure 混合权益许可证。 选择 创建。
检查新的开发框池是否显示在列表中。 可能需要刷新屏幕。
使用开发人员门户创建开发框
若要检查是否应用了映像定义文件中的自定义项,请在 Dev Box 开发人员门户中创建一个开发框。 请按照快速入门:使用 Dev Box 开发人员门户创建和连接到开发框中的步骤进行操作。 然后连接到新的开发框,并检查自定义项是否按预期工作。
更改映像定义文件并创建新的开发框以测试它们。 确定自定义项正确时,请生成可重用映像。
在 Dev Box 自定义中使用模块化脚本和文件
模块化脚本和文件(如 PowerShell 脚本、Desired State Configuration(DSC)文件、配置文件、文本文件或图像可以存储在共享目录中,以便跨多个映像重复使用和标准化 Dev Box 自定义。
它们旨在:
- 提高在多个 Dev Box 设置中的复用效率
- 减少重复和维护开销
- 启用一致的配置做法
目录结构
创建时,将与 imagedefinition.yaml 同一文件夹中的文件或其子文件夹中的文件复制到开发工作站。 运行自定义任务时,可以使用这些文件。
下图显示了 Dev Box 自定义中模块化脚本和文件的目录结构。
在顶层,有一个 映像定义 文件夹。 在内部,可以找到前端 -imagedef 和 backend-imagedef 等映像定义子文件夹。frontend-imagedef 文件夹具有 PowerShell 脚本文件。 backend-imagedef 文件夹包含包含 DSC 文件的子文件夹。 可以使用任一结构来存储脚本和其他文件。
引用模块化脚本或文件
映像定义文件设置了在系统上下文中运行的任务列表,以及在新开发箱首次登录后用户上下文中运行的用户任务。 对任务使用显示名称来阐明每个任务的用途。 在映像定义文件中,引用要运行的模块化脚本或要包含的文件。
$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
Dev Box 验证所有任务都引用内部函数(如 PowerShell 或 WinGet)或开发中心级别可用的任务。 它将所有映像定义文件及相关任务文件下载到新开发机器的指定目录。 然后,它会在其下载的任务目录中执行每个任务,并在完成时上传任务状态。
后续步骤
现在,你有了一个镜像定义文件,用于配置和创建开发团队的开发盒,学习如何使用开发中心成像来优化开发盒的创建时间。