Snabbstart: Skapa en containeravbildning för att distribuera appar med Hjälp av Azure Pipelines

Azure DevOps Services

Den här snabbstarten visar hur du skapar en containeravbildning för appdistribution med Hjälp av Azure Pipelines. För att skapa den här avbildningen behöver du bara en Dockerfile på lagringsplatsen. Du kan skapa Linux- eller Windows-containrar baserat på agenten som du använder i din pipeline.

Förutsättningar

Förgrena exempellagringsplatsen

I webbläsaren går du till följande exempellagringsplats och förgrenar den till ditt GitHub-konto.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Skapa en Linux- eller Windows-avbildning

  1. Logga in på din Azure DevOps-organisation och gå till projektet.

  2. Gå till Pipelines och välj Ny pipeline eller Skapa pipeline om du skapar den första pipelinen i projektet.

  3. Välj GitHub som plats för källkoden.

  4. Välj lagringsplatsen och välj sedan Startpipeline.

    • Om du omdirigeras till GitHub för att logga in anger du dina GitHub-autentiseringsuppgifter.
    • Om du omdirigeras till GitHub för att installera Azure Pipelines-appen väljer du Godkänn och installera.
  5. Ersätt innehållet i azure-pipelines.yml med följande kod. Beroende på om du distribuerar en Linux- eller Windows-app måste du ange vmImage antingen ubuntu-latest eller windows-latest.

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. När du är klar väljer du Spara och kör.

  7. När du lägger till filen azure-pipelines.yml på lagringsplatsen uppmanas du att lägga till ett incheckningsmeddelande. Ange ett meddelande och välj sedan Spara och kör.

När du använder lokalt installerade agenter måste du se till att Docker är installerat på agentens värd och att Docker-motorn/daemonen körs med förhöjd behörighet.

För att skapa avbildningen måste Docker installeras på agentens värd och Docker-motorn/daemon måste köras med förhöjd behörighet. Använd följande steg för att skapa din pipeline med yaml-pipelineredigeraren.

  1. Gå till samlingen och skapa ett projekt.
  2. I projektet väljer du Pipelines.
  3. Välj Skapa pipeline.
  4. Välj GitHub Enterprise Server som plats för källkoden.
  5. Om du inte redan har gjort det kan du auktorisera Azure Pipelines att ansluta till ditt GitHub Enterprise Server-konto.
    1. Välj Anslut till GitHub Enterprise Server.
    2. Ange din kontoinformation och välj sedan Verifiera och spara.
  6. Välj din lagringsplats. Om du omdirigeras till GitHub för att installera Azure Pipelines-appen väljer du Godkänn och installera.
  7. Om du vill konfigurera din pipeline väljer du mallen Skapa en Docker-avbildning .
  8. I YAML-pipelineredigeraren ersätter du innehållet i YAML-filen med följande kod. Ersätt poolnamnet med namnet på poolen som innehåller din egen värdbaserade agent med Docker-funktionen.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. Välj Spara och kör.
  2. På sidan Spara och kör väljer du Spara och kör igen.

Mer information om hur du skapar Docker-avbildningar finns i Docker-uppgiften som används av det här exempelprogrammet. Du kan också anropa Docker-kommandon direkt med hjälp av en kommandoradsaktivitet.

Containeravbildningarna skapas och lagras på agenten. Du kan skicka avbildningen till Google Container Registry, Docker Hub eller Azure Container Registry. Mer information finns i Push-överföra en avbildning till Docker Hub eller Google Container Registry eller Push-överföra en avbildning till Azure Container Registry.

Rensa resurser

Om du inte planerar att fortsätta använda det här programmet tar du bort din pipeline och kodlagringsplats.

Vanliga frågor

Vilka agenter kan jag använda för att skapa containeravbildningar?

  • Du kan skapa Linux-containeravbildningar med hjälp av Microsoft-värdbaserade Ubuntu-agenter eller Linux-plattformsbaserade lokalt installerade agenter.

  • Du kan skapa Windows-containeravbildningar med Microsoft-värdbaserade Windows-agenter eller Windows-plattformsbaserade lokalt installerade agenter. Alla Microsoft-värdbaserade Windows-plattformsbaserade agenter levereras med Moby-motorn och den klient som behövs för Docker-versioner.

  • Du kan för närvarande inte använda Microsoft-värdbaserade macOS-agenter för att skapa containeravbildningar eftersom Moby-motorn som behövs för att skapa avbildningarna inte är förinstallerad på dessa agenter.

