Naslaginformatie over ACR-taken: YAML
Taakdefinitie met meerdere stappen in ACR Tasks biedt een op containers gerichte berekeningsprimitief die is gericht op het bouwen, testen en patchen van containers. In dit artikel worden de opdrachten, parameters, eigenschappen en syntaxis besproken voor de YAML-bestanden die uw taken met meerdere stappen definiëren.
Dit artikel bevat naslaginformatie voor het maken van YAML-bestanden met meerdere stappen voor ACR-taken. Als u een inleiding tot ACR-taken wilt, raadpleegt u het overzicht van ACR-taken.
acr-task.yaml-bestandsindeling
ACR Tasks ondersteunt taakdeclaratie met meerdere stappen in standaard YAML-syntaxis. U definieert de stappen van een taak in een YAML-bestand. U kunt de taak vervolgens handmatig uitvoeren door het bestand door te geven aan de opdracht az acr run . Of gebruik het bestand om met az acr task create een taak te maken die automatisch wordt geactiveerd bij een Git-doorvoer, een basisinstallatiekopieënupdate of een planning. Hoewel in dit artikel wordt verwezen acr-task.yaml
als het bestand met de stappen, ondersteunt ACR Tasks elke geldige bestandsnaam met een ondersteunde extensie.
De primitieven op het hoogste niveau acr-task.yaml
zijn taakeigenschappen, staptypen en stapeigenschappen:
- Taakeigenschappen zijn van toepassing op alle stappen tijdens de uitvoering van de taak. Er zijn verschillende globale taakeigenschappen, waaronder:
version
stepTimeout
workingDirectory
- Taakstaptypen vertegenwoordigen de typen acties die in een taak kunnen worden uitgevoerd. Er zijn drie stappentypen:
build
push
cmd
- Eigenschappen van taakstappen zijn parameters die van toepassing zijn op een afzonderlijke stap. Er zijn verschillende stapeigenschappen, waaronder:
startDelay
timeout
when
- ... en nog veel meer.
De basisindeling van een acr-task.yaml
bestand, inclusief enkele algemene stapeigenschappen, volgt. Hoewel het geen uitputtende weergave is van alle beschikbare stapeigenschappen of het gebruik van het staptype, biedt het een snel overzicht van de basisbestandsindeling.
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.
Ondersteunde bestandsnaamextensies voor taken
ACR Tasks heeft verschillende bestandsnaamextensies gereserveerd, waaronder .yaml
, die worden verwerkt als een taakbestand. Elke extensie die niet in de volgende lijst staat, wordt door ACR Tasks beschouwd als een Dockerfile: .yaml, .yml, .toml, .json, .sh, .bash, .zsh, .ps1, .ps, .cmd, .bat, .ts, .js, .php, .py, .rb, .lua
YAML is de enige bestandsindeling die momenteel wordt ondersteund door ACR Tasks. De andere bestandsnaamextensies zijn gereserveerd voor mogelijke toekomstige ondersteuning.
De voorbeeldtaken uitvoeren
Er zijn verschillende voorbeeldtaakbestanden waarnaar wordt verwezen in de volgende secties van dit artikel. De voorbeeldtaken bevinden zich in een openbare GitHub-opslagplaats, Azure-Samples/acr-tasks. U kunt ze uitvoeren met de Azure CLI-opdracht az acr run. De voorbeeldopdrachten zijn vergelijkbaar met:
az acr run -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Bij de opmaak van de voorbeeldopdrachten wordt ervan uitgegaan dat u een standaardregister hebt geconfigureerd in de Azure CLI, zodat de --registry
parameter wordt weggelaten. Als u een standaardregister wilt configureren, gebruikt u de opdracht az config met de set
opdracht, die een defaults.acr=REGISTRY_NAME
sleutelwaardepaar accepteert.
Als u bijvoorbeeld de Azure CLI wilt configureren met een standaardregister met de naam 'myregistry':
az config set defaults.acr=myregistry
Taakeigenschappen
Taakeigenschappen worden meestal boven aan een acr-task.yaml
bestand weergegeven en zijn globale eigenschappen die van toepassing zijn tijdens de volledige uitvoering van de taakstappen. Sommige van deze globale eigenschappen kunnen worden overschreven binnen een afzonderlijke stap.
Eigenschap | Type | Optioneel | Description | Onderdrukking wordt ondersteund | Standaardwaarde |
---|---|---|---|---|---|
version |
tekenreeks | Ja | De versie van het acr-task.yaml bestand zoals geparseerd door de ACR Tasks-service. Hoewel ACR Tasks ernaar streeft compatibiliteit met eerdere versies te behouden, kan ACR Tasks met deze waarde compatibiliteit behouden binnen een gedefinieerde versie. Als dit niet wordt opgegeven, wordt standaard de nieuwste versie gebruikt. |
No | Geen |
stepTimeout |
int (seconden) | Yes | Het maximum aantal seconden dat een stap kan worden uitgevoerd. Als de stepTimeout eigenschap is opgegeven voor een taak, wordt de standaardeigenschap timeout van alle stappen ingesteld. Als de timeout eigenschap is opgegeven voor een stap, wordt de eigenschap van de stepTimeout taak overschreven.De som van de time-outwaarden voor de stap voor een taak moet gelijk zijn aan de waarde van de uitvoeringseigenschap timeout van de taak (bijvoorbeeld instellen door door te geven --timeout aan de az acr task create opdracht). Als de uitvoeringswaarde timeout van de taken kleiner is, heeft deze prioriteit. |
Yes | 600 (10 minuten) |
workingDirectory |
tekenreeks | Ja | De werkmap van de container tijdens runtime. Als de eigenschap is opgegeven voor een taak, wordt de standaardeigenschap workingDirectory van alle stappen ingesteld. Als dit voor een stap wordt opgegeven, wordt de eigenschap van de taak overschreven. |
Yes | c:\workspace in Windows of /workspace in Linux |
env |
[tekenreeks, tekenreeks, ...] | Yes | Matrix van tekenreeksen in key=value indeling die de omgevingsvariabelen voor de taak definiëren. Als de eigenschap is opgegeven voor een taak, wordt de standaardeigenschap env van alle stappen ingesteld. Als dit wordt opgegeven in een stap, worden alle omgevingsvariabelen overschreven die zijn overgenomen van de taak. |
Yes | Geen |
secrets |
[geheim, geheim, ...] | Yes | Matrix van geheime objecten. | No | Geen |
networks |
[netwerk, netwerk, ...] | Yes | Matrix van netwerkobjecten . | No | Geen |
volumes |
[volume, volume, ...] | Yes | Matrix van volumeobjecten . Hiermee geeft u volumes met broninhoud te koppelen aan een stap. | No | Geen |
geheim
Het geheime object heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Description | Standaardwaarde |
---|---|---|---|---|
id |
tekenreeks | No | De id van het geheim. | Geen |
keyvault |
tekenreeks | Ja | De geheime URL van Azure Key Vault. | Geen |
clientID |
tekenreeks | Ja | De client-id van de door de gebruiker toegewezen beheerde identiteit voor Azure-resources . | Geen |
network
Het netwerkobject heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Description | Standaardwaarde |
---|---|---|---|---|
name |
tekenreeks | No | De naam van het netwerk. | Geen |
driver |
tekenreeks | Ja | Het stuurprogramma voor het beheren van het netwerk. | Geen |
ipv6 |
booleaans | Yes | Of IPv6-netwerken zijn ingeschakeld. | false |
skipCreation |
booleaans | Yes | Of u het maken van een netwerk wilt overslaan. | false |
isDefault |
booleaans | Yes | Of het netwerk een standaardnetwerk is dat wordt geleverd met Azure Container Registry. | false |
volume
Het volumeobject heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Description | Standaardwaarde |
---|---|---|---|---|
name |
tekenreeks | No | De naam van het volume dat moet worden gekoppeld. Kan alleen alfanumerieke tekens, '-' en '_' bevatten. | Geen |
secret |
map[string]string | No | Elke sleutel van de kaart is de naam van een bestand dat is gemaakt en ingevuld in het volume. Elke waarde is de tekenreeksversie van het geheim. Geheime waarden moeten base64-codering hebben. | Geen |
Typen taakstappen
ACR Tasks ondersteunt drie stappentypen. Elk staptype ondersteunt verschillende eigenschappen, die worden beschreven in de sectie voor elk staptype.
Staptype | Description |
---|---|
build |
Hiermee bouwt u een containerinstallatiekopieën met behulp van vertrouwde docker build syntaxis. |
push |
Hiermee voert u een docker push van nieuw gebouwde of opnieuw gemarkeerde installatiekopieën uit naar een containerregister. Azure Container Registry, andere privéregisters en de openbare Docker Hub worden ondersteund. |
cmd |
Voert een container uit als een opdracht, waarbij parameters worden doorgegeven aan de van [ENTRYPOINT] de container . Het cmd staptype ondersteunt parameters zoals env , detach en andere bekende docker run opdrachtopties, waardoor eenheids- en functionele tests worden ingeschakeld met gelijktijdige uitvoering van containers. |
bouwen
Bouw een containerinstallatiekopieën. Het build
staptype vertegenwoordigt een veilige methode voor meerdere tenants om in de cloud als een eersteklas primitieve uit te voeren docker build
.
Syntaxis: build
version: v1.1.0
steps:
- [build]: -t [imageName]:[tag] -f [Dockerfile] [context]
[property]: [value]
Voer de opdracht az acr run uitom de docker-versie op te halen.
az acr run -r $ACR_NAME --cmd "docker version" /dev/null
Voeg omgevingsvariabele DOCKER_BUILDKIT=1
toe aan het yaml-bestand om in te schakelen buildkit
en te gebruiken secret
met buildkit
.
Het build
staptype ondersteunt de parameters in de volgende tabel. Het build
staptype ondersteunt ook alle build-opties van de opdracht docker build , zoals --build-arg
het instellen van build-tijdvariabelen.
Parameter | Beschrijving | Optioneel |
---|---|---|
-t | --image |
Hiermee definieert u de volledig gekwalificeerde image:tag van de gebouwde installatiekopieën.Omdat installatiekopieën kunnen worden gebruikt voor validaties van interne taken, zoals functionele tests, hoeven push niet alle installatiekopieën in een register te worden gebruikt. Als u echter een installatiekopieën in een taakuitvoering wilt uitvoeren, heeft de installatiekopieën wel een naam nodig waarnaar moet worden verwezen.In tegenstelling tot az acr build biedt het uitvoeren van ACR-taken geen standaard pushgedrag. Met ACR Tasks wordt in het standaardscenario ervan uitgegaan dat een installatiekopieën kunnen worden gemaakt, gevalideerd en vervolgens kunnen worden gepusht. Zie pushen voor het optioneel pushen van ingebouwde installatiekopieën. |
Yes |
-f | --file |
Hiermee geeft u het Dockerfile doorgegeven aan docker build . Als dit niet is opgegeven, wordt uitgegaan van het standaard Dockerfile in de hoofdmap van de context. Als u een Dockerfile wilt opgeven, geeft u de bestandsnaam door ten opzichte van de hoofdmap van de context. |
Yes |
context |
De hoofdmap die is doorgegeven aan docker build . De hoofdmap van elke taak is ingesteld op een gedeelde workingDirectory en bevat de hoofdmap van de bijbehorende gekloonde Git-map. |
No |
Eigenschappen: build
Het build
staptype ondersteunt de volgende eigenschappen. Meer informatie over deze eigenschappen vindt u in de sectie Taakstapeigenschappen van dit artikel.
Eigenschappen | Type | Vereist |
---|---|---|
detach |
booleaans | Optioneel |
disableWorkingDirectoryOverride |
booleaans | Optioneel |
entryPoint |
tekenreeks | Optioneel |
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
expose |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
booleaans | Optioneel |
isolation |
tekenreeks | Optioneel |
keep |
booleaans | Optioneel |
network |
object | Optioneel |
ports |
[tekenreeks, tekenreeks, ...] | Optioneel |
pull |
booleaans | Optioneel |
repeat |
int | Optioneel |
retries |
int | Optioneel |
retryDelay |
int (seconden) | Optioneel |
secret |
object | Optioneel |
startDelay |
int (seconden) | Optioneel |
timeout |
int (seconden) | Optioneel |
volumeMount |
object | Optioneel |
when |
[tekenreeks, tekenreeks, ...] | Optioneel |
workingDirectory |
tekenreeks | Optioneel |
Voorbeelden: build
Build-installatiekopieën - context in hoofdmap
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 .
Build-installatiekopie - context in submap
version: v1.1.0
steps:
- build: -t $Registry/hello-world -f hello-world.dockerfile ./subDirectory
Push
Push een of meer ingebouwde of opnieuw gemarkeerde installatiekopieën naar een containerregister. Ondersteunt pushen naar privéregisters zoals Azure Container Registry of naar de openbare Docker Hub.
Syntaxis: pushen
Het push
staptype ondersteunt een verzameling afbeeldingen. De syntaxis van de YAML-verzameling ondersteunt inline- en geneste indelingen. Het pushen van één afbeelding wordt doorgaans weergegeven met behulp van de inlinesyntaxis:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Voor een betere leesbaarheid gebruikt u geneste syntaxis bij het pushen van meerdere afbeeldingen:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Eigenschappen: pushen
Het push
staptype ondersteunt de volgende eigenschappen. Meer informatie over deze eigenschappen vindt u in de sectie Taakstapeigenschappen van dit artikel.
Eigenschap | Type | Vereist |
---|---|---|
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
booleaans | Optioneel |
startDelay |
int (seconden) | Optioneel |
timeout |
int (seconden) | Optioneel |
when |
[tekenreeks, tekenreeks, ...] | Optioneel |
Voorbeelden: pushen
Meerdere installatiekopieën pushen
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
Bouwen, pushen en uitvoeren
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
Met cmd
het staptype wordt een container uitgevoerd.
Syntaxis: cmd
version: v1.1.0
steps:
- [cmd]: [containerImage]:[tag (optional)] [cmdParameters to the image]
Eigenschappen: cmd
Het cmd
staptype ondersteunt de volgende eigenschappen:
Eigenschap | Type | Vereist |
---|---|---|
detach |
booleaans | Optioneel |
disableWorkingDirectoryOverride |
booleaans | Optioneel |
entryPoint |
tekenreeks | Optioneel |
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
expose |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
booleaans | Optioneel |
isolation |
tekenreeks | Optioneel |
keep |
booleaans | Optioneel |
network |
object | Optioneel |
ports |
[tekenreeks, tekenreeks, ...] | Optioneel |
pull |
booleaans | Optioneel |
repeat |
int | Optioneel |
retries |
int | Optioneel |
retryDelay |
int (seconden) | Optioneel |
secret |
object | Optioneel |
startDelay |
int (seconden) | Optioneel |
timeout |
int (seconden) | Optioneel |
volumeMount |
object | Optioneel |
when |
[tekenreeks, tekenreeks, ...] | Optioneel |
workingDirectory |
tekenreeks | Optioneel |
Details van deze eigenschappen vindt u in de sectie Taakstapeigenschappen van dit artikel.
Voorbeelden: cmd
Hello-world-installatiekopie uitvoeren
Met deze opdracht wordt het hello-world.yaml
taakbestand uitgevoerd, dat verwijst naar de hello-world-afbeelding op 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-installatiekopie uitvoeren en 'hello world' echo
Met deze opdracht wordt het bash-echo.yaml
taakbestand uitgevoerd, dat verwijst naar de bash-installatiekopieën op 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
Een specifieke bash-afbeeldingstag uitvoeren
Als u een specifieke versie van de installatiekopieën wilt uitvoeren, geeft u de tag op in de cmd
.
Met deze opdracht wordt het bash-echo-3.yaml
taakbestand uitgevoerd, dat verwijst naar de bash:3.0-installatiekopieën op 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
Aangepaste installatiekopieën uitvoeren
Het cmd
staptype verwijst naar afbeeldingen met de standaardindeling docker run
. Installatiekopieën die niet worden voorafgegaan door een register, worden verondersteld afkomstig te zijn van docker.io. Het vorige voorbeeld kan even goed worden weergegeven als:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Met behulp van de standaard docker run
conventie voor verwijzing naar installatiekopieën kunnen cmd
installatiekopieën worden uitgevoerd vanuit een persoonlijk register of de openbare Docker Hub. Als u verwijst naar installatiekopieën in hetzelfde register waarin de ACR-taak wordt uitgevoerd, hoeft u geen registerreferenties op te geven.
Voer een installatiekopieën uit die afkomstig is van een Azure-containerregister. In het volgende voorbeeld wordt ervan uitgegaan dat u een register met de naam
myregistry
en een aangepaste installatiekopieënmyimage:mytag
hebt.version: v1.1.0 steps: - cmd: myregistry.azurecr.io/myimage:mytag
De registerreferentie generaliseren met een Run-variabele of -alias
In plaats van de registernaam in een
acr-task.yaml
bestand hard te coderen, kunt u deze draagbaarder maken met behulp van een Run-variabele of -alias. DeRun.Registry
variabele of$Registry
alias wordt tijdens runtime uitgebreid naar de naam van het register waarin de taak wordt uitgevoerd.Als u bijvoorbeeld de voorgaande taak wilt generaliseren zodat deze in een Azure-containerregister werkt, verwijst u naar de variabele $Registry in de naam van de installatiekopieën:
version: v1.1.0 steps: - cmd: $Registry/myimage:mytag
Toegang tot geheime volumes
Met de volumes
eigenschap kunnen volumes en hun geheime inhoud worden opgegeven voor build
en cmd
stappen in een taak. In elke stap wordt een optionele volumeMounts
eigenschap weergegeven met de volumes en de bijbehorende containerpaden die tijdens die stap in de container moeten worden gekoppeld. Geheimen worden opgegeven als bestanden op het koppelingspad van elk volume.
Voer een taak uit en koppel twee geheimen aan een stap: een die is opgeslagen in een sleutelkluis en een die is opgegeven op de opdrachtregel:
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
Eigenschappen van taakstap
Elk staptype ondersteunt verschillende eigenschappen die geschikt zijn voor het type. In de volgende tabel worden alle beschikbare stapeigenschappen gedefinieerd. Niet alle staptypen ondersteunen alle eigenschappen. Als u wilt zien welke van deze eigenschappen beschikbaar zijn voor elk staptype, raadpleegt u de naslagsecties cmd, build en pushstaptype .
Eigenschap | Type | Optioneel | Description | Standaardwaarde |
---|---|---|---|---|
detach |
booleaans | Yes | Of de container moet worden losgekoppeld bij het uitvoeren van. | false |
disableWorkingDirectoryOverride |
booleaans | Yes | Of de onderdrukkingsfunctionaliteit moet worden uitgeschakeld workingDirectory . Gebruik dit in combinatie met workingDirectory om volledige controle te hebben over de werkmap van de container. |
false |
entryPoint |
tekenreeks | Ja | Overschrijft de van de [ENTRYPOINT] container van een stap. |
Geen |
env |
[tekenreeks, tekenreeks, ...] | Yes | Matrix van tekenreeksen in key=value indeling die de omgevingsvariabelen voor de stap definiëren. |
Geen |
expose |
[tekenreeks, tekenreeks, ...] | Yes | Matrix van poorten die beschikbaar zijn vanuit de container. | Geen |
id |
tekenreeks | Ja | Hiermee wordt de stap in de taak uniek geïdentificeerd. Andere stappen in de taak kunnen verwijzen naar de van id een stap, zoals voor afhankelijkheidscontrole met when .De id is ook de naam van de actieve container. Processen die in andere containers in de taak worden uitgevoerd, kunnen naar de verwijzen als de id DNS-hostnaam, of voor toegang tot deze met docker-logboeken [id] bijvoorbeeld. |
acb_step_%d , waarbij %d de index op basis van 0 van de stap van boven naar beneden in het YAML-bestand is |
ignoreErrors |
booleaans | Yes | Of de stap als geslaagd moet worden gemarkeerd, ongeacht of er een fout is opgetreden tijdens het uitvoeren van de container. | false |
isolation |
tekenreeks | Ja | Het isolatieniveau van de container. | default |
keep |
booleaans | Yes | Of de container van de stap moet worden bewaard na de uitvoering. | false |
network |
object | Yes | Identificeert een netwerk waarin de container wordt uitgevoerd. | Geen |
ports |
[tekenreeks, tekenreeks, ...] | Yes | Matrix van poorten die vanuit de container naar de host worden gepubliceerd. | Geen |
pull |
booleaans | Yes | Of een pull van de container moet worden geforceerd voordat deze wordt uitgevoerd om cachegedrag te voorkomen. | false |
privileged |
booleaans | Yes | Of de container moet worden uitgevoerd in de modus met bevoegdheden. | false |
repeat |
int | Ja | Het aantal nieuwe pogingen om de uitvoering van een container te herhalen. | 0 |
retries |
int | Ja | Het aantal nieuwe pogingen dat moet worden uitgevoerd als de uitvoering van een container mislukt. Een nieuwe poging wordt alleen geprobeerd als de afsluitcode van een container niet-nul is. | 0 |
retryDelay |
int (seconden) | Yes | De vertraging in seconden tussen nieuwe pogingen van de uitvoering van een container. | 0 |
secret |
object | Yes | Identificeert een Azure Key Vault geheim of beheerde identiteit voor Azure-resources. | Geen |
startDelay |
int (seconden) | Yes | Aantal seconden om de uitvoering van een container te vertragen. | 0 |
timeout |
int (seconden) | Yes | Het maximum aantal seconden dat een stap kan worden uitgevoerd voordat deze wordt beëindigd. | 600 |
when |
[tekenreeks, tekenreeks, ...] | Yes | Hiermee configureert u de afhankelijkheid van een stap van een of meer andere stappen in de taak. | Geen |
user |
tekenreeks | Ja | De gebruikersnaam of UID van een container | Geen |
workingDirectory |
tekenreeks | Ja | Hiermee stelt u de werkmap voor een stap in. Standaard maakt ACR Tasks een hoofdmap als de werkmap. Als uw build echter uit verschillende stappen bestaat, kunnen eerdere stappen artefacten delen met latere stappen door dezelfde werkmap op te geven. | c:\workspace in Windows of /workspace in Linux |
volumeMount
Het object volumeMount heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Description | Standaardwaarde |
---|---|---|---|---|
name |
tekenreeks | No | De naam van het volume dat moet worden gekoppeld. Moet exact overeenkomen met de naam van een volumes eigenschap. |
Geen |
mountPath |
tekenreeks | nee | Het absolute pad naar het koppelen van bestanden in de container. | Geen |
Voorbeelden: Eigenschappen van taakstap
Voorbeeld: id
Bouw twee installatiekopieën, waarbij een functionele testafbeelding wordt ingebouwd. Elke stap wordt geïdentificeerd door een unieke id
die andere stappen in de taak verwijzen naar hun when
eigenschap.
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"]
Voorbeeld: wanneer
De when
eigenschap geeft de afhankelijkheid van een stap op van andere stappen binnen de taak. Het ondersteunt twee parameterwaarden:
when: ["-"]
- Geeft geen afhankelijkheid van andere stappen aan. Een stap die opgeeftwhen: ["-"]
, wordt onmiddellijk gestart met de uitvoering en maakt uitvoering van gelijktijdige stappen mogelijk.when: ["id1", "id2"]
- Geeft aan dat de stap afhankelijk is van stappen metid
'id1' enid
'id2'. Deze stap wordt pas uitgevoerd als de stappen 'id1' en 'id2' zijn voltooid.
Als when
niet is opgegeven in een stap, is die stap afhankelijk van de voltooiing van de vorige stap in het acr-task.yaml
bestand.
Uitvoering van sequentiële stappen zonder 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
Uitvoering van opeenvolgende stappen met 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"]
Parallelle installatiekopieën bouwen:
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: ["-"]
Parallelle installatiekopieën bouwen en afhankelijk testen:
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"]
Variabelen uitvoeren
ACR-taken bevat een standaardset variabelen die beschikbaar zijn voor taakstappen wanneer ze worden uitgevoerd. Deze variabelen kunnen worden geopend met behulp van de indeling {{.Run.VariableName}}
, waarbij VariableName
een van de volgende is:
Run.ID
Run.SharedVolume
Run.Registry
Run.RegistryName
Run.Date
Run.OS
Run.Architecture
Run.Commit
Run.Branch
Run.TaskName
De namen van variabelen spreken over het algemeen voor zich. Details volgen voor veelgebruikte variabelen. Vanaf YAML-versie v1.1.0
kunt u een verkorte, vooraf gedefinieerde taakalias gebruiken in plaats van de meeste uitvoeringsvariabelen. Gebruik bijvoorbeeld in plaats van {{.Run.Registry}}
de alias.$Registry
Run.ID
Elke uitvoering op basis van uitvoeren, via az acr run
of trigger uitvoeren van taken die zijn gemaakt via az acr task create
, heeft een unieke id. De id vertegenwoordigt de uitvoering die momenteel wordt uitgevoerd.
Dit wordt meestal gebruikt voor een unieke tag van een afbeelding:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.SharedVolume
De unieke id voor een gedeeld volume dat toegankelijk is via alle taakstappen. Het volume is gekoppeld aan c:\workspace
in Windows of /workspace
in Linux.
Run.Registry
De volledig gekwalificeerde servernaam van het register. Wordt meestal gebruikt om algemeen te verwijzen naar het register waar de taak wordt uitgevoerd.
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
Run.RegistryName
De naam van het containerregister. Wordt meestal gebruikt in taakstappen waarvoor geen volledig gekwalificeerde servernaam is vereist, cmd
bijvoorbeeld stappen die Azure CLI-opdrachten voor registers uitvoeren.
version 1.1.0
steps:
# List repositories in registry
- cmd: az login --identity
- cmd: az acr repository list --name $RegistryName
Run.Date
De huidige UTC-tijd waarop de uitvoering is gestart.
Run.Commit
Voor een taak die wordt geactiveerd door een doorvoer naar een GitHub-opslagplaats, de doorvoer-id.
Run.Branch
Voor een taak die wordt geactiveerd door een doorvoer naar een GitHub-opslagplaats, de naam van de vertakking.
Aliassen
Vanaf ondersteunt v1.1.0
ACR Tasks aliassen die beschikbaar zijn voor taakstappen wanneer ze worden uitgevoerd. Aliassen zijn qua concept vergelijkbaar met aliassen (opdrachtsnelkoppelingen) die worden ondersteund in bash en sommige andere opdrachtshells.
Met een alias kunt u elke opdracht of groep opdrachten (inclusief opties en bestandsnamen) starten door één woord in te voeren.
ACR Tasks ondersteunt verschillende vooraf gedefinieerde aliassen en ook aangepaste aliassen die u maakt.
Vooraf gedefinieerde aliassen
De volgende taakaliassen zijn beschikbaar voor gebruik in plaats van uitvoeringsvariabelen:
Alias | Variabele uitvoeren |
---|---|
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 |
Begin in taakstappen voor een alias met de $
-instructie, zoals in dit voorbeeld:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID -f hello-world.dockerfile .
Afbeeldingsaliassen
Elk van de volgende aliassen verwijst naar een stabiele installatiekopieën in Microsoft Container Registry (MCR). U kunt naar elk van deze bestanden verwijzen in de cmd
sectie van een taakbestand zonder een instructie te gebruiken.
Alias | Installatiekopie |
---|---|
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 |
In de volgende voorbeeldtaak worden verschillende aliassen gebruikt om tags van installatiekopieën die ouder zijn dan 7 dagen op te ruimen in de opslagplaats samples/hello-world
in het uitvoeringsregister:
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
Aangepaste alias
Definieer een aangepaste alias in uw YAML-bestand en gebruik deze zoals wordt weergegeven in het volgende voorbeeld. Een alias mag alleen alfanumerieke tekens bevatten. De standaardrichtlijn voor het uitvouwen van een alias is het $
teken.
version: v1.1.0
alias:
values:
repo: myrepo
steps:
- build: -t $Registry/$repo/hello-world:$ID -f Dockerfile .
U kunt een koppeling maken naar een extern of lokaal YAML-bestand voor aangepaste aliasdefinities. Het volgende voorbeeld is gekoppeld aan een YAML-bestand in Azure Blob Storage:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Volgende stappen
Zie Taken voor bouwen, testen en patchen uitvoeren in ACR-taken voor een overzicht van taken met meerdere stappen.
Zie overzicht van ACR-taken voor builds met één stap.