Kurz: Automatizace sestavení imagí kontejneru v cloudu při potvrzení zdrojového kódu
Kromě rychlé úlohy služba ACR Tasks podporuje automatizované sestavení imagí kontejneru Dockeru v cloudu při potvrzení zdrojového kódu do úložiště Git. Podporované kontexty Gitu pro ACR Tasks zahrnují veřejný nebo privátní GitHub nebo Azure Repos.
Poznámka:
V současné době služba ACR Tasks nepodporuje triggery potvrzení ani žádosti o přijetí změn v úložištích GitHub Enterprise.
V tomto kurzu se vaše úloha ACR sestaví a odešle jednu image kontejneru zadanou v souboru Dockerfile při potvrzení zdrojového kódu do úložiště Git. Pokud chcete vytvořit vícekrokovou úlohu , která pomocí souboru YAML definuje kroky pro sestavení, nasdílení a volitelně testování více kontejnerů při potvrzení kódu, přečtěte si kurz : Spuštění vícekrokového pracovního postupu kontejneru v cloudu při potvrzení zdrojového kódu. Přehled úloh ACR najdete v tématu Automatizace oprav operačního systému a architektury pomocí ACR Tasks.
V tomto kurzu:
- Vytvořit úkol
- Test úlohy
- Zobrazení stavu úkolů
- Aktivace úlohy potvrzením kódu
Tento kurz předpokládá, že jste už dokončili kroky z předchozího kurzu. Pokud jste to ještě neudělali, dokončete před pokračováním kroky v části Požadavky předchozího kurzu.
Požadavky
Získání vzorového kódu
Tento kurz předpokládá, že jste už dokončili kroky v předchozím kurzu a že jste vytvořili fork ukázkového úložiště a naklonovali ho. Pokud jste to ještě neudělali, dokončete před pokračováním kroky v části Požadavky předchozího kurzu.
Registr kontejneru
Abyste mohli dokončit tento kurz, musíte mít ve svém předplatném registr kontejneru Azure. Pokud potřebujete registr, podívejte se na předchozí kurz nebo článek Rychlý start: Vytvoření registru kontejnerů pomocí Azure CLI.
Vytvoření tokenu PAT GitHubu
Aby služba ACR Tasks aktivovala úlohu při potvrzení do úložiště Git, potřebuje pro přístup k úložišti osobní přístupový token (PAT ). Pokud ještě nemáte pat, vygenerujte ho pomocí následujícího postupu na GitHubu:
Přejděte na stránku vytvoření tokenu PAT na GitHubu na adrese https://github.com/settings/tokens/new.
Zadejte krátký popis tokenu, například „Ukázka služby ACR Tasks“.
Vyberte obory pro ACR pro přístup k úložišti. Pokud chcete získat přístup k veřejnému úložišti jako v tomto kurzu, v části úložiště povolte úložiště:status a public_repo
Poznámka:
Pokud chcete vygenerovat pat pro přístup k privátnímu úložišti, vyberte obor pro úplné řízení úložiště.
Vyberte tlačítko Generate token (Vygenerovat token). (Můžete být vyzváni k potvrzení hesla.)
Vygenerovaný token zkopírujte a uložte na bezpečné místo (tento token použijete při definici úlohy v následující části).
Příprava prostředí pro rozhraní příkazového řádku Azure
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Vytvoření úlohy sestavení
Dokončili jste kroky potřebné k tomu, abyste službě ACR Tasks povolili číst stav potvrzení a vytvářet webhooky v úložišti. Teď můžete vytvořit úlohu, která aktivuje sestavení image kontejneru při potvrzení do úložiště.
Nejdřív vyplňte tyto proměnné prostředí hodnotami vhodnými pro vaše prostředí. Tento krok není nezbytně nutný, ale usnadní provádění víceřádkových příkazů Azure CLI v tomto kurzu. Pokud tyto proměnné prostředí nenaplníte, musíte každou hodnotu ručně nahradit všude tam, kde se zobrazí v ukázkových příkazech.
ACR_NAME=<registry-name> # The name of your Azure container registry
GIT_USER=<github-username> # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the previous section
Teď vytvořte úlohu spuštěním následujícího příkazu az acr task create .
Poznámka:
Soubor Dockerfile použitý v následujícím příkladu závisí na imagi veřejného základního kontejneru z Docker Hubu. Pokud chcete zvýšit spolehlivost při použití veřejného obsahu, naimportujte a spravujte image v privátním registru kontejnerů Azure a aktualizujte soubor Dockerfile tak, aby používal privátní spravovanou základní image. Přečtěte si další informace o práci s veřejnými imagemi.
az acr task create \
--registry $ACR_NAME \
--name taskhelloworld \
--image helloworld:{{.Run.ID}} \
--context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
--file Dockerfile \
--git-access-token $GIT_PAT
Tato úloha určuje, že kdykoli se kód potvrdí do hlavní větve v úložišti určeném službou --context
ACR Tasks, sestaví image kontejneru z kódu v této větvi. Soubor Dockerfile určený --file
z kořenového adresáře úložiště se používá k sestavení image. Argument --image
určuje parametrizovanou hodnotu {{.Run.ID}}
pro část verze značky image a zajišťuje tak, že sestavená image koreluje s konkrétním sestavením a je jedinečným způsobem označená.
Výstup úspěšného příkazu az acr task create je podobný následujícímu:
{
"agentConfiguration": {
"cpu": 2
},
"creationDate": "2010-11-19T22:42:32.972298+00:00",
"id": "/subscriptions/<Subscription ID>/resourceGroups/myregistry/providers/Microsoft.ContainerRegistry/registries/myregistry/tasks/taskhelloworld",
"location": "westcentralus",
"name": "taskhelloworld",
"platform": {
"architecture": "amd64",
"os": "Linux",
"variant": null
},
"provisioningState": "Succeeded",
"resourceGroup": "myregistry",
"status": "Enabled",
"step": {
"arguments": [],
"baseImageDependencies": null,
"contextPath": "https://github.com/gituser/acr-build-helloworld-node#main",
"dockerFilePath": "Dockerfile",
"imageNames": [
"helloworld:{{.Run.ID}}"
],
"isPushEnabled": true,
"noCache": false,
"type": "Docker"
},
"tags": null,
"timeout": 3600,
"trigger": {
"baseImageTrigger": {
"baseImageTriggerType": "Runtime",
"name": "defaultBaseimageTriggerName",
"status": "Enabled"
},
"sourceTriggers": [
{
"name": "defaultSourceTriggerName",
"sourceRepository": {
"branch": "main",
"repositoryUrl": "https://github.com/gituser/acr-build-helloworld-node#main",
"sourceControlAuthProperties": null,
"sourceControlType": "GitHub"
},
"sourceTriggerEvents": [
"commit"
],
"status": "Enabled"
}
]
},
"type": "Microsoft.ContainerRegistry/registries/tasks"
}
Otestování úlohy sestavení
Teď máte úlohu, která definuje vaše sestavení. Pokud chcete otestovat kanál buildu, aktivujte sestavení ručně pomocí příkazu az acr task run:
az acr task run --registry $ACR_NAME --name taskhelloworld
Příkaz az acr task run
ve výchozím nastavení při spuštění příkazu streamuje výstup protokolu do vaší konzoly. Výstup je zhuštěný tak, aby zobrazoval klíčové kroky.
2020/11/19 22:51:00 Using acb_vol_9ee1f28c-4fd4-43c8-a651-f0ed027bbf0e as the home volume
2020/11/19 22:51:00 Setting up Docker configuration...
2020/11/19 22:51:02 Successfully set up Docker configuration
2020/11/19 22:51:02 Logging in to registry: myregistry.azurecr.io
2020/11/19 22:51:03 Successfully logged in
2020/11/19 22:51:03 Executing step: build
2020/11/19 22:51:03 Obtaining source code and scanning for dependencies...
2020/11/19 22:51:05 Successfully obtained source code and scanned for dependencies
Sending build context to Docker daemon 23.04kB
Step 1/5 : FROM node:15-alpine
[...]
Step 5/5 : CMD ["node", "/src/server.js"]
---> Running in 7382eea2a56a
Removing intermediate container 7382eea2a56a
---> e33cd684027b
Successfully built e33cd684027b
Successfully tagged myregistry.azurecr.io/helloworld:da2
2020/11/19 22:51:11 Executing step: push
2020/11/19 22:51:11 Pushing image: myregistry.azurecr.io/helloworld:da2, attempt 1
The push refers to repository [myregistry.azurecr.io/helloworld]
4a853682c993: Preparing
[...]
4a853682c993: Pushed
[...]
da2: digest: sha256:c24e62fd848544a5a87f06ea60109dbef9624d03b1124bfe03e1d2c11fd62419 size: 1366
2020/11/19 22:51:21 Successfully pushed image: myregistry.azurecr.io/helloworld:da2
2020/11/19 22:51:21 Step id: build marked as successful (elapsed time in seconds: 7.198937)
2020/11/19 22:51:21 Populating digests for step id: build...
2020/11/19 22:51:22 Successfully populated digests for step id: build
2020/11/19 22:51:22 Step id: push marked as successful (elapsed time in seconds: 10.180456)
The following dependencies were found:
- image:
registry: myregistry.azurecr.io
repository: helloworld
tag: da2
digest: sha256:c24e62fd848544a5a87f06ea60109dbef9624d03b1124bfe03e1d2c11fd62419
runtime-dependency:
registry: registry.hub.docker.com
repository: library/node
tag: 9-alpine
digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
git:
git-head-revision: 68cdf2a37cdae0873b8e2f1c4d80ca60541029bf
Run ID: ca6 was successful after 27s
Spuštění sestavení pomocí vložení
Když jste teď ručním spuštěním otestovali úlohu, aktivujte ji automaticky pomocí změny zdrojového kódu.
Nejdřív se ujistěte, že jste v adresáři obsahujícím místní klon úložiště:
cd acr-build-helloworld-node
Potom spuštěním následujících příkazů vytvořte, potvrďte a zapište nový soubor do forku úložiště na GitHubu:
echo "Hello World!" > hello.txt
git add hello.txt
git commit -m "Testing ACR Tasks"
git push origin main
Při spuštění příkazu git push
můžete být vyzváni k zadání přihlašovacích údajů pro GitHub. Zadejte svoje uživatelské jméno pro GitHub a zadejte token PAT, který jste dříve vytvořili pro heslo.
Username for 'https://github.com': <github-username>
Password for 'https://githubuser@github.com': <personal-access-token>
Jakmile odešlete potvrzení do úložiště, spustí se webhook vytvořený službou ACR Tasks a zahájí sestavení ve službě Azure Container Registry. Zobrazte protokoly pro aktuálně spuštěnou úlohu, abyste mohli ověřit a monitorovat průběh sestavení:
az acr task logs --registry $ACR_NAME
Výstup je podobný následujícímu a zobrazuje aktuálně spuštěnou (nebo naposledy spuštěnou) úlohu:
Showing logs of the last created run.
Run ID: ca7
[...]
Run ID: ca7 was successful after 38s
Seznam sestavení
Pokud chcete zobrazit seznam spuštění úloh, která služba ACR Tasks dokončila pro váš registr, spusťte příkaz az acr task list-runs:
az acr task list-runs --registry $ACR_NAME --output table
Výstup příkazu by měl vypadat podobně jako ten následující. Zobrazí se spuštění provedená službou ACR Tasks a ve sloupci označujícím způsob aktivace se u nejnovější úlohy zobrazí „Git Commit“:
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- --------- -------------------- ----------
ca7 taskhelloworld linux Succeeded Commit 2020-11-19T22:54:34Z 00:00:29
ca6 taskhelloworld linux Succeeded Manual 2020-11-19T22:51:47Z 00:00:24
ca5 linux Succeeded Manual 2020-11-19T22:23:42Z 00:00:23
Další kroky
V tomto kurzu jste zjistili, jak pomocí úlohy automaticky aktivovat sestavení image kontejneru v Azure při potvrzení zdrojového kódu do úložiště Git. Přejděte k dalšímu kurzu, ve kterém se naučíte vytvářet úlohy, které aktivují sestavení při aktualizaci základní image kontejneru.