Automatisera containeravbildningsversioner och underhåll med ACR Tasks

Containrar ger nya nivåer av virtualisering, isolerar program- och utvecklarberoenden från infrastruktur- och driftskrav. Det som återstår är dock behovet av att åtgärda hur den här programvirtualiseringen hanteras och korrigeras under containerns livscykel.

Vad är ACR-uppgifter?

ACR Tasks är en uppsättning funktioner i Azure Container Registry. Den tillhandahåller molnbaserad containeravbildningsbyggnad för plattformar som Linux, Windows och ARM och kan automatisera os- och ramverkskorrigeringar för dina Docker-containrar. ACR Tasks utökar inte bara utvecklingscykeln "inner-loop" till molnet med containeravbildningsversioner på begäran, utan möjliggör även automatiserade versioner som utlöses av källkodsuppdateringar, uppdateringar av en containers basavbildning eller timers. Med basavbildningsuppdateringsutlösare 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öljer principerna för oföränderliga containrar.

[! VIKTIGT] ACR pausar tillfälligt ACR Tasks-körningar från kostnadsfria Azure-krediter. Detta kan påverka befintliga aktiviteter. Om du stöter på problem öppnar du ett supportärende för vårt team för att ge ytterligare vägledning. Observera att befintliga kunder inte påverkas av den här pausen. Vi uppdaterar vårt dokumentationsmeddelande här när pausen lyfts.

Aktivitetsscenarier

ACR Tasks stöder 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. Exempelkontexter är en Git-lagringsplats eller ett lokalt filsystem.

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

Snabbaktivitet

Utvecklingscykeln för den inre loopen, den iterativa processen för att skriva kod, skapa och testa ditt program innan du förbinder dig till källkontroll, är verkligen början på livscykelhanteringen för containrar.

Innan du checkar in din första kodrad kan ACR Tasks snabbaktivitetsfunktion ge en integrerad utvecklingsupplevelse genom att avlasta dina containeravbildningsversioner till Azure. Med snabbuppgifter kan du verifiera dina automatiserade byggdefinitioner och fånga upp potentiella problem innan du genomför koden.

Med det välbekanta docker build formatet tar kommandot az acr build i Azure CLI en kontext (uppsättningen filer som ska skapas), skickar den till ACR Tasks och skickar den som standard den skapade avbildningen till registret när den är klar.

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

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

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

Dricks

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

Utlösaraktivitet vid uppdatering av källkod

Utlös en containeravbildningsversion eller uppgift i flera steg när kod har checkats in, eller en pull-begäran görs eller uppdateras, till en offentlig eller privat Git-lagringsplats i GitHub eller Azure DevOps. Konfigurera till exempel 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 koden på lagringsplatsen utlöser en ACR Tasks-skapad webhook en version av containeravbildningen som definierats på lagringsplatsen.

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

Utlösare Aktiverad som standard
Checka in Ja
Pull-begäran Nej

Kommentar

För närvarande stöder inte ACR-uppgifter utlösare för inchecknings- eller pull-begäranden i GitHub Enterprise-lagringsplatser.

Lär dig hur du utlöser versioner vid incheckning av källkod i den andra självstudien om ACR-uppgifter, Automatisera containeravbildningsversioner med Azure Container Registry Tasks.

Personlig åtkomsttoken

För att konfigurera en utlösare för källkodsuppdatering måste du ange en personlig åtkomsttoken (PAT) för att ange webhooken på den offentliga eller privata GitHub- eller Azure DevOps-lagringsplatsen. Nödvändiga omfång för PAT är följande:

Lagringsplatstyp GitHub DevOps
Offentlig lagringsplats repo:status
public_repo
Kod (läs)
Privat lagringsplats lagringsplats (fullständig kontroll) Kod (läs)

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

Automatisera korrigering av operativsystem och ramverk

