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, detachen 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 buildbiedt 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 myregistryen een aangepaste installatiekopieën myimage:mytaghebt.

    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. De Run.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 ideen 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 opgeeft when: ["-"] , 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 met id 'id1' en id '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.0kunt 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 runof 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.0ACR 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.