Поделиться через


Справочник по схеме настроек

В этой справочной статье содержатся подробные сведения о imagedefinition.yaml файлах, task.yaml используемых для настройки Microsoft Dev Box. Разработчики могут использовать эти файлы YAML для определения задач для подготовки и настройки полей разработки. Файлы помогают обеспечить согласованность и эффективность в средах разработки. В этой статье рассматриваются схема, обязательные атрибуты и примеры для обоих типов файлов, а также встроенные задачи, такие как PowerShell и WinGet.

Файлы Imagedefinition.yaml

Вы можете использовать файл YAML Dev Box для определения задач настройки, которые должны выполняться во время создания Dev Box. devbox.yaml Файл может находиться в том же репозитории, что и основной источник, который использует команда разработчиков, или файл может находиться в централизованном репозитории конфигураций.

Пример определения образа YAML:

$schema: 1.0
name: project-sample-1
image: MicrosoftWindowsDesktop_windows-ent-cpc_win11-21h2-ent-cpc-m365
tasks:
- name: "powershell"
  inputs:
    command:

имя

Обязательно: Это понятное имя определения изображения связано с этим devbox.yaml файлом. Этот параметр определяет имя определения образа, которое доступно при создании и обновлении пулов.

name: myVSDevBox

образ

Обязательно: Изображение, которое вы хотите использовать в качестве базового образа для определения изображения, может быть изображением Marketplace:

image: MicrosoftWindowsDesktop_windows-ent-cpc_win11-21h2-ent-cpc-m365

Или это может быть пользовательский образ из подключенного экземпляра коллекции вычислений Azure:

image: galleryname/imagename@version

Сведения о присоединении экземпляра коллекции вычислений Azure к центру разработки см. в статье "Настройка коллекции вычислений Azure для Microsoft Dev Box".

Чтобы получить список образов, к которым имеет доступ центр разработки, используйте следующую az cli команду:

az devcenter admin image list --dev-center-name CustomizationsImagingHQ --resource-group TeamCustomizationsImagingRG --query "[].name"

Вам потребуется расширение центра az cli разработки:

az extension add --name devcenter

buildProperties

Эта коллекция объектов состоит из свойств сборки, которые можно использовать для настройки процесса сборки для образа.

networkConnection

Необязательный: Указывает сетевое подключение для использования во время создания образа. Это сетевое подключение позволяет задачам настройки получать доступ к ресурсам, таким как учетные записи хранения или репозитории, доступные из указанной сети. Сетевое подключение должно быть подключено к Центру разработки, прежде чем его можно будет использовать для создания образа.

Пример:

buildProperties:
    networkConnection: "my-westus3"

задачи

Обязательно: Эта коллекция объектов состоит из задач настройки Dev Box, выполняемых при подготовке поля разработки. Определенные входные данные, предоставляемые задачей, зависят от задачи.

Пример:

tasks:
- name: winget
  parameters:
    package: GitHub.GitHubDesktop

Все задачи поддерживают timeout свойство, которое является необязательным.

Пример:

tasks:
- name: powershell
  timeout: 1800 # in seconds
  parameters:
    command: <command>

Встроенные задачи

PowerShell и WinGet доступны как встроенные задачи. Их можно вызывать напрямую, не присоединяя каталог на уровне центра разработки, который определяет реализацию этих задач.

Встроенная задача WinGet

Эта встроенная задача применяет конфигурацию WinGet к поле разработки.

Параметры:

  • configurationFile:

    • Тип: string
    • Путь к файлу YAML конфигурации WinGet. Файл должен находиться на локальном компьютере.
    • Обязательно: false
  • downloadUrl:

    • Тип: string
    • Общедоступный URL-адрес, в котором хранится файл YAML конфигурации. Файл загружается в путь, configurationFile указывающий.
    • Обязательно: false
  • inlineConfigurationBase64:

    • Тип: string
    • Строка в кодировке Base64 файла YAML конфигурации WinGet. Файл декодируется в путь, указывающий configurationFile или временный файл, если он не указан.
    • Обязательно: false
  • package:

    • Тип: string
    • Имя устанавливаемого пакета.
    • Если файл YAML конфигурации предоставляется в других параметрах, имя пакета не требуется.
    • Обязательно: false
  • version

    • Тип: string
    • Версия пакета для установки.
    • Если файл YAML конфигурации предоставляется в других параметрах, для версии пакета не требуется.
    • Обязательно: false