Kraften i ACR Tasks för att verkligen förbättra ditt arbetsflöde för containerbygge kommer från dess förmåga att identifiera en uppdatering till en basavbildning. En funktion i de flesta containeravbildningar är en basavbildning 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 av en basavbildning när den skapar en programavbildning. När den uppdaterade basavbildningen skickas till registret, eller om en basavbildning uppdateras på en offentlig lagringsplats, till exempel i Docker Hub, kan ACR Tasks automatiskt skapa alla programavbildningar baserat på den. Med den här automatiska identifieringen och återskapande sparar ACR Tasks den tid och det arbete som normalt krävs för att manuellt spåra och uppdatera varje programavbildning som refererar till din uppdaterade basavbildning.

Läs mer om utlösare för basavbildningsuppdatering för ACR-uppgifter. Och lär dig hur du utlöser en avbildningsversion när en basavbildning skickas till ett containerregister i självstudien Automatisera containeravbildningsversioner 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 aktiviteten. Schemaläggning av en uppgift är användbart för att köra containerarbetsbelastningar enligt ett definierat schema, eller 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

Med flerstegsuppgifter får du stegbaserad 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 webbappsbild
  2. Kör webbprogramcontainern
  3. Skapa en testbild för webbprogram
  4. Kör testcontainern för webbprogram, som utför tester mot den programcontainer som körs
  5. Om testerna godkänns skapar du ett Helm-diagramarkivpaket
  6. Utföra en helm upgrade med hjälp av det nya Helm-diagramarkivpaketet

Med flerstegsuppgifter kan du dela upp byggnaden, körningen och testningen av en avbildning i mer komposterbara steg med stöd för beroenden mellan steg. Med flerstegsaktiviteter i ACR-uppgifter har du mer detaljerad kontroll över arbetsflöden för bildskapande, testning och os och ramverkskorrigering.

Lär dig mer om flerstegsaktiviteter i Kör bygg-, test- och korrigeringsuppgifter i ACR-uppgifter i flera steg.

Kontextplatser

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

Plats för kontext beskrivning Exempel
Lokalt filsystem Filer i en katalog i det lokala filsystemet. /home/user/projects/myapp
GitHub-huvudgren Filer inom huvudgrenen (eller annan standard) för en offentlig eller privat GitHub-lagringsplats. https://github.com/gituser/myapp-repo.git
GitHub-gren Specifik gren av en offentlig eller privat GitHub-lagringsplats. https://github.com/gituser/myapp-repo.git#mybranch
GitHub-undermapp Filer i en undermapp på en offentlig eller privat GitHub-lagringsplats. Exempel visar en kombination av en gren- och undermappsspecifikation. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub-incheckning Specifik incheckning i en offentlig eller privat GitHub-lagringsplats. Exempel visar en kombination av en incheckningshash (SHA) 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-lagringsplats. Exempel visar en kombination av förgrenings- och undermappsspecifikation. 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 i en containerregisterlagringsplats. oci://myregistry.azurecr.io/myartifact:mytag

Kommentar

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

Bildplattformar

Som standard skapar ACR Tasks avbildningar för Linux-operativsystemet och amd64-arkitekturen. Ange taggen --platform 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 ange en variant i OS/arkitektur/variantformat (till exempel --platform Linux/arm64/v8):

OS Arkitektur
Linux amd64
Arm
arm64
386
Windows amd64

Visa aktivitetens utdata

Varje aktivitetskörning genererar loggutdata som du kan kontrollera för att avgöra om aktivitetsstegen har körts. När du utlöser en aktivitet 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ällkodsincheckning eller en basavbildningsuppdatering, lagras endast aktivitetsloggar. Visa körningsloggarna i Azure-portalen 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 byggen och underhåll av containeravbildningar i molnet kan du läsa självstudieserien ACR Tasks.

Du kan också installera Docker-tillägget för Visual Studio Code och Azure-kontotillägget för att arbeta med dina Azure-containerregister. Hämta och skicka avbildningar till ett Azure-containerregister, eller kör ACR Tasks, allt i Visual Studio Code.