Automatisera containeravbildningsbyggen och underhåll med ACR-uppgifter

Containrar ger nya virtualiseringsnivåer som isolerar program- och utvecklarberoenden från infrastruktur- och driftkrav. Det som finns kvar är dock behovet av att hantera hur den här programvirtualiseringen hanteras och korrigeras under containerns livscykel.

Vad är ACR-uppgifter?

ACR-uppgifter är en uppsättning funktioner i Azure Container Registry. Den tillhandahåller molnbaserad containeravbildningsskapande för plattformar som Linux, Windows och ARM och kan automatisera korrigering av operativsystem och ramverk för dockercontainrar. ACR-uppgifter utökar inte bara din "inre loop"-utvecklingscykel till molnet med containeravbildningsbyggen på begäran, utan möjliggör även automatiserade byggen som utlöses av källkodsuppdateringar, uppdateringar av en containers basavbildning eller timers. Med utlösare för uppdatering av basavbildningar kan du till exempel automatisera arbetsflödet för korrigering av operativsystem och programramverk, upprätthålla säkra miljöer samtidigt som du följa principerna för oföränderliga containrar.

Uppgiftsscenarier

ACR-uppgifter flera scenarier för att skapa och underhålla containeravbildningar och andra artefakter. Mer information finns i följande avsnitt i den här artikeln.

Varje ACR-uppgift har en associerad källkodskontext – platsen för en uppsättning källfiler som används för att skapa en containeravbildning eller annan artefakt. Exempelkontexterna är en Git-lagringsplats eller ett lokalt filsystem.

Uppgifter kan också dra nytta av körningsvariabler, så att du kan återanvända uppgiftsdefinitioner och standardisera taggar för bilder och artefakter.

Snabbuppgift

Utvecklingscykeln i den inre loopen, den iterativa processen för att skriva kod, skapa och testa ditt program innan du börjar använda källkontroll, är i början av livscykelhanteringen för containrar.

Innan du genomför din första kodrad kan ACR-uppgifter snabbuppgiftsfunktion ge en integrerad utvecklingsupplevelse genom att avlasta dina containeravbildningsbyggen till Azure. Med snabbuppgifter kan du verifiera dina automatiserade byggdefinitioner och fånga upp potentiella problem innan du utför koden.

Med det välbekanta formatet tar kommandot az acr build i Azure CLI en kontext (uppsättningen filer som ska byggas), skickar den till ACR-uppgifter och skickar som standard den skapade avbildningen till registret när den har docker build slutförts.

En introduktion finns i snabbstarten för att skapa och köra en containeravbildning i Azure Container Registry.

ACR-uppgifter är utformat som en primitiv containerlivscykel. Du kan till exempel integrera ACR-uppgifter din CI/CD-lösning. Genom att köra az login med ett huvudnamn för tjänstenkan din CI/CD-lösning sedan utfärda az acr build-kommandon för att starta avbildningsbyggen.

Lär dig hur du använder snabbuppgifter i den första ACR-uppgifter självstudien Skapa containeravbildningar i molnet med Azure Container Registry-uppgifter.

Tips

Om du vill skapa och skicka en avbildning direkt från källkoden utan en Dockerfile Azure Container Registry kommandot az acr pack build (förhandsversion). Det här verktyget skapar och push-pushar en avbildning från programmets källkod med hjälp av Cloud Native Buildpacks.

Utlösa aktivitet vid uppdatering av källkod

Utlöst en containeravbildningsbygge eller uppgift i flera steg när kod har utförts, eller när en pull-begäran görs eller uppdateras, till en offentlig eller privat Git-lagringsplats i GitHub eller Azure DevOps. Du kan till exempel konfigurera en bygguppgift med Azure CLI-kommandot az acr task create genom att ange en Git-lagringsplats och eventuellt en gren och Dockerfile. När ditt team uppdaterar kod på lagringsplatsen utlöser en ACR-uppgifter webhook en version av containeravbildningen som definierats i lagringsplatsen.

ACR-uppgifter stöder följande utlösare när du anger en Git-lagringsplatsen som aktivitetens kontext:

Utlösare Aktiverat som standard
Checka in Ja
Pull-begäran Inga

Anteckning

För närvarande ACR-uppgifter inte utlösare för genomförande eller pull-begäran i GitHub Enterprise-lagringsplatsen.

Lär dig hur du utlöser byggen vid källkods genomförande i den andra ACR-uppgifter självstudiekursen Automatisera containeravbildningsbyggen med Azure Container Registry-uppgifter.

Personlig åtkomsttoken

För att konfigurera en uppdateringsutlösare för källkod måste du ange uppgiften som en personlig åtkomsttoken (PAT) för att ställa in webhooken i den offentliga eller privata GitHub eller Azure DevOps-lagringsplatsen. Nödvändiga omfång för PAT är följande:

Lagringsplatsens typ GitHub DevOps
Offentlig lagringsplatsen repo:status
public_repo
Kod (läsa)
Privat lagringsplatsen repo (fullständig kontroll) Kod (läsa)

Information om hur du skapar en PAT finns i GitHub eller Azure DevOps-dokumentationen.

Automatisera korrigering av operativsystem och ramverk

Kraften hos ACR-uppgifter att verkligen förbättra arbetsflödet för containerbygget kommer från möjligheten att identifiera en uppdatering av en basavbildning. En funktion i de flesta containeravbildningar, en basavbildning, är en överordnad avbildning som en eller flera programavbildningar baseras på. Basavbildningar innehåller vanligtvis operativsystemet och ibland programramverk.

