Köra uppgifter för att skapa, testa och korrigera i flera steg i ACR Tasks
Uppgifter i flera steg utökar funktionen för att skapa och push-överföra en avbildning i ACR Tasks med arbetsflöden med flera steg och flera containrar. Använd uppgifter i flera steg för att skapa och push-överföra flera avbildningar, i serier eller parallellt. Kör sedan avbildningarna som kommandon i en enda aktivitetskörning. Varje steg definierar en containeravbildningsversion eller push-åtgärd och kan även definiera körningen av en container. Varje steg i en uppgift i 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 testbild för webbprogram
- Kör webbprogrammets testcontainer som utför tester mot den programcontainer som körs
- Om testerna godkänns skapar du ett Helm-diagramarkivpaket
- Utföra en
helm upgrade
med hjälp av det nya Helm-diagramarkivpaketet
Alla steg utförs i Azure, vilket avlastar arbetet till Azures beräkningsresurser och befriar dig från infrastrukturhantering. Förutom ditt Azure-containerregister betalar du bara för de resurser som du använder. Information om priser finns i avsnittet Container Build i Azure Container Registry prissättning.
Vanliga uppgiftsscenarier
Uppgifter i flera steg möjliggör scenarier som följande logik:
- Skapa, tagga och push-överföra en eller flera containeravbildningar, i serier eller parallellt.
- Köra och avbilda resultat för enhetstest och kodtäckning.
- Kör och avbilda funktionella tester. ACR Tasks stöder körning av fler än en container och kör en serie begäranden mellan dem.
- Utför uppgiftsbaserad körning, inklusive för-/eftersteg för en containeravbildningsversion.
- Distribuera en eller flera containrar med din favoritdistributionsmotor till målmiljön.
Uppgiftsdefinition i flera steg
En uppgift i flera steg i ACR Tasks definieras som en serie steg i en YAML-fil. Varje steg kan ange beroenden för slutförandet av ett eller flera föregående steg. Följande typer av uppgiftssteg är tillgängliga:
build
: Skapa en eller flera containeravbildningar med välbekantdocker build
syntax, i serier eller parallellt.push
: Push-överför 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 aktivitet som körs. Du kan skicka parametrar till containerns[ENTRYPOINT]
och ange egenskaper som env, detach och andra välbekantadocker run
parametrar. Stegtypencmd
möjliggör enhets- och funktionstestning med samtidig containerkörning.
Följande kodfragment visar hur du kombinerar dessa typer av uppgiftssteg. Uppgifter i flera steg kan vara så enkla som att skapa en enskild avbildning från en Dockerfile och push-överföra 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 komplex, till exempel den här fiktiva flerstegsdefinitionen som innehåller steg för att skapa, testa, helm-paket och helm-distribution (containerregistret och Helm-lagringsplatsens konfiguration 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 exempeluppgift
Uppgifter stöder både manuell körning, som kallas "snabbkörning" och automatisk körning vid Git-incheckning eller uppdatering av basavbildningar.
Om du vill 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. Stegen bygger och push-överför 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 ska 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 versioner av Git-incheckning eller uppdatering av basavbildningar finns i självstudieartiklarna Automatisera avbildningsversioner och Basavbildningsuppdateringsversioner .
Nästa steg
Du hittar uppgiftsreferenser och exempel i flera steg här:
- Uppgiftsreferens – Typer av aktivitetssteg, deras egenskaper och användning.
- Uppgiftsexempel – Exempel
task.yaml
och Docker-filer för flera scenarier, enkla till komplexa. - Cmd-lagringsplats – En samling containrar som kommandon för ACR-uppgifter.