Naslaginformatie over ACR-taken: YAML
Taakdefinitie met meerdere stappen in ACR Tasks biedt een containergerichte rekenprimitief dat is gericht op het bouwen, testen en patchen van containers. Dit artikel bevat informatie over de opdrachten, parameters, eigenschappen en syntaxis 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 Tasks wilt, raadpleegt u het overzicht van ACR Tasks.
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 een taak te maken met az acr task create die automatisch wordt geactiveerd op een Git-doorvoering, een update van een basisinstallatiekopieën of een planning. Hoewel dit artikel verwijst naar acr-task.yaml
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 algemene 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 de taakstap 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 dit niet een volledige weergave is van alle beschikbare stapeigenschappen of het gebruik van staptypen, 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 als een taakbestand worden verwerkt. Een extensie die niet in de volgende lijst staat, wordt 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
In de volgende secties van dit artikel wordt verwezen naar verschillende voorbeeldtaakbestanden. 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 ze de --registry
parameter weglaten. 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 algemene 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 | Beschrijving | Ondersteunde onderdrukking | Default value |
---|---|---|---|---|---|
version |
tekenreeks | Ja | De versie van het acr-task.yaml bestand die wordt geparseerd door de ACR Tasks-service. Hoewel ACR Tasks ernaar streeft compatibiliteit met eerdere versies te behouden, kan ACR Tasks compatibiliteit binnen een gedefinieerde versie behouden. Als dit niet is opgegeven, wordt standaard ingesteld op v1.0.0 . |
N.v.t. | v1.0.0 |
stepTimeout |
int (seconden) | Ja | 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 in een stap, wordt de stepTimeout eigenschap van de 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 ingesteld door door te geven --timeout aan de az acr task create opdracht). Als de uitvoeringswaarde timeout van de taken kleiner is, heeft deze prioriteit. |
Ja | 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 deze is opgegeven in een stap, wordt de eigenschap van de taak overschreven. |
Ja | c:\workspace in Windows of /workspace in Linux |
env |
[tekenreeks, tekenreeks, ...] | Ja | Matrix van tekenreeksen in key=value indeling waarmee de omgevingsvariabelen voor de taak worden gedefinieerd. Als de eigenschap is opgegeven voor een taak, wordt de standaardeigenschap env van alle stappen ingesteld. Als deze is opgegeven in een stap, worden alle omgevingsvariabelen overschreven die zijn overgenomen van de taak. |
Ja | None |
secrets |
[geheim, geheim, ...] | Ja | Matrix van geheime objecten. | Nee | Geen |
networks |
[netwerk, netwerk, ...] | Ja | Matrix van netwerkobjecten . | Nee | Geen |
volumes |
[volume, volume, ...] | Ja | Matrix van volumeobjecten . Hiermee geeft u volumes met broninhoud te koppelen aan een stap. | Nee | Geen |
geheim
Het geheime object heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Beschrijving | Default value |
---|---|---|---|---|
id |
tekenreeks | Nee | 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 | Beschrijving | Default value |
---|---|---|---|---|
name |
tekenreeks | Nee | De naam van het netwerk. | Geen |
driver |
tekenreeks | Ja | Het stuurprogramma voor het beheren van het netwerk. | Geen |
ipv6 |
bool | Ja | Of IPv6-netwerken zijn ingeschakeld. | false |
skipCreation |
bool | Ja | Of het maken van het netwerk moet worden overgeslagen. | false |
isDefault |
bool | Ja | Of het netwerk een standaardnetwerk is dat wordt geleverd met Azure Container Registry. | false |
volume
Het volumeobject heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Beschrijving | Default value |
---|---|---|---|---|
name |
tekenreeks | Nee | De naam van het volume dat moet worden gekoppeld. Mag alleen alfanumerieke tekens, '-' en '_' bevatten. | Geen |
secret |
map[tekenreeks]tekenreeks | Nee | 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-gecodeerd zijn. | Geen |
Typen taakstappen
ACR Tasks ondersteunt drie stappentypen. Elk staptype ondersteunt verschillende eigenschappen, die in de sectie voor elk staptype worden beschreven.
Staptype | Beschrijving |
---|---|
build |
Hiermee wordt een containerinstallatiekopieën gemaakt met behulp van vertrouwde docker build syntaxis. |
push |
Hiermee wordt een docker push nieuw gemaakt of opnieuw gemarkeerde installatiekopie uitgevoerd 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 container [ENTRYPOINT] . Het cmd staptype ondersteunt parameters zoals env , detach en andere vertrouwde docker run opdrachtopties, het inschakelen van eenheids- en functionele tests met gelijktijdige uitvoering van containers. |
build
Bouw een containerinstallatiekopieën. Het build
staptype vertegenwoordigt een multitenant, veilige manier om in de cloud te worden uitgevoerd docker build
als een eersteklas primitieve.
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 een omgevingsvariabele DOCKER_BUILDKIT=1
toe aan het yaml-bestand om deze 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 buildopties van de docker-buildopdracht , zoals --build-arg
het instellen van build-tijdvariabelen.
Parameter | Description | Optioneel |
---|---|---|
-t | --image |
Definieert de volledig gekwalificeerde image:tag installatiekopie van de ingebouwde installatiekopie.Omdat installatiekopieën kunnen worden gebruikt voor binnenste taakvalidaties, zoals functionele tests, zijn niet alle installatiekopieën vereist push voor een register. Als u echter een installatiekopieën wilt uitvoeren binnen een taakuitvoering, heeft de installatiekopieën wel een naam nodig waarnaar moet worden verwezen.In tegenstelling tot az acr build het uitvoeren van ACR Tasks biedt het uitvoeren van geen standaardpushgedrag. Bij ACR Tasks wordt in het standaardscenario ervan uitgegaan dat u een installatiekopieën kunt bouwen, valideren en vervolgens pushen. Zie push voor het optioneel pushen van ingebouwde installatiekopieën. |
Ja |
-f | --file |
Hiermee geeft u het Dockerfile doorgegeven aan docker build . Als dit niet is opgegeven, wordt ervan uitgegaan dat het standaard Dockerfile in de hoofdmap van de context wordt gebruikt. Als u een Dockerfile wilt opgeven, geeft u de bestandsnaam door ten opzichte van de hoofdmap van de context. |
Ja |
context |
De hoofdmap doorgegeven aan docker build . De hoofdmap van elke taak is ingesteld op een gedeelde workingDirectory en bevat de hoofdmap van de gekoppelde gekloonde Git-map. |
Nee |
Eigenschappen: build
Het build
staptype ondersteunt de volgende eigenschappen. Meer informatie over deze eigenschappen vindt u in de sectie Eigenschappen van de taakstap van dit artikel.
Eigenschappen | Type | Vereist |
---|---|---|
detach |
bool | Optioneel |
disableWorkingDirectoryOverride |
bool | Optioneel |
entryPoint |
tekenreeks | Optioneel |
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
expose |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
bool | Optioneel |
isolation |
tekenreeks | Optioneel |
keep |
bool | Optioneel |
network |
object | Optioneel |
ports |
[tekenreeks, tekenreeks, ...] | Optioneel |
pull |
bool | 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
Dynamische variabele die wordt doorgegeven in ACR Tasks
Wanneer u met ACR-taken (Azure Container Registry) werkt, moet u mogelijk verschillende waarden doorgeven aan uw buildproces zonder de taakdefinitie te wijzigen met behulp van de --set
vlag met de az acr task run
opdracht.
Voorbeeld: Afbeeldingstag instellen tijdens runtime
Stel dat u een ACR-taak hebt gedefinieerd in een acr-task.yml
bestand met een tijdelijke aanduiding voor de afbeeldingstag:
steps:
- build: -t $Registry/hello-world:{{.Values.tag}}
U kunt de taak activeren en de tag
variabele v2
tijdens runtime instellen met behulp van de volgende Azure CLI-opdracht:
az acr task run --registry myregistry --name mytask --set tag=v2
Met deze opdracht start u de ACR-taak met de naam mytask
en bouwt u de installatiekopieën met behulp van de v2
tag, waarbij de tijdelijke aanduiding in het acr-task.yml
bestand wordt overschreven.
Met deze methode kunt u aanpassingen in uw CI/CD-pijplijnen uitvoeren, zodat u parameters dynamisch kunt aanpassen op basis van uw huidige behoeften zonder de taakdefinities te wijzigen.
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: push
Het push
staptype ondersteunt een verzameling afbeeldingen. De syntaxis van de YAML-verzameling ondersteunt inline- en geneste indelingen. Het pushen van één afbeelding wordt meestal weergegeven met behulp van inlinesyntaxis:
version: v1.1.0
steps:
# Inline YAML collection syntax
- push: ["$Registry/hello-world:$ID"]
Gebruik geneste syntaxis bij het pushen van meerdere afbeeldingen voor meer leesbaarheid:
version: v1.1.0
steps:
# Nested YAML collection syntax
- push:
- $Registry/hello-world:$ID
- $Registry/hello-world:latest
Eigenschappen: push
Het push
staptype ondersteunt de volgende eigenschappen. Meer informatie over deze eigenschappen vindt u in de sectie Eigenschappen van de taakstap van dit artikel.
Eigenschap | Type | Vereist |
---|---|---|
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
bool | 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 het cmd
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 |
bool | Optioneel |
disableWorkingDirectoryOverride |
bool | Optioneel |
entryPoint |
tekenreeks | Optioneel |
env |
[tekenreeks, tekenreeks, ...] | Optioneel |
expose |
[tekenreeks, tekenreeks, ...] | Optioneel |
id |
tekenreeks | Optioneel |
ignoreErrors |
bool | Optioneel |
isolation |
tekenreeks | Optioneel |
keep |
bool | Optioneel |
network |
object | Optioneel |
ports |
[tekenreeks, tekenreeks, ...] | Optioneel |
pull |
bool | 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 |
U vindt de details van deze eigenschappen in de sectie Eigenschappen van de taakstap van dit artikel.
Voorbeelden: cmd
Installatiekopie van hallo wereld uitvoeren
Met deze opdracht wordt het hello-world.yaml
taakbestand uitgevoerd, dat verwijst naar de installatiekopie van de hallo wereld in 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
Voer een bash-installatiekopie uit en echo 'hallo wereld'
Met deze opdracht wordt het bash-echo.yaml
taakbestand uitgevoerd, dat verwijst naar de bash-installatiekopieën in 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
Specifieke bash-installatiekopieëntag 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 in 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 ervan uitgegaan dat ze afkomstig zijn van docker.io. Het vorige voorbeeld kan evenzeer worden weergegeven als:
version: v1.1.0
steps:
- cmd: docker.io/bash:3.0 echo hello world
Met behulp van de standaardreferentieconventie docker run
cmd
voor installatiekopieën kunt u installatiekopieën uitvoeren vanuit elk privéregister of de openbare Docker Hub. Als u verwijst naar installatiekopieën in hetzelfde register waarin ACR Task wordt uitgevoerd, hoeft u geen registerreferenties op te geven.
Voer een installatiekopieën uit vanuit 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
Generaliseer de registerreferentie 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 bevat een optionele volumeMounts
eigenschap de volumes en bijbehorende containerpaden die in die stap in de container moeten worden gekoppeld. Geheimen worden geleverd als bestanden op het koppelpad van elk volume.
Voer een taak uit en koppel twee geheimen aan een stap: één die is opgeslagen in een sleutelkluis en één 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 referentiesecties cmd, build en pushstap .
Eigenschap | Type | Optioneel | Beschrijving | Default value |
---|---|---|---|---|
detach |
bool | Ja | Of de container moet worden losgekoppeld wanneer deze wordt uitgevoerd. | false |
disableWorkingDirectoryOverride |
bool | Ja | Of u onderdrukkingsfunctionaliteit wilt uitschakelen workingDirectory . Gebruik dit in combinatie met workingDirectory volledige controle over de werkmap van de container. |
false |
entryPoint |
tekenreeks | Ja | Hiermee wordt de [ENTRYPOINT] container van een stap overschreven. |
Geen |
env |
[tekenreeks, tekenreeks, ...] | Ja | Matrix van tekenreeksen in key=value indeling waarmee de omgevingsvariabelen voor de stap worden gedefinieerd. |
Geen |
expose |
[tekenreeks, tekenreeks, ...] | Ja | Matrix van poorten die worden weergegeven vanuit de container. | Geen |
id |
tekenreeks | Ja | Identificeer de stap in de taak op unieke wijze. Andere stappen in de taak kunnen verwijzen naar een stapid , zoals voor afhankelijkheidscontrole.when Dit id is ook de naam van de actieve container. Processen die in andere containers in de taak worden uitgevoerd, kunnen bijvoorbeeld verwijzen naar de id DNS-hostnaam, of voor toegang met docker-logboeken [id]. |
acb_step_%d , waar %d is de op 0 gebaseerde index van de stap bovenaf in het YAML-bestand |
ignoreErrors |
bool | Ja | Of u de stap markeert als geslaagd, ongeacht of er een fout is opgetreden tijdens de uitvoering van de container. | false |
isolation |
tekenreeks | Ja | Het isolatieniveau van de container. | default |
keep |
bool | Ja | Of de container van de stap na de uitvoering moet worden bewaard. | false |
network |
object | Ja | Identificeert een netwerk waarin de container wordt uitgevoerd. | Geen |
ports |
[tekenreeks, tekenreeks, ...] | Ja | Matrix van poorten die van de container naar de host worden gepubliceerd. | Geen |
pull |
bool | Ja | Of u een pull van de container moet afdwingen voordat u deze uitvoert om cachinggedrag te voorkomen. | false |
privileged |
bool | Ja | Hiermee wordt aangegeven 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 om te proberen als de uitvoering van een container mislukt. Een nieuwe poging wordt alleen uitgevoerd als de afsluitcode van een container niet nul is. | 0 |
retryDelay |
int (seconden) | Ja | De vertraging in seconden tussen nieuwe pogingen van de uitvoering van een container. | 0 |
secret |
object | Ja | Identificeert een Azure Key Vault-geheim of beheerde identiteit voor Azure-resources. | Geen |
startDelay |
int (seconden) | Ja | Aantal seconden om de uitvoering van een container te vertragen. | 0 |
timeout |
int (seconden) | Ja | Het maximum aantal seconden dat een stap kan worden uitgevoerd voordat deze wordt beëindigd. | 600 |
when |
[tekenreeks, tekenreeks, ...] | Ja | Hiermee configureert u de afhankelijkheid van een stap op een of meer andere stappen binnen de taak. | Geen |
user |
tekenreeks | Ja | De gebruikersnaam of UID van een container | Geen |
workingDirectory |
tekenreeks | Ja | Hiermee stelt u de werkmap in voor een stap. ACR Tasks maakt standaard een hoofdmap als de werkmap. Als uw build echter verschillende stappen heeft, kunnen eerdere stappen artefacten delen met latere stappen door dezelfde werkmap op te geven. | c:\workspace in Windows of /workspace in Linux |
volumeMount
Het volumeMount-object heeft de volgende eigenschappen.
Eigenschap | Type | Optioneel | Beschrijving | Default value |
---|---|---|---|---|
name |
tekenreeks | Nee | 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 om bestanden in de container te koppelen. | Geen |
Voorbeelden: Eigenschappen van taakstap
Voorbeeld: id
Bouw twee installatiekopieën, waarbij een functionele testafbeelding wordt geïnstanceerd. Elke stap wordt geïdentificeerd door een unieke id
stap in de taakreferentie in 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 voor andere stappen binnen de taak. Het ondersteunt twee parameterwaarden:
when: ["-"]
- Geeft geen afhankelijkheid aan van andere stappen. Een stap diewhen: ["-"]
u opgeeft, begint onmiddellijk met de uitvoering en maakt gelijktijdige uitvoering van de stap 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
deze stap niet is opgegeven in een stap, is deze stap afhankelijk van de voltooiing van de vorige stap in het acr-task.yaml
bestand.
Uitvoering van opeenvolgende 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 build van installatiekopieën en afhankelijke tests:
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 Tasks 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 opties 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 zijn over het algemeen verklarend. 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 de $Registry
alias in plaats van{{.Run.Registry}}
.
Run.ID
Elke uitvoering, via az acr run
of trigger gebaseerd uitvoeren van taken die zijn gemaakt via az acr task create
, heeft een unieke id. De id vertegenwoordigt de uitvoering die momenteel wordt uitgevoerd.
Wordt meestal gebruikt voor het uniek taggen 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 voor alle taakstappen. Het volume wordt gekoppeld aan c:\workspace
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. Doorgaans gebruikt in taakstappen waarvoor geen volledig gekwalificeerde servernaam is vereist, bijvoorbeeld cmd
stappen voor het uitvoeren van Azure CLI-opdrachten in registers.
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 doorvoering naar een GitHub-opslagplaats, wordt de doorvoer-id gebruikt.
Run.Branch
Voor een taak die wordt geactiveerd door een doorvoering naar een GitHub-opslagplaats, is de naam van de vertakking.
Aliassen
Vanaf dit moment v1.1.0
ondersteunt ACR Tasks aliassen die beschikbaar zijn voor taakstappen wanneer ze worden uitgevoerd. Aliassen zijn vergelijkbaar met aliassen (opdrachtsnelkoppelingen) die worden ondersteund in bash en enkele 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 |
In taakstappen gaat u vooraf aan 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 deze allemaal raadplegen in de cmd
sectie van een taakbestand zonder een instructie te gebruiken.
Alias | Afbeelding |
---|---|
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 voor het opschonen van installatiekopieën die ouder zijn dan 7 dagen 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 kan alleen alfanumerieke tekens bevatten. De standaardrichtlijn voor het uitbreiden 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. In het volgende voorbeeld wordt een YAML-bestand in Azure Blob Storage gekoppeld:
version: v1.1.0
alias:
src: # link to local or remote custom alias files
- 'https://link/to/blob/remoteAliases.yml?readSasToken'
[...]
Volgende stappen
Zie de taken met meerdere stappen uitvoeren in ACR Tasks voor een overzicht van taken met meerdere stappen.
Zie het overzicht van ACR Tasks voor builds met één stap.