Du kan konfigurera en ACR-uppgift för att spåra ett beroende till en basavbildning när den skapar en programavbildning. När den uppdaterade basavbildningen skickas till registret eller en basavbildning uppdateras i en offentlig lagringsplatsen, till exempel i Docker Hub, kan ACR-uppgifter automatiskt skapa alla programavbildningar baserat på den. Med den här automatiska identifieringen och återskapande ACR-uppgifter sparar du den tid och arbetsinsats som normalt krävs för att manuellt spåra och uppdatera varje programavbildning som refererar till den uppdaterade basavbildningen.

Läs mer om utlösare för uppdatering av basavbildningar för ACR-uppgifter. Och lär dig hur du utlöser en avbildningsbygge när en basavbildning skickas till ett containerregister i självstudien Automatisera containeravbildningsbyggen när en basavbildning uppdateras i ett Azure-containerregister

Schemalägga en aktivitet

Du kan också schemalägga en aktivitet genom att konfigurera en eller flera timerutlösare när du skapar eller uppdaterar uppgiften. Schemaläggning av en uppgift är användbart för att köra containerarbetsbelastningar enligt ett definierat schema, eller för att köra underhållsåtgärder eller tester på avbildningar som skickas regelbundet till registret. Mer information finns i Köra en ACR-uppgift enligt ett definierat schema.

Uppgifter i flera steg

Uppgifter i flera steg ger stegvis uppgiftsdefinition och körning för att skapa, testa och korrigera containeravbildningar i molnet. Uppgiftssteg som definieras i en YAML-fil anger enskilda bygg- och push-åtgärder för containeravbildningar eller andra artefakter. De kan också definiera körningen av en eller flera container så varje steg använder containern som sin körningsmiljö.

Du kan till exempel skapa en uppgift i flera steg som automatiserar följande:

  1. Skapa en avbildning av ett webbprogram
  2. Köra webbprogramcontainern
  3. Skapa en testavbildning för en webbapp
  4. Kör testcontainern för webbprogram, som utför tester mot den programcontainer som körs
  5. Om testerna är klara skapar du ett arkivpaket för Helm-diagram
  6. Utföra en med helm upgrade hjälp av det nya arkivpaketet för Helm-diagram

Med uppgifter i flera steg kan du dela upp byggnaden, köra och testa en bild i mer sammansättningsbara steg med stöd för beroenden mellan steg. Med uppgifter i flera steg i ACR-uppgifter har du mer detaljerad kontroll över arbetsflöden för bildskapande, testning och korrigering av operativsystem och ramverk.

Lär dig mer om uppgifter i flera steg i Kör uppgifter för att skapa, testa och korrigeraflera steg i ACR-uppgifter .

Kontextplatser

I följande tabell visas exempel på kontextplatser som stöds för ACR-uppgifter:

Kontextplats Beskrivning Exempel
Lokalt filsystem Filer i en katalog i det lokala filsystemet. /home/user/projects/myapp
GitHub huvudgren Filer i huvudgrenen (eller någon annan standardgren) på en offentlig eller privat GitHub lagringsplats. https://github.com/gituser/myapp-repo.git
GitHub gren Specifik gren av en offentlig eller privat GitHub lagringsplatsen. https://github.com/gituser/myapp-repo.git#mybranch
GitHub undermapp Filer i en undermapp i en offentlig eller privat GitHub lagringsplatsen. Exempel som visar en kombination av en specifikation för en gren och undermapp. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub genomför Specifika genomföranden i en offentlig eller privat GitHub lagringsplatsen. Exempel som visar en kombination av en sha-hash (commit hash) och undermappsspecifikation. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-undermapp Filer i en undermapp på en offentlig eller privat Azure-lagringsplatsen. Exempel som visar en kombination av specifikation för gren och undermapp. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Fjärr-tarball Filer i ett komprimerat arkiv på en fjärrwebbserver. http://remoteserver/myapp.tar.gz
Artefakt i containerregistret OCI-artefaktfiler på en containerregisterdatabas. oci://myregistry.azurecr.io/myartifact:mytag

Anteckning

När du använder en Git-lagringsplatsen som kontext för en uppgift som utlöses av en källkodsuppdatering måste du ange en personlig åtkomsttoken (PAT).

Bildplattformar

Som standard ACR-uppgifter avbildningar för Linux-operativsystemet och amd64-arkitekturen. Ange --platform taggen för att skapa Windows-avbildningar eller Linux-avbildningar för andra arkitekturer. Ange operativsystemet och eventuellt en arkitektur som stöds i OS-/arkitekturformat (till exempel --platform Linux/arm ). För ARM-arkitekturer kan du välja att ange en variant i OS/arkitektur/variant-format (till exempel --platform Linux/arm64/v8 ):

Operativsystem Arkitektur
Linux amd64
arm
arm64
386
Windows amd64

Visa aktivitetens utdata

Varje uppgiftskörning genererar loggutdata som du kan granska för att avgöra om aktivitetsstegen har körts korrekt. När du utlöser en uppgift manuellt strömmas loggutdata för aktivitetskörningen till konsolen och lagras även för senare hämtning. När en aktivitet utlöses automatiskt, till exempel av en källkodsuppdatering eller en basavbildningsuppdatering, lagras endast uppgiftsloggar. Visa körningsloggarna i Azure Portal eller använd kommandot az acr task logs.

Läs mer om att visa och hantera aktivitetsloggar.

Nästa steg

När du är redo att automatisera containeravbildningsbyggen och underhåll i molnet kan du gå ACR-uppgifter självstudieserien.

Du kan också installera Docker-tillägget för Visual Studio Code och Azure-kontotillägget så att de fungerar med dina Azure-containerregister. Hämta och push-skicka avbildningar till ett Azure-containerregister eller kör ACR-uppgifter, allt inom Visual Studio Code.