Dela via


Kör uppgifter för att skapa, testa och korrigera i flera steg i ACR-uppgifter

Flerstegsaktiviteter utökar funktionen för att skapa och push-överföra enskilda avbildningar för ACR-uppgifter med arbetsflöden med flera steg och flera containrar. Använd uppgifter i flera steg för att skapa och push-överföra flera bilder, 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:

  1. Skapa en webbappsbild
  2. Kör webbprogramcontainern
  3. Skapa en testbild för webbprogram
  4. Kör testcontainern för webbprogram som utför tester mot programcontainern som körs
  5. Om testerna godkänns skapar du ett Helm-diagramarkivpaket
  6. 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 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 i Prissättning för Azure Container Registry.

Vanliga aktivitetsscenarier

Flerstegsaktiviteter aktiverar scenarier som följande logik:

  • Skapa, tagga och push-överföra en eller flera containeravbildningar, i serie eller parallellt.
  • Kör och samla in enhetstest och kodtäckningsresultat.
  • Kör och samla in funktionella tester. ACR Tasks 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 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 att slutföra ett eller flera tidigare steg. Följande typer av aktivitetssteg är tillgängliga:

  • build: Skapa en eller flera containeravbildningar med välbekant docker build syntax, i serier eller parallellt.
  • push: Skicka byggda 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, frånkoppling och andra välbekanta docker run parametrar. Stegtypen cmd möjliggör enhets- och funktionstestning, med samtidig containerkörning.

Följande kodfragment visar hur du kombinerar de här aktivitetsstegstyperna. Flerstegsuppgifter kan vara så enkla som att skapa en enskild avbildning från en Dockerfile och skicka 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-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 aktivitetsexempel för YAML-filer och Dockerfiles i flera steg för flera scenarier.

Köra en exempeluppgift

Aktiviteter stöder både manuell körning, som kallas "snabbkörning" och automatisk körning på Git-incheckning eller basavbildningsuppdatering.

Om du vill köra en uppgift definierar du först aktivitetens 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 basavbildningsuppdatering 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.