Mer information finns i Tillgängliga alternativ för Windows- och Linux-agenten med Microsoft-värdbaserade agenter.

Vilka färdiga Docker-avbildningar är tillgängliga på värdbaserade agenter?

För att undvika långa intervall för att hämta Docker-avbildningar för varje jobb från containerregistret är vissa vanliga avbildningar förinstallerade på Microsoft-värdbaserade agenter. Listan över tillgängliga förinstallerade avbildningar finns i Inkluderad programvara för tillgängliga VM-avbildningar på lagringsplatsen azure-pipelines-image-generation.

Hur gör jag för att ange BuildKit-variabeln för mina Docker-versioner?

BuildKit introducerar byggförbättringar kring prestanda, lagringshantering, funktionsfunktioner och säkerhet. BuildKit stöds för närvarande inte på Windows-värdar.

Om du vill aktivera Docker-versioner med BuildKit anger du variabeln DOCKER_BUILDKIT .

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

Hur kan jag använda en lokalt installerad agent?

Docker måste installeras och motorn/daemonen som körs på agentens värd. Om Docker inte är installerat på agentens värd kan du lägga till dockerinstallationsuppgiften i pipelinen. Du måste lägga till Docker Installer-aktiviteten före Docker-aktiviteten.

Hur skapar jag en skriptbaserad Docker-version i stället för att använda Docker-uppgiften?

Du kan använda build kommandot eller något annat Docker-kommando.

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

Det här kommandot skapar en avbildning som motsvarar en som skapats med Docker-aktiviteten. Internt anropar Docker-aktiviteten Docker-binärfilen på ett skript och syr ihop några fler kommandon för att ge några fler fördelar. Läs mer om Docker-uppgift.

Kan jag återanvända cachelagring av lager under versioner av Azure Pipelines?

Om du använder Microsoft-värdbaserade agenter skickas varje jobb till en nyetablerad virtuell dator, baserat på avbildningen som genereras från lagringslagringsmallar för azure-pipelines-image-generation. De här virtuella datorerna rensas när jobbet har slutförts. Den här tillfälliga livslängden förhindrar återanvändning av dessa virtuella datorer för efterföljande jobb och återanvändning av cachelagrade Docker-lager. Som en lösning kan du konfigurera en flerstegsversion som skapar två avbildningar och skickar dem till ett avbildningsregister i ett tidigt skede. Du kan sedan be Docker att använda dessa avbildningar som cachekälla med --cache-from argumentet .

Om du använder lokalt installerade agenter kan du cachelagrar Docker-lager utan några lösningar eftersom problemet med den tillfälliga livslängden inte gäller för dessa agenter.

Hur gör jag för att skapa Linux-containeravbildningar för andra arkitekturer än x64?

När du använder Microsoft-värdbaserade Linux-agenter skapar du Linux-containeravbildningar för x64-arkitekturen. Om du vill skapa avbildningar för andra arkitekturer, till exempel x86- eller ARM-processor, kan du använda en datoremulator såsom QEMU.

Följande steg visar hur du skapar en ARM-processorcontaineravbildning med hjälp av QEMU:

  1. Skapa Dockerfile med en basavbildning som matchar målarkitekturen:

    FROM arm64v8/alpine:latest
    
  2. Kör följande skript i jobbet innan du skapar avbildningen:

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

Mer information finns i qemu-user-static på GitHub.

Hur gör jag för att köra tester och publicera testresultat för containerbaserade program?

Olika alternativ för att testa containerbaserade program och publicera de resulterande testresultaten finns i Publicera testresultat.

Nästa steg

När du har skapat containeravbildningen skickar du avbildningen till Azure Container Registry, Docker Hub eller Google Container Registry. Om du vill lära dig hur du skickar en avbildning till ett containerregister fortsätter du till någon av följande artiklar: