Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zadania wieloetapowe rozszerzają funkcję kompilowania i wypychania pojedynczego obrazu usługi ACR Tasks przy użyciu wieloetapowych przepływów pracy opartych na wielu kontenerach. Zadania wieloetapowe umożliwiają kompilowanie i wypychanie kilku obrazów w serii lub równolegle. Następnie uruchom te obrazy jako polecenia w ramach jednego uruchomienia zadania. Każdy krok definiuje kompilację obrazu kontenera lub operację wypychania, a także może definiować wykonywanie kontenera. Każdy krok w zadaniu wieloetapowym używa kontenera jako środowiska wykonywania.
Important
Jeśli wcześniej utworzono zadania w wersji zapoznawczej za az acr build-task pomocą polecenia , należy je ponownie utworzyć przy użyciu polecenia az acr task .
Można na przykład uruchomić zadanie z krokami automatyzującymi następującą logikę:
- Tworzenie obrazu aplikacji internetowej
- Uruchamianie kontenera aplikacji internetowej
- Tworzenie obrazu testowego aplikacji internetowej
- Uruchamianie kontenera testowego aplikacji internetowej, który wykonuje testy względem uruchomionego kontenera aplikacji
- Jeśli testy przejdą, skompiluj pakiet archiwum Helm
- Wykonaj
helm upgradeprzy użyciu nowego pakietu archiwum Helm chart
Wszystkie kroki są wykonywane na platformie Azure, odciążając pracę z zasobami obliczeniowymi platformy Azure i zwalniając Cię z zarządzania infrastrukturą. Oprócz rejestru kontenerów platformy Azure płacisz tylko za używane zasoby. Aby uzyskać informacje na temat cen, zobacz sekcję Container Build (Kompilacja kontenera ) w cenniku usługi Azure Container Registry.
Typowe scenariusze zadań
Zadania wieloetapowe umożliwiają wykonywanie takich scenariuszy jak następująca logika:
- Tworzenie, tagowanie i wypychanie co najmniej jednego obrazu kontenera, szeregowo lub równolegle.
- Uruchamianie i przechwytywanie wyników testu jednostkowego i pokrycia kodu.
- Uruchamianie i przechwytywanie testów funkcjonalnych. Usługa ACR Tasks obsługuje uruchamianie więcej niż jednego kontenera, wykonując między nimi serię żądań.
- Wykonaj zadania obejmujące kroki przed/po budowie obrazu kontenera.
- Wdróż co najmniej jeden kontener przy użyciu ulubionego narzędzia wdrażania w swoim środowisku docelowym.
Definicja zadania wieloetapowego
Zadanie wieloetapowe w usłudze ACR Tasks jest definiowane jako seria kroków w pliku YAML. Każdy krok może określać zależności od pomyślnego ukończenia co najmniej jednego poprzedniego kroku. Dostępne są następujące typy kroków zadań:
-
build: Skompiluj co najmniej jeden obraz kontenera przy użyciu znanejdocker buildskładni w serii lub równolegle. -
push: Przenieś skompilowane obrazy do rejestru kontenerów. Prywatne rejestry, takie jak Usługa Azure Container Registry, są obsługiwane, podobnie jak publiczna usługa Docker Hub. -
cmd: Uruchom kontener, tak aby mógł działać jako funkcja w kontekście uruchomionego zadania. Parametry można przekazać do kontenera[ENTRYPOINT]i określić właściwości, takie jak env, detach i inne znanedocker runparametry.cmdTyp kroku umożliwia testowanie jednostkowe i funkcjonalne z równoczesnymi wykonywaniem kontenera.
Poniższe fragmenty kodu pokazują, jak połączyć te typy kroków zadań. Zadania wieloetapowe mogą być tak proste, jak tworzenie pojedynczego obrazu z pliku Dockerfile i przesyłanie go do rejestru za pomocą pliku YAML podobnego do:
version: v1.1.0
steps:
- build: -t $Registry/hello-world:$ID .
- push: ["$Registry/hello-world:$ID"]
Lub bardziej złożone, takie jak fikcyjna definicja wieloetapowa, która obejmuje kroki kompilacji, testowania, pakietu helm i wdrażania helm (nie pokazano konfiguracji rejestru kontenerów i repozytorium Helm):
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
Zobacz przykłady zadań dla plików YAML dla zadań wieloetapowych i plików Dockerfile dla różnych scenariuszy.
Uruchamianie przykładowego zadania
Zadania obsługują zarówno wykonywanie ręczne, nazywane "szybkim uruchomieniem", jak i automatyczne wykonywanie w ramach zatwierdzenia w Git lub aktualizacji obrazu bazowego.
Aby uruchomić zadanie, najpierw zdefiniuj kroki zadania w pliku YAML, a następnie wykonaj polecenie interfejsu wiersza polecenia platformy Azure az acr run.
Oto przykładowe polecenie Azure CLI, które uruchamia zadanie z użyciem przykładowego pliku YAML zadania. Jego kroki kompilują, a następnie wypychają obraz. Przed uruchomieniem polecenia zaktualizuj \<acrName\> nazwę własnego rejestru kontenerów platformy Azure.
az acr run --registry <acrName> -f build-push-hello-world.yaml https://github.com/Azure-Samples/acr-tasks.git
Po uruchomieniu zadania dane wyjściowe powinny pokazywać postęp każdego kroku zdefiniowanego w pliku YAML. W poniższych danych wyjściowych kroki są wyświetlane jako acb_step_0 i 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
Aby uzyskać więcej informacji na temat automatycznych kompilacji w ramach zatwierdzania usługi Git lub aktualizacji obrazu podstawowego, zobacz artykuły z samouczkiem automatyzowania kompilacji obrazów i aktualizacji obrazu podstawowego .
Dalsze kroki
Dokumentacja zadań wieloetapowych i przykłady można znaleźć tutaj:
- Dokumentacja zadania — typy kroków zadań, ich właściwości i użycie.
-
Przykłady zadań — przykładowe
task.yamlpliki platformy Docker dla kilku scenariuszy, proste i złożone. - Cmd repo — zbiór kontenerów używanych jako polecenia w zadaniach ACR.