Delen via


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

    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. 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 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 die when: ["-"] 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 met id 'id1' en id '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.0kunt 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 runof 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.0ondersteunt 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.