Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Настройки Microsoft Dev Box позволяют инженерам и разработчикам платформы предварительно устанавливать инструменты, клонировать репозитории и настраивать настройки на dev box с помощью YAML-файлов. Этот справочник описывает текущую схему для YAML-файлов и встроенных задач, которые поддерживают кастомизации Dev Box.
Используйте этот справочник, когда нужно:
- Посмотрите свойства, типы и параметры по умолчанию, которые действительны в файлах imagedefinition.yaml или task.yaml .
- Подтвердите параметры, которые принимают встроенные
~/gitcloneзадачи ,~/powershellи~/wingetзадачи. - Поймите, как
tasks,userTasks,variablesparameters, иbuildPropertiesработают вместе, когда Dev Box предоставляет образ или применяет настройки к devbox.
Типы файлов настройки
Кастомизации Dev Box используют три типа файлов YAML, каждый из которых имеет свою цель и аудиторию:
| Файл | Purpose | Author | Где это работает |
|---|---|---|---|
imagedefinition.yaml |
Определяет повторно используемый образ для пула dev box. Перечисляет базовый образ, параметры, переменные, системные задачи, пользовательские задачи и свойства сборки для применения при создании определения изображения в Dev Box. | Инженер платформы или руководитель команды | Хранится в каталоге, прикреплённом к проекту; применяется к каждому блоку разработчика, созданному из пула, который ссылается на определение изображения. |
task.yaml |
Определяет повторно используемую, параметризованную задачу настройки, которая добавляется в каталог. Позволяет администраторам оборачивать логику PowerShell с метаданными, проверкой параметров, документацией и настройками выполнения. | Инженер платформы | Хранится в каталоге, прикреплённом к центру разработки; Вызывается по имени из imagedefinition.yaml или devbox.yaml файлов. |
devbox.yaml |
Файл личной настройки пользователя, загруженный во время создания dev box. Распространяется только на devbox, к которому он прикреплен. | Индивидуальный разработчик | Загружен с локального диска или ссылается на репозиторий в портале разработчиков. |
Встроенные ~/gitclone, ~/powershellи ~/winget задачи доступны в любом центре разработки без прикрепления каталога. Чтобы добавить пользовательские задачи помимо встроенных, определите их в task.yaml файлах каталога и называйте по имени из вашего файла определения изображения или пользовательской настройки. Для получения дополнительной информации смотрите настройки Microsoft Dev Box.
Файлы Imagedefinition.yaml
Используйте imagedefinition.yaml для определения изображения, параметров, переменных и задач настройки, которые DevBox применяет при создании определения изображения.
Пример файла imagedefinition.yaml
$schema: "1.0"
name: example-image-definition
description: Install core tools and clone the project repository.
image: microsoftvisualstudio_visualstudioplustools_vs-2022-ent-general-win11-m365-gen2
parameters:
repositoryBranch:
type: string
default: main
description: Branch to clone during setup.
variables:
workspaceRoot:
type: string
value: C:\Workspaces
description: Root directory for repositories.
tasks:
- name: ~/winget
parameters:
package: Git.Git
- name: ~/gitclone
parameters:
repositoryUrl: https://github.com/example-org/example-repo.git
directory: C:\Workspaces
branch: "{{repositoryBranch}}"
userTasks:
- name: ~/powershell
parameters:
command: code C:\Workspaces\example-repo
buildProperties:
networkConnection: corp-westus3
Свойства imagedefinition.yaml
| Property | Обязательный | Type | Description |
|---|---|---|---|
| $schema | строка или число | Указывает версию схемы для файла. | |
| name | ✅ | string | Определяет дружественное название для определения изображения. |
| description | string | Описывает определение изображения. | |
| image | ✅ | string | Определяет базовый образ для использования для образа dev box. |
| parameters | object | Определяет входные параметры, на которые задачи могут ссылаться в определении изображения. | |
| variables | object | Определяет многоразовые значения для определения изображения. | |
| задачи | Массив объектов задач | Список задач настройки системного контекста для выполнения во время провизионирования. | |
| userTasks | Массив объектов задач | Список задач настройки пользовательского контекста для выполнения после входа. | |
| buildСвойства | object | Определяет специфические настройки для создания изображений. |
$schema
(строка или номер)
Указывает версию схемы для файла. Современные примеры используют 1.0.
$schema: "1.0"
name
(обязательная строка, 3-63 символа)
Задаёт удобное имя, которое отображается при выборе определения изображения. Этот параметр определяет имя определения образа, которое доступно при создании и обновлении пулов. Название не может содержать /, ", [, @<|>:+]?&,;*=пробелы или начинаться с .-_
name: example-image-definition
description
(струна)
Описывает цель определения изображения.
description: Install core tools and clone the project repository.
image
(верёвка, требуется)
Указывает базовый образ для изображения dev box. Изображение может быть изображением маркетплейса или пользовательским образом из приложенной вычислительной галереи Azure в формате gallery-name/image-name@version.
Examples:
image: microsoftwindowsdesktop_windows-ent-cpc_win11-21h2-ent-cpc-m365
image: my-gallery/my-image@0.0.1
Чтобы прикрепить Azure Compute Gallery, см. Configure Azure Compute Gallery for Microsoft Dev Box.
Чтобы получить список изображений, к которым ваш центр разработчиков может получить доступ, используйте Azure CLI:
az devcenter admin image list --dev-center-name CustomizationsImagingHQ --resource-group TeamCustomizationsImagingRG --query "[].name"
При необходимости сначала установите расширение Dev Center Azure CLI:
az extension add --name devcenter
parameters
(объект)
Определяет именованные входные параметры, на которые можно обращаться в задачах с помощью {{parameterName}} синтаксиса.
parameters:
repositoryBranch:
type: string
default: main
description: Branch to clone during setup.
Свойства параметрического объекта
| Property | Обязательный | Type | Description |
|---|---|---|---|
| тип | ✅ | string | Задаёт тип данных параметров. |
| разрешено | массив строк | Ограничивает параметр фиксированным списком значений строк. | |
| по умолчанию | ✅ | String, boolean или число | Устанавливает значение параметра по умолчанию. |
| description | string | Описывает параметр. | |
| validationRegex | string | Проверяет значения строк по регулярному выражению. | |
| minLength | Целое число | Устанавливает минимальную длину для значений строк. | |
| maxLength | Целое число | Устанавливает максимальную длину для значений строк. |
type
(строка, требуется, допустимые значения: строка, булева, число)
Задаёт тип данных параметров.
allowed
(массив строк)
Ограничивает параметр фиксированным набором разрешённых значений строк.
default
(требуется струна, булев или число)
Устанавливает значение параметра по умолчанию.
description
(струна)
Описывает параметр для авторов и инструменты.
validationRegex
(струна)
Определяет регулярное выражение, которому должны совпадать значения строк.
minLength
(целое число)
Устанавливает минимальную длину для значений строк.
maxLength
(целое число)
Устанавливает максимальную длину для значений строк.
variables
(объект)
Определяет именованные переменные, которые можно использовать повторно в определении изображения.
variables:
workspaceRoot:
type: string
value: C:\Workspaces
description: Root directory for repositories.
Свойства переменных объектов
| Property | Обязательный | Type | Description |
|---|---|---|---|
| тип | ✅ | string | Задаёт тип данных переменных. |
| значение | ✅ | String, boolean или число | Устанавливает значение переменной. |
| description | string | Описывает переменную. |
type
(строка, требуется, допустимые значения: строка, булева, число)
Задаёт тип данных переменных.
value
(требуется струна, булев или число)
Устанавливает значение переменной.
description
(струна)
Описывает переменную для авторов и инструментов.
tasks
(массив объектов задач)
Перечисляет задачи настройки для выполнения в системном контексте во время предоставления. Конкретные значения входных данных, которые вы даёте, зависят от задачи. Каждая запись задачи должна включать name и также может определять displayName, description, parameters, и timeout.
tasks:
- name: ~/winget
parameters:
package: Git.Git
- name: ~/gitclone
timeout: 1800
parameters:
repositoryUrl: https://github.com/example-org/example-repo.git
directory: C:\Workspaces
Свойство timeout необязательно и измеряется секундами при использовании в imagedefinition.yaml.
tasks:
- name: ~/powershell
timeout: 1800
parameters:
command: <command>
Свойства ввода задачи
| Property | Обязательный | Type | Description |
|---|---|---|---|
| name | ✅ | string | Определяет задачу для вызова. |
| displayName | string | Предоставляет короткий текст в интерфейсе для задачи. | |
| description | string | Описывает, что делает задание. | |
| parameters | object | Предоставляет входные значения для задачи. | |
| timeout | Целое число | Отменяет время выполнения задачи за секунды. |
name
(верёвка, требуется)
Определяет задачу, которую нужно выполнить. Используйте ~/ префикс для встроенных задач, таких ~/wingetкак , ~/powershellи ~/gitclone.
displayName
(струна)
Предоставляет короткий текст для интерфейсных поверхностей.
description
(струна)
Описывает, что делает задача в определении изображения.
parameters
(объект)
Определяет входные значения, передаваемые задаче. Имена параметров и типы значений зависят от выбранной задачи.
Определения параметров следуют той же схеме, что и свойства task.yaml параметров. Для подробностей см. type, allowed, default, descriptionvalidationRegex, , minLengthmaxLength, , и required.
timeout
(целое число)
Переопределяет тайм-аут выполнения задачи за считанные секунды.
userTasks
(массив объектов задач)
Список задач настройки для выполнения в пользовательском контексте после входа.
userTasks использует ту же схему ввода задачи, что и tasks.
userTasks:
- name: ~/powershell
parameters:
command: code C:\Workspaces\example-repo
buildProperties
(объект)
Определяет настройки, специфичные для сборки, которые настраивают процесс создания изображений.
buildProperties:
networkConnection: corp-westus3
Свойства объекта Свойства Build Properties
| Property | Обязательный | Type | Description |
|---|---|---|---|
| networkСоединение | string | Выбирает сетевое соединение для сборки образов. |
networkConnection
(струна)
Указывает сетевое соединение, используемое при создании изображения. Используйте эту настановку, когда задачи сборки требуют доступа к ресурсам, таким как приватные репозитории или учетные записи хранения, доступные только через определённое сетевое соединение. Сетевое соединение должно быть подключено к центру разработки, прежде чем вы сможете использовать его для создания изображений.
buildProperties:
networkConnection: my-westus3
Встроенные задачи
Используйте встроенные задачи, когда нужны обычные действия кастомизации без прикрепления каталога. Используйте ~/ префикс, чтобы вызвать встроенную задачу, например ~/winget, ~/powershellили ~/gitclone.
Встроенная задача GitClone
Используйте встроенную задачу GitClone, чтобы клонировать репозиторий в devbox.
Пример:
tasks:
- name: ~/gitclone
parameters:
repositoryUrl: https://github.com/microsoft/calculator
directory: C:\Workspaces
branch: main
| Property | Обязательный | Type | Description |
|---|---|---|---|
| repositoryUrl | ✅ | string | Указывает URL репозитория для клонирования. |
| каталог | string | Устанавливает каталог, в который клонируется репозиторий. | |
| ветвь | string | Выбирает ветку для клонирования. | |
| Пэт | string | Предоставляет личный токен доступа для аутентифицированных операций клонирования. |
repositoryUrl
(верёвка, требуется)
Указывает URL репозитория для клонирования.
directory
(строка, по умолчанию: C:\Workspaces)
Устанавливает каталог, в который клонируется репозиторий.
branch
(струна)
Выбирает ветку для клонирования.
pat
(струна)
Предоставляет личный токен доступа для аутентифицированных операций клонирования. Когда pat он не предоставлен, клон попадает в очередь для первого входа пользователя. Когда вы подаёте patпродукты, задача может клонироваться во время провизии. Используйте секретный справочник Key Vault вместо чистого секретного значения.
Встроенная задача GitClone также устанавливает PowerShell 7, Git и Git LFS во время выполнения.
Встроенная задача PowerShell
Используйте встроенную задачу PowerShell для запуска команды или скрипта.
Пример:
tasks:
- name: ~/powershell
parameters:
command: Write-Host "Hello from Dev Box"
| Property | Обязательный | Type | Description |
|---|---|---|---|
| command | string | Выполняет встроенную команду. | |
| workingDirectory | string | Устанавливает рабочую папку для команды или скрипта. | |
| сценарий | string | Запускает локальный или удалённый скрипт PowerShell. | |
| scriptArgs | string | Приводит аргументы для сценария. | |
| scriptExecutionPolicy | string | Устанавливает политику выполнения скрипта. |
command
(струна)
Выполняет встроенную команду. Если вы предоставите command, scriptscriptArgs, , и scriptExecutionPolicy параметры игнорируются.
workingDirectory
(струна)
Устанавливает рабочую папку для команды или скрипта.
script
(струна)
Указывает путь к локальному или удалённому скрипту PowerShell для запуска. Этот параметр игнорируется при command предоставлении.
scriptArgs
(струна)
Приводит аргументы для сценария. Этот параметр игнорируется при command предоставлении.
scriptExecutionPolicy
(строка, по умолчанию: обход)
Устанавливает политику выполнения скрипта. Этот параметр игнорируется при command предоставлении.
Встроенная задача WinGet
Используйте встроенную задачу WinGet, чтобы напрямую установить пакет или применить конфигурационный файл WinGet.
Important
Встроенная задача в WinGet отличается от winget исполняемого файла. Встроенная задача использует cmdlet WinGet PowerShell.
Пример:
tasks:
- name: ~/winget
parameters:
package: GitHub.GitHubDesktop
version: 3.4.16
| Property | Обязательный | Type | Description |
|---|---|---|---|
| configurationFile | string | Указывает на локальный конфигурационный файл WinGet. | |
| downloadUrl | string | Скачивает конфигурационный файл с публичного URL. | |
| inlineConfigurationBase64 | string | Предоставляет конфигурационный файл WinGet, закодированный в Base64. | |
| package | string | Устанавливает пакет напрямую по названию. | |
| version | string | Устанавливает определённую версию пакета. |
configurationFile
(струна)
Указывает на YAML-файл конфигурации WinGet на локальной машине.
downloadUrl
(струна)
Указывает публичный URL для YAML-файла конфигурации WinGet. Файл загружается в путь в configurationFile.
inlineConfigurationBase64
(струна)
Предоставляет YAML-файл конфигурации WinGet, закодированный в Base64. Задача декодирует его в configurationFile, или в временный файл, если configurationFile не установлен.
package
(струна)
Устанавливает пакет напрямую по названию. Если вы используете исходный код конфигурационного файла, не нужно предоставлять package.
version
(струна)
Устанавливает определённую версию пакета. Если вы используете исходный код конфигурационного файла, не нужно предоставлять version.
Файлы task.yaml
Используйте task.yaml для определения повторно используемой задачи настройки в каталоге. Определение задачи описывает команду, метаданные, параметры, документацию и настройки выполнения задачи.
Когда вы определяете задачи кастомизации, вы определяете, какие задачи доступны разработчикам для использования в imagedefinition.yaml файлах или devbox.yaml файлах. Вы можете использовать определения задач для ограничения действий с высокими привилегиями, например, возможность запускать произвольные команды PowerShell.
Пример файла task.yaml
$schema: "1.0"
name: install-vsix-extension
description: Install a Visual Studio extension from a VSIX package.
author: Contoso Corporation
command: .\install-extension.ps1 -VsixPath {{vsixPath}}
documentationURL: https://contoso.example/devbox/install-vsix-extension
keywords:
- visual-studio
- extension
parameters:
vsixPath:
type: string
required: true
description: Path to the VSIX package.
timeout: 30
rebootRequired: false
documentation:
notes: Use a path that is available during task execution.
examples:
- name: install-vsix-extension
parameters:
vsixPath: .\extensions\contoso.vsix
Следующий пример показывает определение задачи, которое запускает команду PowerShell в конкретной рабочей директории:
$schema: "1.0"
name: powershell
description: Execute a PowerShell command.
author: Microsoft Corporation
command: .\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}
parameters:
command:
type: string
default: ""
required: true
description: The command to execute.
workingDirectory:
type: string
default: ""
required: false
description: The working directory in which to execute the command.
Свойства task.yaml
| Property | Обязательный | Type | Description |
|---|---|---|---|
| $schema | ✅ | string | Указывает версию схемы для файла задачи. |
| name | ✅ | string | Определяет идентификатор задачи. |
| command | ✅ | string | Предоставляет команду PowerShell, реализующую задачу. |
| description | string | Описывает задачу. | |
| автор | string | Определяет автора задания. | |
| issueУведомлениеEmail | string | Предоставляет контактное письмо по вопросам задач. | |
| documentationURL | string | Ссылки на документацию по задачам. | |
| licenseURL | string | Ссылки на лицензию задачи. | |
| Ключевые слова | массив строк | Список ключевых слов поиска для задачи. | |
| parameters | object | Определяет входные данные, которые принимает задача. | |
| timeout | Целое число | Устанавливает тайм-аут по умолчанию в минутах. | |
| документация | object | Добавляет заметки и примеры вызова задач для потребителей. | |
| перезагрузкаТребуется | boolean | Указывает, требует ли задача перезагрузки после выполнения. |
$schema
(верёвка, требуется)
Указывает версию схемы для определения задачи. Современные примеры используют 1.0.
name
(верёвка, требуется)
Определяет идентификатор, используемый для ссылки на задачу из imagedefinition.yaml или devbox.yaml файлов. Имя должно быть уникальным в контексте каталога, в котором существует задача.
Используйте те же ограничения по названию, что и другие артефакты кастомизации Dev Box. Название должно состоять от 3 до 63 символов, начинаться с буквенно-цифрового символа и содержать только буквенно-цифровые символы, -, ., или _. Символ / зарезервирован.
name: install-vsix-extension
command
(верёвка, требуется)
Указывает команду PowerShell, реализующую задачу. Команда выполняется в Windows PowerShell на локальном компьютере. Используйте {{parameterName}} синтаксис для ссылки на значения параметров в командной строке.
command: .\install-extension.ps1 -VsixPath {{vsixPath}}
Рассмотрим пример.
command: .\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}
description
(струна)
Описывает цель задачи.
description: This task executes a PowerShell command.
author
(струна)
Определяет автора задачи для аудита и устранения неполадок.
author: Contoso Corporation
issueNotificationEmail
(струна)
Предоставляет адрес электронной почты, к которому пользователи могут обратиться при возникновении проблем с задачей. Функциональность продукта не потребляет эту ценность.
documentationURL
(струна)
Ссылки на документацию по заданию.
documentationURL: https://link.to/documentation
licenseURL
(струна)
Ссылки на лицензию задачи.
licenseURL: https://link.to/license
keywords
(массив строк)
Перечисляет ключевые слова, которые помогают потребителям найти задание.
parameters
(объект)
Определяет именованные входные параметры задачи. Каждый дочерний элемент представляет имя параметра и может определять тип параметра, разрешённые значения, значение по умолчанию, описание, правила валидации, ограничения по длине и необходимость параметра.
parameters:
vsixPath:
type: string
required: true
description: Path to the VSIX package.
Свойства определения параметров
| Property | Обязательный | Type | Description |
|---|---|---|---|
| тип | ✅ | string | Указывает тип входных данных. |
| разрешено | массив строк | Ограничивает вход фиксированным списком значений строк. | |
| по умолчанию | String, boolean или число | Устанавливает значение по умолчанию для входа. | |
| description | string | Описывает входные данные. | |
| validationRegex | string | Проверяет значения строк по регулярному выражению. | |
| minLength | Целое число | Устанавливает минимальную длину для значений строк. | |
| maxLength | Целое число | Устанавливает максимальную длину для значений строк. | |
| required | boolean | Указывает, необходимо ли предоставить вход. |
type
(строка, требуется, допустимые значения: строка, булева, число)
Указывает тип входных данных.
allowed
(массив строк)
Ограничивает вход фиксированным набором разрешённых значений строк.
default
(струна, булев или число)
Устанавливает значение по умолчанию для входа.
description
(струна)
Описывает входные данные.
validationRegex
(струна)
Определяет регулярное выражение, которому должны совпадать значения строк.
minLength
(целое число)
Устанавливает минимальную длину для значений строк.
maxLength
(целое число)
Устанавливает максимальную длину для значений строк.
required
(булевый)
Указывает, необходимо ли предоставить вход. Если опущено, значение по умолчанию равно false.
timeout
(целое число, по умолчанию: 30)
Устанавливает тайм-аут задачи по умолчанию за минуты. Если не указать значение, по умолчанию — 30 минут.
timeout: 30
documentation
(объект)
Предоставляет заметки и примеры вызовов, которые пользователи задач могут использовать при добавлении задачи в определение изображения.
Свойства объекта документации
| Property | Обязательный | Type | Description |
|---|---|---|---|
| notes | string | Предоставляет рекомендации для пользователей задания. | |
| Примеры | Массив объектов задач | Показывает, как вызвать задачу из YAML-файла. |
notes
(струна)
Добавляет рекомендации или оговорки для пользователей задачи.
examples
(массив объектов задач)
Показывает примеры вызовов задач, используя ту же схему, что и записи задач в imagedefinition.yaml.
rebootRequired
(булевый, по умолчанию: ложный)
Указывает, требует ли задача перезагрузки после выполнения.
Связанный контент
-
Настраивайте настройки команды — создавайте
imagedefinition.yamlфайлы и применяйте их в пуле dev box. -
Настройте файл настройки пользователя для вашего devbox — Автор и загрузка личного
devbox.yamlфайла. -
Настраивайте задачи для кастомизации Dev Box — авторизуйте
task.yamlфайлы и публикуйте их через каталог. - Подключение к ресурсам Azure или клонирование частных репозиториев