Dela via


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

Azure DevOps-tjänster

I den här snabbstarten lär du dig att skapa 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 beroende på vilken agent du använder i din pipeline.

Förutsättningar

Kategori Kravspecifikation
Azure DevOps – Ett Azure DevOps-projekt.
– En möjlighet att köra pipelines på Microsoft-hanterade agenter. Du kan antingen köpa ett parallellt jobb eller begära en kostnadsfri nivå.
– Grundläggande kunskaper om YAML och Azure Pipelines. Mer information finns i Skapa din första pipeline.
- Behörigheter:
     För att skapa en pipeline måste användarna vara i gruppen Deltagare och gruppen måste ha behörigheten Skapa bygg-pipeline inställd på Tillåt. Medlemmar i grupperna Byggadministratörer och Projektadministratörer kan också hantera pipelines.
GitHub (på engelska) – Ett GitHub-konto .
– En GitHub-tjänstanslutning för att auktorisera Azure Pipelines.
Blått En prenumeration för Azure.

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 anger du 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 kontrollerar du 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. 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 klienten som behövs för Docker-byggen.

  • Du kan 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 avsnittet Windows- och Linux-agentalternativ som finns tillgängliga med Microsoft-värdbaserade agenter.

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

För att spara tid på att hämta Docker-avbildningar för varje jobb från containerregistret är vissa vanliga avbildningar förinstallerade på Microsoft-värdbaserade agenter.

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 eller daemonen körs på agentens värd. Om Docker inte är installerat lägger du till dockerinstallationsuppgiften i pipelinen. Lägg 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 byggen i Azure Pipelines?

Om du använder Microsoft-hostade agenter skickas varje jobb till en nyetablerad virtuell dator baserat på avbildningen som genereras från mallarna i azure-pipelines-image-generation repository. 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 cachelagra Docker-lager utan några omvägar eftersom den kortvariga 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ölj dessa steg för att skapa 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?

Information om hur du testar containerbaserade program och publicerar testresultat 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. Information om hur du skickar en avbildning till ett containerregister finns i någon av följande artiklar: