Справка по задачам Реестра контейнеров Azure: YAML
Определение многошаговой задачи в службе "Задачи ACR" предоставляет ориентированный на контейнеры вычислительный примитив, направленный на сборку, тестирование и исправление контейнеров. В этой статье рассматриваются команды, параметры, свойства и синтаксис для YAML-файлов, определяющих многошаговые задачи.
Эта статья содержит справочные сведения о создании YAML-файлов многошаговых задач для службы "Задачи ACR". Общие сведения о задачах ACR см. в обзоре службы "Задачи ACR".
Формат файла acr-task.yaml
Служба "Задачи ACR" поддерживает объявление многошаговой задачи в стандартном синтаксисе YAML. Шаги задачи определяются в YAML-файле. После этого задачу можно запустить вручную, передав этот файл в команду az acr run. Также можно использовать этот файл, чтобы с помощью команды az acr task create создать задачу, которая будет вызываться автоматически при фиксации в Git, обновлении базового образа или по расписанию. Несмотря на то, что в этой статье acr-task.yaml
рассматривается как файл, содержащий шаги, служба "Задачи ACR" поддерживает любое допустимое имя файла с поддерживаемым расширением.
Примитивами acr-task.yaml
верхнего уровня являются свойства задачи, типы шагов и свойства шага.
- Свойства задачи применяются для всех шагов на протяжении всего выполнения задачи. Существует несколько глобальных свойств задачи, в том числе:
version
stepTimeout
workingDirectory
- Типы шагов задачи представляют собой типы действий, которые могут быть выполнены в задаче. Существует три типа шагов:
build
push
cmd
- Свойства шага задачи — параметры, которые применяются к отдельному шагу. Существует несколько свойств шага, в том числе:
startDelay
timeout
when
- ...и многие другие.
Ниже приведен пример базового формата файла acr-task.yaml
, включая некоторые общие свойства шага. Хотя он не является исчерпывающим представлением всех доступных свойств шага или использования типа шага, он предоставляет краткий обзор базового формата файла.
version: # acr-task.yaml format version.
stepTimeout: # Seconds each step may take.
steps: # A collection of image or container actions.
- build: # Equivalent to "docker build," but in a multi-tenant environment
- push: # Push a newly built or retagged image to a registry.
when: # Step property that defines either parallel or dependent step execution.
- cmd: # Executes a container, supports specifying an [ENTRYPOINT] and parameters.
startDelay: # Step property that specifies the number of seconds to wait before starting execution.
Поддерживаемые расширения имен файлов задач
Для службы "Задачи ACR" зарезервированы несколько расширений имен файлов, включая .yaml
, которые будут обрабатываться как файл задачи. Любое расширение, отсутствующее в следующем списке, служба "Задачи ACR" относит к Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML — единственный формат файлов, который сейчас поддерживает служба "Задачи ACR". Другие расширения имен файлов зарезервированы для возможной будущей поддержки.
Запуск примеров задач
В следующих разделах этой статьи приводятся ссылки на несколько примеров файлов задач. Примеры задач расположены в общедоступном репозитории GitHub Azure-Samples/acr-tasks. Их можно запустить с помощью команды az acr run в Azure CLI. Примеры команд выглядят приблизительно так:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Форматирование в примерах команд предполагает, что вы уже настроили реестр по умолчанию в Azure CLI, поэтому параметр --registry
опускается. Чтобы настроить реестр по умолчанию, воспользуйтесь командой az configс параметром set
, который принимает пару "ключ — значение" defaults.acr=REGISTRY_NAME
.
Например, чтобы настроить Azure CLI с реестром myregistry по умолчанию, выполните следующую команду:
az config set defaults.acr=myregistry
Свойства задачи
Свойства задачи обычно представлены в верхней части файла acr-task.yaml
и являются глобальными, то есть применяются в процессе выполнения всех шагов задачи. Некоторые из этих глобальных свойств могут быть переопределены в рамках отдельного шага.
Свойство | Тип | Необязательно | Description | Поддерживается ли переопределение | Default value |
---|---|---|---|---|---|
version |
строка | Да | Версия файла acr-task.yaml , проанализированного службой "Задачи ACR". В то время как служба "Задачи ACR" стремится поддерживать обратную совместимость, это значение позволяет службе поддерживать совместимость в пределах заданной версии. Если значение не указано, по умолчанию используется v1.0.0 . |
Н/П | v1.0.0 |
stepTimeout |
int (секунды) | Да | Максимальное число секунд выполнения шага. Если свойство stepTimeout указывается в задаче, оно задает свойство по умолчанию timeout для всех шагов. Если свойство timeout указывается на шаге, оно переопределяет свойство stepTimeout , предоставляемое задачей.Сумма значений времени ожидания шага для задачи должна равняться значению свойства timeout выполнения задачи (например, задается путем передачи --timeout в команду az acr task create ). Если значение timeout выполнения задачи меньше, оно будет иметь приоритет. |
Да | 600 (10 минут) |
workingDirectory |
строка | Да | Рабочий каталог контейнера во время выполнения. Если это свойство указывается в задаче, оно задает свойство по умолчанию workingDirectory для всех шагов. Если это свойство указывается на шаге, оно переопределяет свойство, предоставляемое задачей. |
Да | c:\workspace в Windows или /workspace в Linux. |
env |
[строка, строка, ...] | Да | Массив строк в формате key=value , определяющий переменные среды для задачи. Если это свойство указывается в задаче, оно задает свойство по умолчанию env для всех шагов. Если это свойство указывается на шаге, оно переопределяет все переменные среды, унаследованные от задачи. |
Да | Не допускается |
secrets |
[secret, secret, ...] | Да | Массив объектов secret. | No | нет |
networks |
[network, network, ...] | Да | Массив объектов network. | No | нет |
volumes |
[volume, volume, ...] | Да | Массив объектов volume. Указывает тома с исходным содержимым для подключения к шагу. | No | нет |
secret
Объект secret имеет следующие свойства.
Свойство | Тип | Необязательно | Description | Default value |
---|---|---|---|---|
id |
строка | Нет | Идентификатор секрета. | нет |
keyvault |
строка | Да | URL-адрес секрета Azure Key Vault. | нет |
clientID |
строка | Да | Идентификатор клиента назначаемого пользователем управляемого удостоверения для ресурсов Azure. | нет |
сеть
Объект network имеет следующие свойства.
Свойство | Тип | Необязательно | Description | Default value |
---|---|---|---|---|
name |
строка | Нет | Имя сети. | нет |
driver |
строка | Да | Драйвер для управления сетью. | нет |
ipv6 |
bool | Да | Определяет, включена ли сеть IPv6. | false |
skipCreation |
bool | Да | Определяет, следует ли пропустить создание сети. | false |
isDefault |
bool | Да | Определяет, предоставляется ли сеть по умолчанию реестром контейнеров Azure. | false |
том
Объект volume имеет следующие свойства.
Свойство | Тип | Необязательно | Description | Default value |
---|---|---|---|---|
name |
строка | Нет | Имя подключаемого тома. Может содержать только буквы, цифры, а также символы "-" и "_". | нет |
secret |
map[string]string | No | Каждый ключ карты представляет собой имя файла, созданного и заполняемого на томе. Каждое значение представляет собой строковую версию секрета. Значения секрета должны иметь кодировку Base64. | нет |
Типы шагов задач
Служба "Задачи ACR" поддерживает три типа шагов. Каждый тип шага поддерживает несколько свойств, подробно описанных в соответствующих разделах о каждом из типов.
Тип шага | Description |
---|---|
build |
Создает образ контейнера с использованием знакомого синтаксиса docker build . |
push |
Выполняет команду docker push для отправки только что созданных или перемаркированных образов в реестр контейнеров. Поддерживается Реестр контейнеров Azure, другие закрытые реестры, а также общедоступный реестр Docker Hub. |
cmd |
Запускает контейнер в качестве команды с параметрами, передаваемыми в [ENTRYPOINT] контейнера. Тип шага cmd поддерживает такие параметры, как env , detach и другие знакомые параметры команды docker run , что обеспечивает возможность модульного и функционального тестирования с параллельным выполнением контейнеров. |
сборка
Сборка образа контейнера. Тип шага build
представляет мультитенантное защищенное средство запуска docker build
в облаке в качестве примитива первого класса.
Синтаксис: build
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Выполните команду az acr run, чтобы получить версию docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Добавьте переменную DOCKER_BUILDKIT=1
среды в yaml-файл для включения buildkit
и использования secret
buildkit
.
Тип шага build
поддерживает параметры, описанные в следующей таблице. Тип шага build
также поддерживает все параметры сборки из команды docker build, такие как --build-arg
, для определения переменных во время сборки.
Параметр | Описание | Необязательно |
---|---|---|
-t | --image |
Определяет полное значение image:tag созданного образа.Так как образы могут использоваться для внутренних проверок задач, например функциональных тестов, не все образы требуют выполнения push для отправки в реестр. Но чтобы создать экземпляр образа в пределах выполнения задачи, необходимо указать имя образа для ссылки.В отличие от az acr build , выполнение задач ACR не предоставляет поведения по умолчанию команды push. При использовании службы "Задачи ACR" стандартный сценарий предполагает возможность создания, проверки и последующей отправки образа. Сведения о том, как при необходимости отправлять созданные образы, см. в описании команды push. |
Да |
-f | --file |
Позволяет указать файл Dockerfile, передаваемый в docker build . Если этот параметр не указан, по умолчанию принимается Dockerfile в корне контекста. Чтобы указать файл Dockerfile, передайте имя файла относительно корня контекста. |
Да |
context |
Корневой каталог, передаваемый в docker build . В качестве корневого каталога каждой задачи задается общий каталог workingDirectory, который включает в себя корень связанного клонированного каталога Git. |
No |
Свойства: build
Тип шага build
поддерживает следующие свойства. Сведения об этих свойствах см. в разделе Свойства шага задачи этой статьи.
Свойства | Тип | Обязательное поле |
---|---|---|
detach |
логический | Необязательно |
disableWorkingDirectoryOverride |
логический | Необязательно |
entryPoint |
строка | Необязательно |
env |
[строка, строка, ...] | Необязательно |
expose |
[строка, строка, ...] | Необязательно |
id |
строка | Необязательно |
ignoreErrors |
логический | Необязательно |
isolation |
строка | Необязательно |
keep |
логический | Необязательно |
network |
объект | Необязательно |
ports |
[строка, строка, ...] | Необязательно |
pull |
логический | Необязательно |
repeat |
INT | Необязательно |
retries |
INT | Необязательно |
retryDelay |
int (секунды) | Необязательно |
secret |
объект | Необязательно |
startDelay |
int (секунды) | Необязательно |
timeout |
int (секунды) | Необязательно |
volumeMount |
объект | Необязательно |
when |
[строка, строка, ...] | Необязательно |
workingDirectory |
строка | Необязательно |
Примеры: build
Сборка образа — контекст в корне
az acr run -f build-hello-world.yaml https://github.com/AzureCR/acr-tasks-sample.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile .
Сборка образа — контекст в подкаталоге
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
Динамическая переменная, передаваемая в задачах ACR
При работе с задачами реестра контейнеров Azure (ACR) может потребоваться передать в процесс сборки разные значения, не изменив определение задачи с помощью флага --set
с командой az acr task run
.
Пример. Настройка тега изображения во время выполнения
Предположим, у вас есть задача ACR, определенная в acr-task.yml
файле с заполнителем для тега изображения:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
Вы можете активировать задачу и задать tag
переменную v2
во время выполнения с помощью следующей команды Azure CLI:
az acr task run --registry myregistry --name mytask --set tag=v2
Эта команда запустит задачу ACR с именем mytask
и создаст изображение с помощью тега v2
, переопределяя заполнитель в acr-task.yml
файле.
Этот подход позволяет настраивать в конвейерах CI/CD, что позволяет динамически настраивать параметры в зависимости от текущих потребностей без изменения определений задач.
отправка
Отправляет командой один или несколько из только что созданных или перемаркированных образов в реестр контейнеров. Команда push поддерживается для таких закрытых реестров, как Реестр контейнеров Azure, а также общедоступный реестр Docker Hub.
Синтаксис: push
Тип шага push
поддерживает коллекцию образов. Синтаксис коллекции YAML поддерживает встроенные и вложенные форматы. Отправка одного образа обычно представляется с помощью встроенного синтаксиса:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Для повышения удобочитаемости используйте вложенный синтаксис при отправке нескольких образов:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Свойства: push
Тип шага push
поддерживает следующие свойства. Сведения об этих свойствах см. в разделе Свойства шага задачи этой статьи.
Свойство | Тип | Обязательное поле |
---|---|---|
env |
[строка, строка, ...] | Необязательно |
id |
строка | Необязательно |
ignoreErrors |
логический | Необязательно |
startDelay |
int (секунды) | Необязательно |
timeout |
int (секунды) | Необязательно |
when |
[строка, строка, ...] | Необязательно |
Примеры: push
Отправка нескольких образов командой push
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
Сборка, отправка и запуск
az acr run -f build-run-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
- push:
- $Registry/hello-world:$ID
- cmd: $Registry/hello-world:$ID
cmd
Тип шага cmd
запускает контейнер.
Синтаксис: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Свойства: cmd
Тип шага cmd
поддерживает следующие свойства:
Свойство | Тип | Обязательное поле |
---|---|---|
detach |
логический | Необязательно |
disableWorkingDirectoryOverride |
логический | Необязательно |
entryPoint |
строка | Необязательно |
env |
[строка, строка, ...] | Необязательно |
expose |
[строка, строка, ...] | Необязательно |
id |
строка | Необязательно |
ignoreErrors |
логический | Необязательно |
isolation |
строка | Необязательно |
keep |
логический | Необязательно |
network |
объект | Необязательно |
ports |
[строка, строка, ...] | Необязательно |
pull |
логический | Необязательно |
repeat |
INT | Необязательно |
retries |
INT | Необязательно |
retryDelay |
int (секунды) | Необязательно |
secret |
объект | Необязательно |
startDelay |
int (секунды) | Необязательно |
timeout |
int (секунды) | Необязательно |
volumeMount |
объект | Необязательно |
when |
[строка, строка, ...] | Необязательно |
workingDirectory |
строка | Необязательно |
Сведения об этих свойствах см. в разделе Свойства шага задачи этой статьи.
Примеры: cmd
Запуск образа hello-world
Эта команда выполняет файл задачи hello-world.yaml
, который ссылается на образ hello-world в Docker Hub.
az acr run -f hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: mcr.microsoft.com/hello-world
Запуск образа bash и вывод командой echo hello world
Эта команда выполняет файл задачи bash-echo.yaml
, который ссылается на образ bash в Docker Hub.
az acr run -f bash-echo.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo hello world
Тег для запуска определенного образа bash
Чтобы запустить конкретную версию образа, укажите тег в команде cmd
.
Эта команда выполняет файл задачи bash-echo-3.yaml
, который ссылается на образ bash:3.0 в Docker Hub.
az acr run -f bash-echo-3.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash:3.0 echo hello world
Запуск пользовательских образов
Тип шага cmd
ссылается на образы с использованием стандартного формата docker run
. Предполагается, что образы, которые не начинаются с указания реестра, поступают из docker.io. Предыдущий пример может быть также представлен следующим образом:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Применяя стандартное соглашение о ссылках на образы docker run
, cmd
может запускать образы, находящиеся в любом частном реестре или общедоступном реестре Docker Hub. Если вы ссылаетесь на образы в том же реестре, в котором выполняется задача ACR, не нужно указывать учетные данные реестра.
Запустите образ из реестра контейнеров Azure. В следующем примере предполагается, что у вас есть реестр с именем
myregistry
и пользовательский образmyimage:mytag
.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Обобщение ссылки на реестр с помощью переменной Run или псевдонима
Вместо непосредственного указания имени реестра в файле
acr-task.yaml
можно улучшить его переносимость с помощью переменной Run или псевдонима. ПеременнаяRun.Registry
или псевдоним$Registry
развертываются во время выполнения как имя реестра, в котором выполняется задача.Например, чтобы обобщить предыдущую задачу для работы в любом реестре контейнеров Azure, используйте ссылку на переменную $Registry в имени образа:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Доступ к томам secret
С помощью свойства volumes
можно указывать тома и содержащиеся на них секреты для шагов build
и cmd
в задаче. В рамках каждого шага необязательное свойство volumeMounts
содержит перечисление томов и соответствующих путей к контейнеру для подключения к контейнеру на этом шаге. Секреты предоставляются в виде файлов по пути подключения для каждого тома.
Выполните задачу и подключите для шага два секрета, один из которых хранится в хранилище ключей, а второй задается в командной строке:
az acr run -f mounts-secrets.yaml --set-secret mysecret=abcdefg123456 https://github.com/Azure-Samples/acr-tasks.git
# This template demonstrates mounting a custom volume into a container at a CMD step
secrets:
- id: sampleSecret
keyvault: https://myacbvault2.vault.azure.net/secrets/SampleSecret # Replace with valid keyvault with access
volumes:
- name: mysecrets
secret:
mysecret1: {{.Secrets.sampleSecret | b64enc}}
mysecret2: {{.Values.mysecret | b64enc}}
steps:
- cmd: bash cat /run/test/mysecret1 /run/test/mysecret2
volumeMounts:
- name: mysecrets
mountPath: /run/test
Свойства шага задачи
Каждый тип шага поддерживает несколько свойств, подходящих для его типа. В следующей таблице определены все доступные свойства шагов. Не все типы шагов поддерживают все свойства. Чтобы узнать, какие из этих свойств доступны для каждого типа шага, см. разделы справки по типам шагов cmd, build и push.
Свойство | Тип | Необязательно | Description | Default value |
---|---|---|---|---|
detach |
bool | Да | Определяет, следует ли отсоединить контейнер при запуске. | false |
disableWorkingDirectoryOverride |
bool | Да | Определяет, следует ли отключить функцию переопределения workingDirectory . В сочетании с workingDirectory позволяет получить полный контроль над рабочим каталогом контейнера. |
false |
entryPoint |
строка | Да | Переопределяет [ENTRYPOINT] контейнера шага. |
нет |
env |
[строка, строка, ...] | Да | Массив строк в формате key=value , определяющий переменные среды для шага. |
нет |
expose |
[строка, строка, ...] | Да | Массив портов, доступных из контейнера. | нет |
id |
строка | Да | Однозначно определяет шаг в рамках задачи. Другие шаги в задаче могут ссылаться на id шага, например для проверки зависимостей с помощью when .id также является именем запущенного контейнера. Процессы, запущенные в других контейнерах в задаче, могут ссылаться на id в качестве имени его узла DNS, или же для доступа к нему с помощью журналов docker [id], например. |
acb_step_%d , где %d — это отсчитываемый от нуля сверху вниз индекс шага в файле YAML. |
ignoreErrors |
bool | Да | Определяет, следует ли помечать шаг как успешный независимо от того, произошла ли ошибка во время выполнения контейнера. | false |
isolation |
строка | Да | Уровень изоляции контейнера. | default |
keep |
bool | Да | Следует ли сохранить контейнер этого шага после выполнения. | false |
network |
объект | Да | Определяет сеть, в которой выполняется контейнер. | нет |
ports |
[строка, строка, ...] | Да | Массив портов, опубликованных из контейнера на узле. | нет |
pull |
bool | Да | Определяет, следует ли принудительно извлекать контейнер перед его выполнением, чтобы предотвратить любые операции кэширования. | false |
privileged |
bool | Да | Определяет, следует ли запускать контейнер в привилегированном режиме. | false |
repeat |
INT | Да | Количество повторных попыток выполнения контейнера. | 0 |
retries |
INT | Да | Количество повторных попыток при сбое выполнения контейнера. Повторная попытка выполняется только в том случае, если код выхода контейнера не равен нулю. | 0 |
retryDelay |
int (секунды) | Да | Задержка между повторными попытками выполнения контейнера в секундах. | 0 |
secret |
объект | Да | Определяет секрет Azure Key Vault или управляемое удостоверение для ресурсов Azure. | нет |
startDelay |
int (секунды) | Да | Задержка выполнения шага в секундах. | 0 |
timeout |
int (секунды) | Да | Максимальное число секунд, в течение которого может выполняться шаг перед завершением. | 600 |
when |
[строка, строка, ...] | Да | Настраивает зависимость шага от одного или нескольких других шагов в пределах задачи. | нет |
user |
строка | Да | Имя пользователя или UID контейнера. | нет |
workingDirectory |
строка | Да | Задает рабочий каталог для шага. По умолчанию служба "Задачи ACR" создает корневой каталог в качестве рабочего каталога. Но если сборка включает несколько шагов, для предыдущих и последующих шагов можно использовать общие артефакты, указав один и тот же рабочий каталог. | c:\workspace в Windows или /workspace в Linux. |
volumeMount
Объект volumeMount имеет следующие свойства.
Свойство | Тип | Необязательно | Description | Default value |
---|---|---|---|---|
name |
строка | Нет | Имя подключаемого тома. Должно в точности соответствовать имени в свойстве volumes . |
нет |
mountPath |
строка | no | Абсолютный путь для подключения файлов в контейнере. | нет |
Примеры. Свойства шага задачи
Пример: id
Создайте два образа, используя экземпляры образа функционального теста. Каждый шаг идентифицируется уникальным id
, на который ссылаются другие шаги задачи в свойстве when
.
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
Пример: when
Свойство when
указывает зависимость шага от других шагов в пределах задачи. Оно поддерживает два значения параметров:
when: ["-"]
— указывает отсутствие зависимости от других шагов. Шаг с указаниемwhen: ["-"]
начнет выполняться немедленно и обеспечивает параллельное выполнение шагов.when: ["id1", "id2"]
— указывает, что шаг зависит от шагов сid
id1 иid
id2. Этот шаг не будет выполнен до тех пор, пока не будут завершены оба шага id1 и id2.
Если свойство when
не указано в шаге, этот шаг зависит от завершения предыдущего шага в файле acr-task.yaml
.
Последовательное выполнение шагов без свойства when
:
az acr run -f when-sequential-default.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- cmd: bash echo one
- cmd: bash echo two
- cmd: bash echo three
Последовательное выполнение шагов со свойством when
:
az acr run -f when-sequential-id.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
- id: step1
cmd: bash echo one
- id: step2
cmd: bash echo two
when: ["step1"]
- id: step3
cmd: bash echo three
when: ["step2"]
Параллельное создание образов
az acr run -f when-parallel.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
Параллельное создание образов и тестирование зависимостей:
az acr run -f when-parallel-dependent.yaml https://github.com/Azure-Samples/acr-tasks.git
version: v1.1.0
steps:
# build website and func-test images, concurrently
- id: build-hello-world
build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
when: ["-"]
- id: build-hello-world-test
build: -t hello-world-test -f hello-world.dockerfile .
when: ["-"]
# run built images to be tested
- id: hello-world
cmd: $Registry/hello-world:$ID
when: ["build-hello-world"]
- id: func-tests
cmd: hello-world-test
env:
- TEST_TARGET_URL=hello-world
when: ["hello-world"]
# push hello-world if func-tests are successful
- push: ["$Registry/hello-world:$ID"]
when: ["func-tests"]
Переменные run
Служба "Задачи ACR" содержит набор переменных по умолчанию, доступных для шагов задачи при их выполнении. К этим переменным можно получить доступ с использованием формата {{.Run.VariableName}}
, где VariableName
— одна из следующих переменных:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
Имена переменных, как правило, соответствуют их предназначению. Ниже приводится подробное описание часто используемых переменных. Начиная с версии YAML v1.1.0
, вместо большинства переменных Run можно использовать сокращенный стандартный псевдоним задачи. Например, вместо {{.Run.Registry}}
можно использовать псевдоним $Registry
.
Run.ID
Каждая команда Run, выполняемая с помощью az acr run
или по триггеру задач, созданных с помощью az acr task create
, обладает уникальным идентификатором. Идентификатор представляет выполняющуюся в текущий момент команду Run.
Обычно используется для уникальной маркировки образа:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
Уникальный идентификатор общего тома, который доступен для всех шагов задачи. Такой том подключается к c:\workspace
в Windows или к /workspace
в Linux.
Run.Registry
Полное имя сервера реестра. Обычно используется для универсальной ссылки на реестр, в котором выполняется задача.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
Имя реестра контейнеров. Обычно используется на шагах задачи, не требующих полного имени сервера, таких как шаги cmd
, на которых выполняются команды Azure CLI в реестре.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
Текущее время в формате UTC, когда начался запуск.
Run.Commit
Идентификатор фиксации для задачи, активируемой по фиксации в репозитории GitHub.
Run.Branch
Имя ветви для задачи, активируемой по фиксации в репозитории GitHub.
Aliases
Начиная с версии v1.1.0
, служба "Задачи ACR" поддерживает псевдонимы, доступные для шагов задачи при их выполнении. Концепция их применения схожа с псевдонимами (ярлыками команд), которые поддерживаются в bash и других командных оболочках.
С помощью псевдонима можно запустить любую команду или группу команд (в том числе с параметрами и именами файлов), введя всего одно слово.
Служба "Задачи ACR" поддерживает несколько стандартных псевдонимов, а также пользовательские псевдонимы.
Стандартные псевдонимы
Следующие псевдонимы задач можно использовать вместо переменных Run.
Псевдоним | Переменная Run |
---|---|
ID |
Run.ID |
SharedVolume |
Run.SharedVolume |
Registry |
Run.Registry |
RegistryName |
Run.RegistryName |
Date |
Run.Date |
OS |
Run.OS |
Architecture |
Run.Architecture |
Commit |
Run.Commit |
Branch |
Run.Branch |
В шагах задачи укажите перед псевдонимом директиву $
, как показано в следующем примере:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Псевдонимы образа
Каждый из следующих псевдонимов указывает на стабильный образ в Microsoft Container Registry (MCR). Вы можете ссылаться на любой из них в разделе cmd
файла задачи без использования директивы.
Псевдоним | Изображения |
---|---|
acr |
mcr.microsoft.com/acr/acr-cli:0.5 |
az |
mcr.microsoft.com/acr/azure-cli:7ee1d7f |
bash |
mcr.microsoft.com/acr/bash:7ee1d7f |
curl |
mcr.microsoft.com/acr/curl:7ee1d7f |
В следующем примере задачи используется несколько псевдонимов для очистки тегов образов старше 7 дней в репозитории samples/hello-world
в реестре выполнения:
version: v1.1.0
steps:
- cmd: acr tag list --registry $RegistryName --repository samples/hello-world
- cmd: acr purge --registry $RegistryName --filter samples/hello-world:.* --ago 7d
Пользовательский псевдоним
Вы можете определить пользовательский псевдоним в YAML-файле и использовать его, как показано в следующем примере. Псевдоним может содержать только буквы и цифры. По умолчанию в качестве директивы для расширения псевдонима используется символ $
.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
Вы можете задать ссылку на удаленный или локальный YAML-файл для определений пользовательских псевдонимов. В следующем примере задается ссылка на YAML-файл в хранилище BLOB-объектов Azure:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Следующие шаги
Обзор многошаговых задач см. в статье Run multi-step build, test, and patch tasks in ACR Tasks (Выполнение многошаговых задач сборки, тестирования и исправления в решении "Задачи ACR").
Сведения об одношаговых сборках см. в статье Автоматизация установки исправлений ОС и платформы с помощью службы "Задачи ACR".