Dokumentacja usługi ACR Tasks: YAML
Definicja zadania wieloetapowego w usłudze ACR Tasks zapewnia zorientowane na kontenery typy pierwotne obliczeniowe skoncentrowane na tworzeniu, testowaniu i poprawianiu kontenerów. W tym artykule opisano polecenia, parametry, właściwości i składnię dla plików YAML, które definiują zadania wieloetapowe.
Ten artykuł zawiera informacje dotyczące tworzenia plików YAML zadań wieloetapowych dla usługi ACR Tasks. Jeśli chcesz zapoznać się z wprowadzeniem do usługi ACR Tasks, zobacz Omówienie usługi ACR Tasks.
format pliku acr-task.yaml
Usługa ACR Tasks obsługuje deklarację zadań wieloetapowych w standardowej składni YAML. Kroki zadania definiuje się w pliku YAML. Następnie możesz uruchomić zadanie ręcznie, przekazując plik do polecenia az acr run . Możesz też użyć pliku , aby utworzyć zadanie za pomocą polecenia az acr task create , które jest wyzwalane automatycznie podczas zatwierdzania usługi Git, aktualizacji obrazu podstawowego lub harmonogramu. Mimo że ten artykuł odnosi się do acr-task.yaml
pliku zawierającego kroki, usługa ACR Tasks obsługuje dowolną prawidłową nazwę pliku z obsługiwanym rozszerzeniem.
Typy pierwotne najwyższego poziomu acr-task.yaml
to właściwości zadań, typy kroków i właściwości kroku:
- Właściwości zadania mają zastosowanie do wszystkich kroków w trakcie wykonywania zadania. Istnieje kilka globalnych właściwości zadań, w tym:
version
stepTimeout
workingDirectory
- Typy kroków zadań reprezentują typy akcji, które można wykonać w zadaniu. Istnieją trzy typy kroków:
build
push
cmd
- Właściwości kroku zadania to parametry, które mają zastosowanie do pojedynczego kroku. Istnieje kilka właściwości kroków, w tym:
startDelay
timeout
when
- ... i wiele innych.
Poniżej przedstawiono podstawowy format acr-task.yaml
pliku, w tym niektóre typowe właściwości kroku. Chociaż nie jest to wyczerpująca reprezentacja wszystkich dostępnych właściwości kroków lub użycia typu kroku, zawiera krótkie omówienie podstawowego formatu pliku.
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.
Obsługiwane rozszerzenia nazw plików zadań
Usługa ACR Tasks zarezerwowała kilka rozszerzeń nazw plików, w tym .yaml
, które będą przetwarzane jako plik zadania. Każde rozszerzenie , które nie znajduje się na poniższej liście, jest uznawane przez usługę ACR Tasks za plik Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML jest jedynym formatem pliku obsługiwanym obecnie przez usługę ACR Tasks. Pozostałe rozszerzenia nazw plików są zarezerwowane dla ewentualnej przyszłej obsługi.
Uruchamianie przykładowych zadań
W poniższych sekcjach tego artykułu odwołuje się kilka przykładowych plików zadań. Przykładowe zadania znajdują się w publicznym repozytorium GitHub Azure-Samples/acr-tasks. Można je uruchomić za pomocą polecenia az acr run interfejsu wiersza polecenia platformy Azure. Przykładowe polecenia są podobne do następujących:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Formatowanie przykładowych poleceń zakłada, że skonfigurowano rejestr domyślny w interfejsie wiersza polecenia platformy Azure, więc pomijają --registry
parametr . Aby skonfigurować rejestr domyślny, użyj polecenia az config z set
poleceniem defaults.acr=REGISTRY_NAME
, które akceptuje parę klucz-wartość.
Aby na przykład skonfigurować interfejs wiersza polecenia platformy Azure przy użyciu rejestru domyślnego o nazwie "myregistry":
az config set defaults.acr=myregistry
Właściwości zadania
Właściwości zadania są zwykle wyświetlane w górnej części acr-task.yaml
pliku i są właściwościami globalnymi, które mają zastosowanie w trakcie pełnego wykonywania kroków zadania. Niektóre z tych właściwości globalnych można zastąpić w ramach pojedynczego kroku.
Właściwość | Typ | Opcjonalne | Opis | Przesłoń obsługiwane | Wartość domyślna |
---|---|---|---|---|---|
version |
ciąg | Tak | Wersja acr-task.yaml pliku jest analizowana przez usługę ACR Tasks. Chociaż usługa ACR Tasks stara się zachować zgodność z poprzednimi wersjami, ta wartość umożliwia usłudze ACR Tasks zachowanie zgodności w ramach zdefiniowanej wersji. Jeśli nie zostanie określona, zostanie domyślnie ustawiona najnowsza wersja. |
Nie | Brak |
stepTimeout |
int (sekundy) | Tak | Maksymalna liczba sekund, przez które można uruchomić krok. Jeśli właściwość jest określona stepTimeout w zadaniu, ustawia domyślną timeout właściwość wszystkich kroków. timeout Jeśli właściwość jest określona w kroku, zastępuje stepTimeout właściwość podaną przez zadanie.Suma wartości limitu czasu kroku dla zadania powinna być równa wartości właściwości uruchomienia timeout zadania (na przykład ustawianej przez przekazanie --timeout polecenia).az acr task create Jeśli wartość przebiegu timeout zadania jest mniejsza, ma priorytet. |
Tak | 600 (10 minut) |
workingDirectory |
ciąg | Tak | Katalog roboczy kontenera podczas wykonywania. Jeśli właściwość jest określona w zadaniu, ustawia domyślną workingDirectory właściwość wszystkich kroków. Jeśli zostanie określony w kroku, zastępuje właściwość podaną przez zadanie. |
Tak | c:\workspace w systemie Windows lub /workspace w systemie Linux |
env |
[ciąg, ciąg, ...] | Tak | Tablica ciągów w key=value formacie definiującym zmienne środowiskowe zadania. Jeśli właściwość jest określona w zadaniu, ustawia domyślną env właściwość wszystkich kroków. Jeśli zostanie określony w kroku, zastępuje wszystkie zmienne środowiskowe dziedziczone z zadania. |
Tak | Brak |
secrets |
[wpis tajny, wpis tajny, ...] | Tak | Tablica obiektów wpisów tajnych . | Nie | Brak |
networks |
[sieć, sieć, ...] | Tak | Tablica obiektów sieciowych . | Nie | Brak |
volumes |
[wolumin, wolumin, ...] | Tak | Tablica obiektów woluminów . Określa woluminy z zawartością źródłową do zainstalowania w kroku. | Nie | Brak |
wpis tajny
Obiekt wpisu tajnego ma następujące właściwości.
Właściwość | Typ | Opcjonalne | Opis | Wartość domyślna |
---|---|---|---|---|
id |
ciąg | Nie | Identyfikator wpisu tajnego. | Brak |
keyvault |
ciąg | Tak | Adres URL wpisu tajnego usługi Azure Key Vault. | Brak |
clientID |
ciąg | Tak | Identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika dla zasobów platformy Azure. | Brak |
network
Obiekt sieciowy ma następujące właściwości.
Właściwość | Typ | Opcjonalne | Opis | Wartość domyślna |
---|---|---|---|---|
name |
ciąg | Nie | Nazwa sieci. | Brak |
driver |
ciąg | Tak | Sterownik do zarządzania siecią. | Brak |
ipv6 |
bool | Tak | Czy sieć IPv6 jest włączona. | false |
skipCreation |
bool | Tak | Czy pominąć tworzenie sieci. | false |
isDefault |
bool | Tak | Określa, czy sieć jest domyślną siecią dostarczaną z Azure Container Registry. | false |
wolumin
Obiekt woluminu ma następujące właściwości.
Właściwość | Typ | Opcjonalne | Opis | Wartość domyślna |
---|---|---|---|---|
name |
ciąg | Nie | Nazwa woluminu do zainstalowania. Może zawierać tylko znaki alfanumeryczne, "-" i "_". | Brak |
secret |
map[string]string | Nie | Każdy klucz mapy jest nazwą pliku utworzonego i wypełnionego w woluminie. Każda wartość jest wersją ciągu wpisu tajnego. Wartości wpisów tajnych muszą być zakodowane w formacie Base64. | Brak |
Typy kroków zadania
Usługa ACR Tasks obsługuje trzy typy kroków. Każdy typ kroku obsługuje kilka właściwości, szczegółowo opisanych w sekcji dla każdego typu kroku.
Typ kroku | Opis |
---|---|
build |
Tworzy obraz kontenera przy użyciu znanej docker build składni. |
push |
docker push Wykonuje nowo skompilowane lub ponownie oznaczone obrazy do rejestru kontenerów. Azure Container Registry obsługiwane są inne rejestry prywatne i publiczne Docker Hub. |
cmd |
Uruchamia kontener jako polecenie z parametrami przekazywanymi do kontenera [ENTRYPOINT] . cmd Typ kroku obsługuje parametry, takie jak env , detach i inne znane docker run opcje poleceń, umożliwiając jednostkowe i funkcjonalne testowanie z równoczesnymi wykonywaniem kontenera. |
kompilacja
Skompiluj obraz kontenera. build
Typ kroku reprezentuje wielodostępne, bezpieczne środki uruchamiania docker build
w chmurze jako pierwotny klasy pierwszej klasy.
Składnia: kompilacja
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Uruchom polecenie az acr run, aby pobrać wersję platformy Docker.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Dodaj zmienną środowiskową DOCKER_BUILDKIT=1
w pliku yaml, aby włączyć buildkit
i używać z programem secret
buildkit
.
Typ build
kroku obsługuje parametry w poniższej tabeli. Typ build
kroku obsługuje również wszystkie opcje kompilacji polecenia docker build , takie jak --build-arg
ustawianie zmiennych czasu kompilacji.
Parametr | Opis | Opcjonalne |
---|---|---|
-t | --image |
Definiuje w pełni kwalifikowany image:tag obraz skompilowany.Ponieważ obrazy mogą być używane do walidacji zadań wewnętrznych, takich jak testy funkcjonalne, nie wszystkie obrazy wymagają push rejestru. Jednak w celu wystąpienia obrazu w ramach wykonywania zadania obraz musi się odwoływać.W przeciwieństwie do az acr build programu uruchomienie usługi ACR Tasks nie zapewnia domyślnego zachowania wypychania. W przypadku usługi ACR Tasks domyślny scenariusz zakłada możliwość kompilowania, weryfikowania, a następnie wypychania obrazu. Zobacz wypychanie , aby dowiedzieć się, jak opcjonalnie wypychać skompilowane obrazy. |
Tak |
-f | --file |
Określa plik Dockerfile przekazany do .docker build Jeśli nie zostanie określony, przyjmuje się domyślny plik Dockerfile w katalogu głównym kontekstu. Aby określić plik Dockerfile, przekaż nazwę pliku względem katalogu głównego kontekstu. |
Tak |
context |
Katalog główny przekazany do .docker build Katalog główny każdego zadania jest ustawiony na udostępniony katalog roboczy i zawiera katalog główny skojarzonego katalogu sklonowanego usługi Git. |
Nie |
Właściwości: kompilacja
build
Typ kroku obsługuje następujące właściwości. Szczegółowe informacje o tych właściwościach znajdują się w sekcji Właściwości kroku zadania w tym artykule.
Właściwości | Typ | Wymagane |
---|---|---|
detach |
bool | Opcjonalne |
disableWorkingDirectoryOverride |
bool | Opcjonalne |
entryPoint |
ciąg | Opcjonalne |
env |
[ciąg, ciąg, ...] | Opcjonalne |
expose |
[ciąg, ciąg, ...] | Opcjonalne |
id |
ciąg | Opcjonalne |
ignoreErrors |
bool | Opcjonalne |
isolation |
ciąg | Opcjonalne |
keep |
bool | Opcjonalne |
network |
object | Opcjonalne |
ports |
[ciąg, ciąg, ...] | Opcjonalne |
pull |
bool | Opcjonalne |
repeat |
int | Opcjonalne |
retries |
int | Opcjonalne |
retryDelay |
int (sekundy) | Opcjonalne |
secret |
object | Opcjonalne |
startDelay |
int (sekundy) | Opcjonalne |
timeout |
int (sekundy) | Opcjonalne |
volumeMount |
object | Opcjonalne |
when |
[ciąg, ciąg, ...] | Opcjonalne |
workingDirectory |
ciąg | Opcjonalne |
Przykłady: kompilacja
Kompilowanie obrazu — kontekst w katalogu głównym
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 .
Kompilowanie obrazu — kontekst w podkatalogu
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
push
Wypchnij co najmniej jeden skompilowany lub ponownie oznaczony obraz do rejestru kontenerów. Obsługuje wypychanie do prywatnych rejestrów, takich jak Azure Container Registry lub publiczne Docker Hub.
Składnia: wypychanie
Typ push
kroku obsługuje kolekcję obrazów. Składnia kolekcji YAML obsługuje wbudowane i zagnieżdżone formaty. Wypychanie pojedynczego obrazu jest zwykle reprezentowane przy użyciu składni wbudowanej:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Aby zwiększyć czytelność, użyj składni zagnieżdżonej podczas wypychania wielu obrazów:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Właściwości: wypychanie
push
Typ kroku obsługuje następujące właściwości. Szczegółowe informacje o tych właściwościach znajdują się w sekcji Właściwości kroku zadania w tym artykule.
Właściwość | Typ | Wymagane |
---|---|---|
env |
[ciąg, ciąg, ...] | Opcjonalne |
id |
ciąg | Opcjonalne |
ignoreErrors |
bool | Opcjonalne |
startDelay |
int (sekundy) | Opcjonalne |
timeout |
int (sekundy) | Opcjonalne |
when |
[ciąg, ciąg, ...] | Opcjonalne |
Przykłady: wypychanie
Wypychanie wielu obrazów
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
Kompilowanie, wypychanie i uruchamianie
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
Typ cmd
kroku uruchamia kontener.
Składnia: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Właściwości: cmd
cmd
Typ kroku obsługuje następujące właściwości:
Właściwość | Typ | Wymagane |
---|---|---|
detach |
bool | Opcjonalne |
disableWorkingDirectoryOverride |
bool | Opcjonalne |
entryPoint |
ciąg | Opcjonalne |
env |
[ciąg, ciąg, ...] | Opcjonalne |
expose |
[ciąg, ciąg, ...] | Opcjonalne |
id |
ciąg | Opcjonalne |
ignoreErrors |
bool | Opcjonalne |
isolation |
ciąg | Opcjonalne |
keep |
bool | Opcjonalne |
network |
object | Opcjonalne |
ports |
[ciąg, ciąg, ...] | Opcjonalne |
pull |
bool | Opcjonalne |
repeat |
int | Opcjonalne |
retries |
int | Opcjonalne |
retryDelay |
int (sekundy) | Opcjonalne |
secret |
object | Opcjonalne |
startDelay |
int (sekundy) | Opcjonalne |
timeout |
int (sekundy) | Opcjonalne |
volumeMount |
object | Opcjonalne |
when |
[ciąg, ciąg, ...] | Opcjonalne |
workingDirectory |
ciąg | Opcjonalne |
Szczegółowe informacje o tych właściwościach można znaleźć w sekcji Właściwości kroku zadania w tym artykule.
Przykłady: cmd
Uruchamianie obrazu hello-world
To polecenie wykonuje hello-world.yaml
plik zadania, który odwołuje się do obrazu hello-world na 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
Uruchamianie obrazu powłoki bash i echo "hello world"
To polecenie wykonuje bash-echo.yaml
plik zadania, który odwołuje się do obrazu powłoki bash na 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
Uruchamianie określonego tagu obrazu powłoki bash
Aby uruchomić określoną wersję obrazu, określ tag w pliku cmd
.
To polecenie wykonuje bash-echo-3.yaml
plik zadania, który odwołuje się do obrazu bash:3.0 w 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
Uruchamianie obrazów niestandardowych
Typ cmd
kroku odwołuje się do obrazów przy użyciu formatu standardowego docker run
. Zakłada się, że obrazy, które nie są poprzedzone rejestrem, pochodzą z docker.io. Poprzedni przykład może być równie reprezentowany jako:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Za pomocą standardowej docker run
konwencji cmd
referencyjnej obrazu można uruchamiać obrazy z dowolnego rejestru prywatnego lub publicznego Docker Hub. Jeśli odwołujesz się do obrazów w tym samym rejestrze, w którym jest wykonywane zadanie usługi ACR, nie musisz określać żadnych poświadczeń rejestru.
Uruchom obraz z rejestru kontenerów platformy Azure. W poniższym przykładzie założono, że masz rejestr o nazwie
myregistry
i obrazmyimage:mytag
niestandardowy .version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
Uogólnij odwołanie do rejestru przy użyciu zmiennej Run lub aliasu
Zamiast trwale kodować nazwę rejestru w
acr-task.yaml
pliku, możesz uczynić go bardziej przenośnym przy użyciu zmiennej Run lub aliasu. ZmiennaRun.Registry
lub$Registry
alias rozszerza się w czasie wykonywania na nazwę rejestru, w którym zadanie jest wykonywane.Aby na przykład uogólnić poprzednie zadanie tak, aby działało w dowolnym rejestrze kontenerów platformy Azure, odwołaj się do zmiennej $Registry w nazwie obrazu:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Uzyskiwanie dostępu do woluminów wpisów tajnych
Właściwość volumes
umożliwia określenie woluminów i ich zawartości wpisów tajnych dla build
i cmd
kroków w zadaniu. W każdym kroku opcjonalna volumeMounts
właściwość zawiera listę woluminów i odpowiednich ścieżek kontenera do zainstalowania w kontenerze w tym kroku. Wpisy tajne są udostępniane jako pliki w ścieżce instalacji każdego woluminu.
Wykonaj zadanie i zainstaluj dwa wpisy tajne w kroku: jeden przechowywany w magazynie kluczy i jeden określony w wierszu polecenia:
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
Właściwości kroku zadania
Każdy typ kroku obsługuje kilka właściwości odpowiednich dla jego typu. W poniższej tabeli zdefiniowano wszystkie dostępne właściwości kroku. Nie wszystkie typy kroków obsługują wszystkie właściwości. Aby zobaczyć, które z tych właściwości są dostępne dla każdego typu kroku, zobacz sekcje referencyjne dotyczące typu cmd, kompilacji i kroku wypychania .
Właściwość | Typ | Opcjonalne | Opis | Wartość domyślna |
---|---|---|---|---|
detach |
bool | Tak | Czy kontener powinien być odłączony podczas uruchamiania. | false |
disableWorkingDirectoryOverride |
bool | Tak | Czy wyłączyć workingDirectory funkcję przesłonięcia. Użyj tej funkcji w połączeniu z elementem , workingDirectory aby mieć pełną kontrolę nad katalogiem roboczym kontenera. |
false |
entryPoint |
ciąg | Tak | [ENTRYPOINT] Zastępuje kontener kroku. |
Brak |
env |
[ciąg, ciąg, ...] | Tak | Tablica ciągów w key=value formacie definiującym zmienne środowiskowe dla kroku. |
Brak |
expose |
[ciąg, ciąg, ...] | Tak | Tablica portów uwidocznionych z kontenera. | Brak |
id |
ciąg | Tak | Jednoznacznie identyfikuje krok w zadaniu. Inne kroki w zadaniu mogą odwoływać się do kroku id , na przykład do sprawdzania zależności za pomocą when polecenia .Jest id to również nazwa uruchomionego kontenera. Procesy uruchomione w innych kontenerach w zadaniu mogą odwoływać się do id nazwy hosta DNS lub uzyskiwać do niego dostęp za pomocą dzienników platformy Docker [id], na przykład. |
acb_step_%d , gdzie %d jest 0-opartym na indeksie kroku od góry w pliku YAML |
ignoreErrors |
bool | Tak | Czy oznaczyć krok jako pomyślny, niezależnie od tego, czy wystąpił błąd podczas wykonywania kontenera. | false |
isolation |
ciąg | Tak | Poziom izolacji kontenera. | default |
keep |
bool | Tak | Czy kontener kroku powinien być przechowywany po wykonaniu. | false |
network |
object | Tak | Identyfikuje sieć, w której działa kontener. | Brak |
ports |
[ciąg, ciąg, ...] | Tak | Tablica portów publikowanych z kontenera do hosta. | Brak |
pull |
bool | Tak | Czy wymusić ściągnięcie kontenera przed jego wykonaniem, aby zapobiec zachowaniu buforowania. | false |
privileged |
bool | Tak | Czy uruchamiać kontener w trybie uprzywilejowanym. | false |
repeat |
int | Tak | Liczba ponownych prób powtórzenia wykonywania kontenera. | 0 |
retries |
int | Tak | Liczba ponownych prób, które należy wykonać, jeśli kontener zakończy się niepowodzeniem. Próba ponawiania jest podejmowana tylko wtedy, gdy kod zakończenia kontenera jest inny niż zero. | 0 |
retryDelay |
int (sekundy) | Tak | Opóźnienie w sekundach między ponowną próbą wykonania kontenera. | 0 |
secret |
object | Tak | Identyfikuje wpis tajny platformy Azure Key Vault lub tożsamość zarządzaną dla zasobów platformy Azure. | Brak |
startDelay |
int (sekundy) | Tak | Liczba sekund opóźnienia wykonania kontenera. | 0 |
timeout |
int (sekundy) | Tak | Maksymalna liczba sekund, przez które krok może zostać wykonany przed zakończeniem. | 600 |
when |
[ciąg, ciąg, ...] | Tak | Konfiguruje zależność kroku od jednego lub kilku innych kroków w ramach zadania. | Brak |
user |
ciąg | Tak | Nazwa użytkownika lub identyfikator UID kontenera | Brak |
workingDirectory |
ciąg | Tak | Ustawia katalog roboczy dla kroku. Domyślnie usługa ACR Tasks tworzy katalog główny jako katalog roboczy. Jeśli jednak kompilacja ma kilka kroków, wcześniejsze kroki mogą udostępniać artefakty później, określając ten sam katalog roboczy. | c:\workspace w systemie Windows lub /workspace w systemie Linux |
volumeMount
Obiekt volumeMount ma następujące właściwości.
Właściwość | Typ | Opcjonalne | Opis | Wartość domyślna |
---|---|---|---|---|
name |
ciąg | Nie | Nazwa woluminu do zainstalowania. Musi być dokładnie zgodna z nazwą właściwości volumes . |
Brak |
mountPath |
ciąg | nie | Ścieżka bezwzględna do instalowania plików w kontenerze. | Brak |
Przykłady: właściwości kroku zadania
Przykład: identyfikator
Skompiluj dwa obrazy, aby utworzyć obraz testu funkcjonalnego. Każdy krok jest identyfikowany przez unikatowy id
, który inny krok w odwołaniu do zadania w ich when
właściwości.
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"]
Przykład: kiedy
Właściwość when
określa zależność kroku od innych kroków w ramach zadania. Obsługuje dwie wartości parametrów:
when: ["-"]
- Wskazuje brak zależności od innych kroków. Krok określającywhen: ["-"]
spowoduje natychmiastowe rozpoczęcie wykonywania i włączenie współbieżnego wykonywania kroku.when: ["id1", "id2"]
— Wskazuje, że krok jest zależny od kroków zid
"id1" iid
"id2". Ten krok nie zostanie wykonany, dopóki nie zostaną wykonane kroki "id1" i "id2".
Jeśli when
nie określono w kroku, ten krok jest zależny od ukończenia poprzedniego kroku w acr-task.yaml
pliku.
Sekwencyjne wykonanie kroku bez polecenia 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
Sekwencyjne wykonanie kroku za pomocą polecenia 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"]
Kompilacja obrazów równoległych:
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: ["-"]
Równoległa kompilacja obrazu i testowanie zależne:
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"]
Zmienne uruchamiania
Usługa ACR Tasks zawiera domyślny zestaw zmiennych, które są dostępne do wykonania kroków zadań. Dostęp do tych zmiennych można uzyskać za pomocą formatu {{.Run.VariableName}}
, gdzie VariableName
jest jednym z następujących elementów:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
Nazwy zmiennych są ogólnie objaśniające. Szczegóły są zgodne z często używanymi zmiennymi. W wersji v1.1.0
YAML można użyć skróconego, wstępnie zdefiniowanego aliasu zadania zamiast większości zmiennych uruchamiania. Na przykład zamiast {{.Run.Registry}}
polecenia użyj aliasu $Registry
.
Run.ID
Każde uruchomienie, za pośrednictwem az acr run
elementu lub wyzwalacz oparte na wykonywaniu zadań utworzonych za pomocą az acr task create
programu , ma unikatowy identyfikator. Identyfikator reprezentuje aktualnie wykonywany przebieg.
Zazwyczaj używane do unikatowego tagowania obrazu:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
Unikatowy identyfikator udostępnionego woluminu, który jest dostępny we wszystkich krokach zadania. Wolumin jest instalowany w c:\workspace
systemie Windows lub /workspace
Linux.
Run.Registry
W pełni kwalifikowana nazwa serwera rejestru. Zazwyczaj służy do ogólnego odwołowania się do rejestru, w którym jest uruchamiane zadanie.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
Nazwa rejestru kontenerów. Zazwyczaj używane w krokach zadań, które nie wymagają w pełni kwalifikowanej nazwy serwera, na przykład cmd
kroki uruchamiające polecenia interfejsu wiersza polecenia platformy Azure w rejestrach.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
Bieżący czas UTC uruchomienia.
Run.Commit
W przypadku zadania wyzwalanego przez zatwierdzenie w repozytorium GitHub identyfikator zatwierdzenia.
Run.Branch
W przypadku zadania wyzwalanego przez zatwierdzenie w repozytorium GitHub nazwa gałęzi.
Aliasy
W systemie v1.1.0
usługa ACR Tasks obsługuje aliasy, które są dostępne do wykonywania kroków zadań. Aliasy są podobne w koncepcji do aliasów (skrótów poleceń) obsługiwanych w powłoce bash i innych powłokach poleceń.
Za pomocą aliasu można uruchomić dowolne polecenie lub grupę poleceń (w tym opcje i nazwy plików), wprowadzając pojedyncze słowo.
Usługa ACR Tasks obsługuje kilka wstępnie zdefiniowanych aliasów, a także utworzone aliasy niestandardowe.
Wstępnie zdefiniowane aliasy
Następujące aliasy zadań są dostępne do użycia zamiast zmiennych uruchamiania:
Alias | Zmienna uruchamiania |
---|---|
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 |
W krokach zadania przed aliasem $
dyrektywy, jak w tym przykładzie:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Aliasy obrazów
Każdy z następujących aliasów wskazuje stabilny obraz w usłudze Microsoft Container Registry (MCR). Każdy z nich można odwoływać się do każdej z nich w cmd
sekcji pliku zadania bez użycia dyrektywy.
Alias | Obraz |
---|---|
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 |
Następujące przykładowe zadanie używa kilku aliasów do przeczyszczania tagów obrazów starszych niż 7 dni w repozytorium samples/hello-world
w rejestrze uruchomień:
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
Alias niestandardowy
Zdefiniuj alias niestandardowy w pliku YAML i użyj go, jak pokazano w poniższym przykładzie. Alias może zawierać tylko znaki alfanumeryczne. Domyślna dyrektywa do rozwinięcia aliasu $
to znak.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
Możesz połączyć się z zdalnym lub lokalnym plikiem YAML dla niestandardowych definicji aliasu. Poniższy przykład zawiera linki do pliku YAML w usłudze Azure Blob Storage:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Następne kroki
Aby zapoznać się z omówieniem zadań wieloetapowych, zobacz Uruchamianie wieloetapowych zadań kompilacji, testowania i poprawek w zadaniach usługi ACR Tasks.
Aby zapoznać się z kompilacjami jednoetapowymi, zobacz Omówienie zadań usługi ACR.