Встроенная задача PowerShell

Эта встроенная задача выполняет команду PowerShell.

Параметры:

  • command:
    • Тип: string
    • Выполняемая команда
    • Обязательно: true

Файлы task.yaml

Задачи настройки — это многократно используемые единицы кода установки или конфигурации среды. Разработчики используют скрипты PowerShell для их записи и использования task.yaml файла метаданных для описания. Разработчики используют эти задачи для настройки поля разработки, ссылаясь на них из devbox.yaml файла.

При определении задач настройки можно определить задачи, доступные разработчикам для использования в devbox.yaml файлах. Вы можете ограничить действия с высоким уровнем привилегий, например возможность выполнения любой команды PowerShell.

В следующем примере определения задачи выполняется команда PowerShell в определенном рабочем каталоге:

name: powershell
description: Execute a powershell command
author: Microsoft Corporation
command: ".\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}"
inputs:
  command:
    type: string
    defaultValue: ""
    required: true
    description: The command to execute
  workingDirectory:
    type: string
    defaultValue: ""
    required: false
    description: The working directory to execute the command in

Атрибуты

имя

Обязательно: Этот уникальный идентификатор используется для ссылки на задачу из devbox.yaml. Имя должно быть уникальным в контексте каталога, в котором существует задача.

Именование должно соответствовать существующим ограничениям ресурсов Azure. Имя должно быть от 3 до 63 символов. Он должен начинаться с буквенно-цифрового символа. Имя должно состоять только из буквенно-цифровых символов и "-", "." или "_". Символ "/" зарезервирован.

name: powershell

описание

Необязательный: Этот атрибут описывает задачу.

description: This task executes a powershell command

входные данные

Обязательно: Этот атрибут перечисляет параметры, которые эта задача принимает в качестве входных данных из devbox.yaml файла и использует во время выполнения команды. Каждый родительский элемент представляет имя параметра и поддерживает следующие ключи:

  • type (обязательно): входной тип данных для этого параметра. Может иметь значение string или int.
  • defaultValue (обязательно): значение по умолчанию, которое принимает этот параметр.
  • required (обязательно): ключ, указывающий, является ли этот параметр необязательным или обязательным.
  • description (обязательно): описание того, что представляет этот параметр.
inputs:
  command:
    type: string
    defaultValue: ""
    required: true
    description: The command to execute

Приказ

Обязательно: Эта команда используется для выполнения этой задачи. Указанная командная строка выполняется в Windows PowerShell на локальном компьютере.

command: ".\runcommand.ps1

Ссылочные переменные в командах

Чтобы ссылаться на параметры в команде, укажите имя переменной в двойных скобках, например {{parameter_name}}. Значения этих переменных интерполируются перед выполнением команды.

command: ".\runcommand.ps1 -command {{command}} -workingDirectory {{workingDirectory}}"

таймаут

Необязательный: Эта переменная указывает максимальное время (в минутах), чтобы ждать завершения выполнения задачи до истечения времени ожидания задачи. Значение по умолчанию — 30 минут.

timeout: 30

автор

Необязательный: Эта переменная идентифицирует автора задачи, чтобы помочь в аудите и устранении неполадок.

author: Contoso Corporation

документацияURL

Необязательный: Эта переменная ссылается на документацию для этой задачи.

documentationURL: "https://link.to/documentation"

licenseURL

Необязательный: Эта переменная ссылается на лицензию для этой задачи.

licenseURL: "https://link.to/license"