Kör uppgifter för att skapa, testa och korrigera flera steg i ACR-uppgifter
Uppgifter i flera steg utökar bygg- och push-funktionen för enskilda avbildningar i ACR-uppgifter med arbetsflöden med flera steg och flera containrar. Använd uppgifter i flera steg för att skapa och push-skicka flera avbildningar i serier eller parallellt. Kör sedan avbildningarna som kommandon i en enda uppgiftskörning. Varje steg definierar en containeravbildningsbygg- eller push-åtgärd och kan även definiera körningen av en container. Varje steg i en uppgift med flera steg använder en container som körningsmiljö.
Viktigt
Om du tidigare skapade uppgifter i förhandsversionen med kommandot az acr build-task behöver de uppgifterna skapas på nytt med hjälp av kommandot az acr task.
Du kan till exempel köra en uppgift med steg som automatiserar följande logik:
- Skapa en avbildning av ett webbprogram
- Köra webbprogramcontainern
- Skapa en testavbildning för en webbapp
- Kör testcontainern för webbprogram som utför tester mot den programcontainer som körs
- Om testerna är klara skapar du ett arkivpaket för Helm-diagram
- Utföra en med
helm upgradehjälp av det nya arkivpaketet för Helm-diagram
Alla steg utförs i Azure, vilket avlastar arbetet till Azures beräkningsresurser och frigör dig från infrastrukturhantering. Förutom ditt Azure-containerregister betalar du bara för de resurser du använder. Information om priser finns i avsnittet Container Build (Containerbygge) i Azure Container Registry priser.
Vanliga uppgiftsscenarier
Uppgifter i flera steg möjliggör scenarier som följande logik:
- Skapa, tagga och push-skicka en eller flera containeravbildningar i serier eller parallellt.
- Resultat av körnings- och insamlingsenhetstest och kodtäckning.
- Kör och avbilda funktionstester. ACR-uppgifter har stöd för att köra fler än en container och köra en serie begäranden mellan dem.
- Utför uppgiftsbaserad körning, inklusive för-/eftersteg för en containeravbildningsbygge.
- Distribuera en eller flera containrar med din favoritdistributionsmotor till målmiljön.
Uppgiftsdefinition i flera steg
En uppgift i flera steg i ACR-uppgifter definieras som en serie steg i en YAML-fil. Varje steg kan ange beroenden när ett eller flera föregående steg har slutförts. Följande typer av uppgiftssteg är tillgängliga:
build: Skapa en eller flera containeravbildningar med välbekantdocker buildsyntax, i serie eller parallellt.push: Skicka skapade avbildningar till ett containerregister. Privata register som Azure Container Registry stöds, liksom den offentliga Docker Hub.cmd: Kör en container så att den kan fungera som en funktion i kontexten för den uppgift som körs. Du kan skicka parametrar till containerns och ange egenskaper som[ENTRYPOINT]env, detach och andra bekantadocker runparametrar. Stegtypencmdmöjliggör enhets- och funktionstestning med samtidig containerkörning.
Följande kodfragment visar hur du kombinerar de här aktivitetsstegstyperna. Uppgifter i flera steg kan vara så enkla som att skapa en enda avbildning från en Dockerfile och push-pusha till registret, med en YAML-fil som liknar:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Eller mer komplext, till exempel den här fiktiva definitionen i flera steg som innehåller steg för att skapa, testa, helm-paketet och helm-distributionen (konfiguration av containerregistret och Helm-lagringsplatsen visas inte):
version: v1.1.0
steps:
- id: build-web
build: -t $Registry/hello-world:$ID .
when: ["-"]
- id: build-tests
build: -t $Registry/hello-world-tests ./funcTests
when: ["-"]
- id: push
push: ["$Registry/helloworld:$ID"]
when: ["build-web", "build-tests"]
- id: hello-world-web
cmd: $Registry/helloworld:$ID
- id: funcTests
cmd: $Registry/helloworld:$ID
env: ["host=helloworld:80"]
- cmd: $Registry/functions/helm package --app-version $ID -d ./helm ./helm/helloworld/
- cmd: $Registry/functions/helm upgrade helloworld ./helm/helloworld/ --reuse-values --set helloworld.image=$Registry/helloworld:$ID
Se uppgiftsexempel för YAML-filer och Dockerfiles i flera steg för flera scenarier.
Köra en exempelaktivitet
Uppgifter stöder både manuell körning, som kallas "snabbkörning" och automatisk körning vid Git-genomförande eller basavbildningsuppdatering.
För att köra en uppgift definierar du först uppgiftens steg i en YAML-fil och kör sedan Azure CLI-kommandot az acr run.
Här är ett exempel på ett Azure CLI-kommando som kör en uppgift med hjälp av en YAML-exempelfil. Dess steg skapar och push-pushar sedan en avbildning. Uppdatera \<acrName\> med namnet på ditt eget Azure-containerregister innan du kör kommandot .
az acr run --registry <acrName> -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
När du kör uppgiften bör utdata visa förloppet för varje steg som definierats i YAML-filen. I följande utdata visas stegen som acb_step_0 och acb_step_1 .
az acr run --registry myregistry -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Sending context to registry: myregistry...
Queued a run with ID: yd14
Waiting for an agent...
2018/09/12 20:08:44 Using acb_vol_0467fe58-f6ab-4dbd-a022-1bb487366941 as the home volume
2018/09/12 20:08:44 Creating Docker network: acb_default_network
2018/09/12 20:08:44 Successfully set up Docker network: acb_default_network
2018/09/12 20:08:44 Setting up Docker configuration...
2018/09/12 20:08:45 Successfully set up Docker configuration
2018/09/12 20:08:45 Logging in to registry: myregistry.azurecr-test.io
2018/09/12 20:08:46 Successfully logged in
2018/09/12 20:08:46 Executing step: acb_step_0
2018/09/12 20:08:46 Obtaining source code and scanning for dependencies...
2018/09/12 20:08:47 Successfully obtained source code and scanned for dependencies
Sending build context to Docker daemon 109.6kB
Step 1/1 : FROM hello-world
---> 4ab4c602aa5e
Successfully built 4ab4c602aa5e
Successfully tagged myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:48 Executing step: acb_step_1
2018/09/12 20:08:48 Pushing image: myregistry.azurecr-test.io/hello-world:yd14, attempt 1
The push refers to repository [myregistry.azurecr-test.io/hello-world]
428c97da766c: Preparing
428c97da766c: Layer already exists
yd14: digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812 size: 524
2018/09/12 20:08:55 Successfully pushed image: myregistry.azurecr-test.io/hello-world:yd14
2018/09/12 20:08:55 Step id: acb_step_0 marked as successful (elapsed time in seconds: 2.035049)
2018/09/12 20:08:55 Populating digests for step id: acb_step_0...
2018/09/12 20:08:57 Successfully populated digests for step id: acb_step_0
2018/09/12 20:08:57 Step id: acb_step_1 marked as successful (elapsed time in seconds: 6.832391)
The following dependencies were found:
- image:
registry: myregistry.azurecr-test.io
repository: hello-world
tag: yd14
digest: sha256:1a6fd470b9ce10849be79e99529a88371dff60c60aab424c077007f6979b4812
runtime-dependency:
registry: registry.hub.docker.com
repository: library/hello-world
tag: latest
digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
git: {}
Run ID: yd14 was successful after 19s
Mer information om automatiserade byggen vid Git-genomförande eller uppdatering av basavbildningar finns i självstudieartiklarna Automatisera avbildningsbyggen och Basavbildningsuppdateringsbyggen.
Nästa steg
Du hittar referens och exempel för aktiviteter i flera steg här:
- Uppgiftsreferens – Uppgiftsstegtyper, deras egenskaper och användning.
- Uppgiftsexempel –
task.yamlExempel- och Docker-filer för flera scenarier, enkla till komplexa. - Cmd-lagringsplatsen – En samling containrar som kommandon för ACR-uppgifter.