Taken met meerdere stappen bouwen, testen en patchen uitvoeren in ACR Tasks
Taken met meerdere stappen breiden de build-and-push-functionaliteit van ACR Tasks met werkstromen met meerdere stappen uit. Gebruik taken met meerdere stappen om verschillende installatiekopieën te bouwen en te pushen, in reeksen of parallel. Voer deze installatiekopieën vervolgens uit als opdrachten binnen één taakuitvoering. Elke stap definieert een build- of pushbewerking voor een containerinstallatiekopieën en kan ook de uitvoering van een container definiëren. Elke stap in een taak met meerdere stappen maakt gebruik van een container als uitvoeringsomgeving.
Belangrijk
Als u eerder taken hebt gemaakt tijdens de preview met de opdracht az acr build-task
, moeten deze taken opnieuw worden gemaakt met de opdracht az acr task.
U kunt bijvoorbeeld een taak uitvoeren met stappen waarmee de volgende logica wordt geautomatiseerd:
- Een webtoepassingsinstallatiekopieën bouwen
- De webtoepassingscontainer uitvoeren
- Een testafbeelding voor een webtoepassing bouwen
- Voer de testcontainer van de webtoepassing uit die tests uitvoert op basis van de actieve toepassingscontainer
- Als de tests zijn geslaagd, bouwt u een Helm-grafiekarchiefpakket
helm upgrade
Een nieuw Helm-grafiekarchiefpakket gebruiken
Alle stappen worden uitgevoerd in Azure, het offloaden van het werk naar de rekenresources van Azure en het vrijmaken van infrastructuurbeheer. Naast uw Azure-containerregister betaalt u alleen voor de resources die u gebruikt. Zie de sectie Container Build in prijzen van Azure Container Registry voor meer informatie over prijzen.
Algemene taakscenario's
Taken met meerdere stappen maken scenario's mogelijk zoals de volgende logica:
- Bouw, tag en push een of meer containerinstallatiekopieën, in reeksen of parallel.
- Test- en codedekkingsresultaten uitvoeren en vastleggen.
- Functionele tests uitvoeren en vastleggen. ACR Tasks ondersteunt het uitvoeren van meer dan één container, waarbij een reeks aanvragen tussen deze containers wordt uitgevoerd.
- Voer op taken gebaseerde uitvoering uit, inclusief de stappen vooraf/na van een build van een containerinstallatiekopieën.
- Implementeer een of meer containers met uw favoriete implementatie-engine in uw doelomgeving.
Taakdefinitie met meerdere stappen
Een taak met meerdere stappen in ACR Tasks wordt gedefinieerd als een reeks stappen in een YAML-bestand. Elke stap kan afhankelijkheden opgeven voor de geslaagde voltooiing van een of meer vorige stappen. De volgende taakstaptypen zijn beschikbaar:
build
: Bouw een of meer containerinstallatiekopieën met behulp van vertrouwdedocker build
syntaxis, in reeksen of parallel.push
: Push ingebouwde installatiekopieën naar een containerregister. Privéregisters zoals Azure Container Registry worden ondersteund, net als de openbare Docker Hub.cmd
: Voer een container uit, zodat deze kan worden uitgevoerd als een functie binnen de context van de actieve taak. U kunt parameters doorgeven aan de container[ENTRYPOINT]
en eigenschappen opgeven, zoals env, loskoppelen en andere bekendedocker run
parameters. Met hetcmd
staptype kunnen eenheids- en functionele tests worden uitgevoerd, met gelijktijdige uitvoering van containers.
In de volgende fragmenten ziet u hoe u deze taakstaptypen kunt combineren. Taken met meerdere stappen kunnen net zo eenvoudig zijn als het bouwen van één installatiekopieën vanuit een Dockerfile en het pushen naar uw register, met een YAML-bestand dat vergelijkbaar is met:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Of complexer, zoals deze fictieve definitie met meerdere stappen, waaronder stappen voor het bouwen, testen, helm-pakket en helm implementeren (configuratie van containerregister en Helm-opslagplaats wordt niet weergegeven):
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
Zie taakvoorbeelden voor YAML-bestanden met meerdere stappen en Dockerfiles voor verschillende scenario's.
Een voorbeeldtaak uitvoeren
Taken ondersteunen zowel handmatige uitvoering, een zogenaamde 'snelle uitvoering' en geautomatiseerde uitvoering op Git-doorvoer of update van basisinstallatiekopieën.
Als u een taak wilt uitvoeren, definieert u eerst de stappen van de taak in een YAML-bestand en voert u vervolgens de Azure CLI-opdracht az acr run uit.
Hier volgt een voorbeeld van een Azure CLI-opdracht waarmee een taak wordt uitgevoerd met behulp van een YAML-voorbeeldtaakbestand. Met de stappen wordt een installatiekopieën gebouwd en vervolgens gepusht. Werk \<acrName\>
bij met de naam van uw eigen Azure-containerregister voordat u de opdracht uitvoert.
az acr run --registry <acrName> -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Wanneer u de taak uitvoert, moet in de uitvoer de voortgang worden weergegeven van elke stap die is gedefinieerd in het YAML-bestand. In de volgende uitvoer worden de stappen weergegeven als acb_step_0
en 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
Voor meer informatie over geautomatiseerde builds op Git commit of basisinstallatiekopieën bijwerken raadpleegt u de zelfstudie-artikelen over het automatiseren van builds voor installatiekopieën en het bijwerken van basisinstallatiekopieën .
Volgende stappen
U vindt hier naslaginformatie over taken met meerdere stappen en voorbeelden:
- Taakverwijzing : taakstaptypen, eigenschappen en gebruik.
- Voorbeelden van taken : voorbeeldbestanden
task.yaml
en Docker-bestanden voor verschillende scenario's, eenvoudig tot complex. - Cmd-opslagplaats : een verzameling containers als opdrachten voor ACR-taken.