Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определение многошаговой задачи в службе "Задачи 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 верхнего уровня являются свойства задачи, типы шагов и свойства шага.
-
Свойства задачи применяются для всех шагов на протяжении всего выполнения задачи. Существует несколько глобальных свойств задачи, в том числе:
versionstepTimeoutworkingDirectory
-
Типы шагов задачи представляют собой типы действий, которые могут быть выполнены в задаче. Существует три типа шагов:
buildpushcmd
-
Свойства шага задачи — параметры, которые применяются к отдельному шагу. Существует несколько свойств шага, в том числе:
startDelaytimeoutwhen- ...и многие другие.
Ниже приведен пример базового формата файла 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 |
строка | No | Идентификатор секрета. | Не допускается |
keyvault |
строка | Да | URL-адрес секрета Azure Key Vault. | Не допускается |
clientID |
строка | Да | Идентификатор клиента назначаемого пользователем управляемого удостоверения для ресурсов Azure. | Не допускается |
сеть
Объект network имеет следующие свойства.
| Свойство | Тип | Необязательно | Description | Default value |
|---|---|---|---|---|
name |
строка | No | Имя сети. | Не допускается |
driver |
строка | Да | Драйвер для управления сетью. | Не допускается |
ipv6 |
bool | Да | Определяет, включена ли сеть IPv6. | false |
skipCreation |
bool | Да | Определяет, следует ли пропустить создание сети. | false |
isDefault |
bool | Да | Определяет, предоставляется ли сеть по умолчанию реестром контейнеров Azure. | false |
том
Объект volume имеет следующие свойства.
| Свойство | Тип | Необязательно | Description | Default value |
|---|---|---|---|---|
name |
строка | No | Имя подключаемого тома. Может содержать только буквы, цифры, а также символы "-" и "_". | Не допускается |
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 и использования secretbuildkit.
Тип шага build поддерживает параметры, описанные в следующей таблице. Тип шага build также поддерживает все параметры сборки из команды docker build, такие как --build-arg, для определения переменных во время сборки.
| Параметр | Description | Необязательно |
|---|---|---|
-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 |
bool | Необязательно |
disableWorkingDirectoryOverride |
bool | Необязательно |
entryPoint |
строка | Необязательно |
env |
[строка, строка, ...] | Необязательно |
expose |
[строка, строка, ...] | Необязательно |
id |
строка | Необязательно |
ignoreErrors |
bool | Необязательно |
isolation |
строка | Необязательно |
keep |
bool | Необязательно |
network |
объект | Необязательно |
ports |
[строка, строка, ...] | Необязательно |
pull |
bool | Необязательно |
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 |
bool | Необязательно |
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 |
bool | Необязательно |
disableWorkingDirectoryOverride |
bool | Необязательно |
entryPoint |
строка | Необязательно |
env |
[строка, строка, ...] | Необязательно |
expose |
[строка, строка, ...] | Необязательно |
id |
строка | Необязательно |
ignoreErrors |
bool | Необязательно |
isolation |
строка | Необязательно |
keep |
bool | Необязательно |
network |
объект | Необязательно |
ports |
[строка, строка, ...] | Необязательно |
pull |
bool | Необязательно |
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 |
строка | No | Имя подключаемого тома. Должно в точности соответствовать имени в свойстве 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"]— указывает, что шаг зависит от шагов сidid1 иidid2. Этот шаг не будет выполнен до тех пор, пока не будут завершены оба шага 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.IDRun.SharedVolumeRun.RegistryRun.RegistryNameRun.DateRun.OSRun.ArchitectureRun.CommitRun.BranchRun.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.14 |
az |
mcr.microsoft.com/acr/azure-cli:9fb281c |
bash |
mcr.microsoft.com/acr/bash:9fb281c |
curl |
mcr.microsoft.com/acr/curl:9fb281c |
cssc |
mcr.microsoft.com/acr/cssc:9fb281c |
В следующем примере задачи используется несколько псевдонимов для очистки тегов образов старше 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".