Zelfstudie: Builds van containerinstallatiekopieën automatiseren in de cloud wanneer u broncode doorvoert
Naast een snelle taak ondersteunt ACR-taken geautomatiseerde builds van Docker-containerinstallatiekopieën in de cloud wanneer u broncode doorvoert in een Git-opslagplaats. Ondersteunde Git-contexten voor ACR-taken zijn onder andere openbare of privéopslagplaatsen in GitHub of Azure.
Notitie
Op dit moment biedt ACR-taken geen ondersteuning voor de aanvraagtriggers commit of pull in GitHub Enterprise-opslagplaatsen.
In deze zelfstudie wordt met uw ACR-taak één containerinstallatiekopie gemaakt en gepusht, die is opgegeven in een Dockerfile als u broncode in een Git-opslagplaats doorvoert. Als u een taak met meerdere stappen wilt maken die gebruikmaakt van een YAML-bestand om stappen te definiëren voor het bouwen, pushen en desgewenst testen van meerdere containers bij het doorvoeren van code, raadpleegt u de zelfstudie: Een containerwerkstroom met meerdere stappen uitvoeren in de cloud wanneer u broncode doorvoert. Zie Besturingssysteem- en frameworkpatching automatiseren met ACR-taken voor een overzicht van ACR-taken
In deze zelfstudie:
- Een taak maken
- De taak testen
- Taakstatus weergeven
- De taak activeren met een code-doorvoer
In deze zelfstudie wordt ervan uitgegaan dat u de stappen in de vorige zelfstudie hebt voltooid. Als u dit nog niet hebt gedaan, voert u de stappen in de sectie Vereisten van de vorige zelfstudie uit voordat u doorgaat.
Vereisten
Voorbeeldcode ophalen
In deze zelfstudie wordt ervan uitgegaan dat u de stappen in de vorige zelfstudie hebt voltooid en dat u de voorbeeldopslagplaats hebt gesplitst en gekloond. Als u dit nog niet hebt gedaan, voert u de stappen in de sectie Vereisten van de vorige zelfstudie uit voordat u doorgaat.
Containerregister
U moet een Azure-containerregister in uw Azure-abonnement hebben om deze zelfstudie te voltooien. Als u een register nodig hebt, zie dan de vorige zelfstudie of Snelstartgids: Een containerregister maken met de Azure CLI.
Een persoonlijk toegangstoken van GitHub maken
ACR Tasks heeft een persoonlijk toegangstoken (PAT) nodig voor toegang tot de opslagplaats om een taak te activeren voor een doorvoering naar een Git-opslagplaats. Als u nog geen PAT hebt, voert u de volgende stappen uit om er een in GitHub te genereren:
Navigeer naar de pagina PAT maken op GitHub op https://github.com/settings/tokens/new
Geef een korte beschrijving voor het token op, bijvoorbeeld 'Demo ACR Tasks'
Selecteer bereiken voor ACR om toegang te krijgen tot de opslagplaats. Voor toegang tot een openbare opslagplaats zoals in deze zelfstudie, schakelt u onder repo de opties repo:status and public_repo in
Notitie
Als u een PAT wilt genereren om toegang te krijgen tot een privéopslagplaats, selecteert u het bereik voor volledige controle van de opslagplaats.
Selecteer de knop Token genereren (u wordt mogelijk gevraagd om uw wachtwoord te bevestigen)
Kopieer en bewaar het gegenereerde token in een beveiligde locatie (u gebruikt dit token bij het definiëren van een taak in de volgende sectie)
De omgeving voorbereiden op de Azure CLI
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
De build-taak maken
Nu u de stappen hebt voltooid die nodig zijn om ACR Tasks in te schakelen om toewijzingsstatus te lezen en webhooks te maken in een opslagplaats, kunt u een taak maken die een build van een containerinstallatiekopie activeert op doorvoeracties naar de opslagplaats.
Vul eerst deze shell-omgevingsvariabelen met waarden die geschikt zijn voor uw omgeving. Hoewel deze stap strikt genomen niet vereist is, vereenvoudigt u hiermee de uitvoering van meerregelige Azure CLI-opdrachten in deze zelfstudie. Als u deze omgevingsvariabelen niet invult, moet u elke bijbehorende waarde handmatig vervangen wanneer deze wordt weergegeven in de voorbeeldopdrachten.
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
Maak nu de taak door de volgende opdracht az acr task create uit te voeren.
Notitie
Het Dockerfile dat in het volgende voorbeeld wordt gebruikt, is afhankelijk van een openbare basiscontainerinstallatiekopieën van Docker Hub. Om de betrouwbaarheid te verbeteren bij het gebruik van openbare inhoud, importeert en beheert u de installatiekopieën in een persoonlijk Azure-containerregister en werkt u uw Dockerfile bij om uw privé beheerde basisinstallatiekopieën te gebruiken. Meer informatie over het werken met openbare afbeeldingen.
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
Deze taak geeft aan dat elke keer dat code wordt doorgevoerd naar de hoofdvertakking in de opslagplaats zoals is opgegeven met --context
, ACR Tasks de containerinstallatiekopie van de code in deze vertakking bouwt. Er wordt gebruik gemaakt van het Dockerfile dat is opgegeven door --file
vanuit de hoofdmap. Het argument --image
geeft een parameterwaarde van {{.Run.ID}}
aan voor het versiegedeelte van de tag van de installatiekopie, zodat de gebouwde installatiekopie correleert met een specifieke build en uniek is gelabeld.
De uitvoer van een geslaagde az acr task create-opdracht is vergelijkbaar met het volgende:
{
"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"
}
De build-taak testen
U hebt nu een taak die uw build definieert. Als u de build-pipeline wilt testen, activeert u een build handmatig door de opdracht az acr task run uit te voeren:
az acr task run --registry $ACR_NAME --name taskhelloworld
Met de opdracht az acr task run
streamt u standaard de logboekuitvoer naar de console wanneer u de opdracht uitvoert. De uitvoer is ingekort om de belangrijkste stappen weer te geven.
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
Een build activeren met een doorvoer
Nu u de taak hebt getest door deze handmatig uit te voeren, gaat u deze automatisch activeren met een wijziging in de broncode.
Controleer eerst of u zich bevindt in de map waarin de lokale kloon van de opslagplaats staat:
cd acr-build-helloworld-node
Voer vervolgens de volgende opdrachten uit om een nieuw bestand te maken, door te voeren en pushen naar uw fork van de opslagplaats op GitHub:
echo "Hello World!" > hello.txt
git add hello.txt
git commit -m "Testing ACR Tasks"
git push origin main
U wordt mogelijk gevraagd om uw GitHub-referenties op te geven wanneer u de opdracht git push
uitvoert. Geef uw GitHub-gebruikersnaam op en voer het persoonlijke toegangstoken (PAT) in dat u eerder hebt gemaakt voor het wachtwoord.
Username for 'https://github.com': <github-username>
Password for 'https://githubuser@github.com': <personal-access-token>
Zodra u een doorvoer naar de opslagplaats hebt gepusht, wordt de webhook die is gemaakt door ACE Tasks geactiveerd en wordt een build in Azure Container Registry in gang gezet. Geef de logboeken weer voor de taak die momenteel wordt uitgevoerd om de voortgang van de build te verifiëren en controleren:
az acr task logs --registry $ACR_NAME
De uitvoer is vergelijkbaar met de volgende, waarin de op dit moment uitgevoerde (of de laatst uitgevoerde) taak wordt getoond:
Showing logs of the last created run.
Run ID: ca7
[...]
Run ID: ca7 was successful after 38s
Builds weergeven
Voor een overzicht van de taken die ACR Tasks heeft voltooid voor het register, voert u de opdracht az acr task-list-runs uit:
az acr task list-runs --registry $ACR_NAME --output table
De uitvoer van de opdracht ziet er ongeveer als volgt uit. De runs die ACR Tasks heeft uitgevoerd, worden weergegeven. 'Git Commit' wordt weergegeven in de kolom TRIGGER voor de meest recente taak:
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
Volgende stappen
In deze zelfstudie leert u hoe u een taak gebruikt om builds van containerinstallatiekopieën automatisch te activeren in Azure wanneer u broncode naar een Git-opslagplaats doorvoert. Ga verder naar de volgende zelfstudie voor informatie over het maken van taken die builds activeren wanneer de basisinstallatiekopie van de containerinstallatiekopie wordt bijgewerkt.