Dela via


Använda Azure Pipelines för att skapa och skicka containeravbildningar till register

Azure DevOps Services

Den här artikeln vägleder dig genom att skapa en pipeline för att skapa och skicka en Docker-avbildning till ett Azure Container Registry eller Docker Hub.

Förutsättningar

Produkt Krav
Azure DevOps – Ett Azure DevOps-projekt.
- behörigheter:
    – Om du vill bevilja åtkomst till alla pipelines i projektet: Du måste vara medlem i gruppen Projektadministratörer.
    – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Creator för tjänstanslutningar.
– Om du använder en lokalt installerad agent kontrollerar du att Docker är installerat och att Docker-motorn körs med förhöjd behörighet. Microsoft-värdbaserade agenter har Docker förinstallerat.
GitHub – Ett GitHub- konto.
– En GitHub-lagringsplats med en Dockerfile. Använd exempellagringsplats om du inte har ett eget projekt.
– En GitHub-tjänstanslutning för att auktorisera Azure Pipelines.
Azurblå – En Azure-abonnemang.
– Ett Azure Container Registry-.
Produkt Krav
Azure DevOps – Ett Azure DevOps-projekt.
- behörigheter:
    – Om du vill bevilja åtkomst till alla pipelines i projektet: Du måste vara medlem i gruppen Projektadministratörer.
    – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Creator för tjänstanslutningar.
– Om du använder en lokalt installerad agent kontrollerar du att Docker är installerat och att Docker-motorn körs med förhöjd behörighet. Microsoft-värdbaserade agenter har Docker förinstallerat.
GitHub – Ett GitHub- konto.
– En GitHub-lagringsplats med en Dockerfile. Använd exempellagringsplats om du inte har ett eget projekt.
– En GitHub-tjänstanslutning för att auktorisera Azure Pipelines.
Docker Hub – Ett Docker Hub- konto.
– En Docker Hub avbildningslagringsplats.

Skapa en Docker-registertjänstanslutning

Innan du skickar containeravbildningar till ett register måste du skapa en tjänstanslutning i Azure DevOps. Den här tjänstanslutningen lagrar de autentiseringsuppgifter som krävs för att autentisera säkert med containerregistret. Mer information finns i Docker Registry-tjänstanslutningar.

  1. I ditt Azure DevOps-projekt väljer du Project-inställningar>Tjänstanslutningar.

    Skärmbild av val av projektinställningar.

  2. Välj Ny tjänstanslutning och Docker Registry.

    Skärmbild av urval av Docker Registry.

  3. Välj Docker Hub- och ange följande information:

    Fält Beskrivning
    Docker-ID Ange ditt Docker-ID.
    Docker-lösenord Ange ditt Docker-lösenord.
    Tjänstanslutningsnamn Ange ett namn för tjänstanslutningen.
    Bevilja åtkomstbehörighet till alla pipelines Välj det här alternativet om du vill bevilja åtkomst till alla pipelines.

    Skärmbild av dialogrutan för Docker Hub-tjänstanslutning.

  4. Välj Verifiera och spara.

Skapa en pipeline för att bygga och pusha en Docker-bild

Den Docker@2 uppgiften används för att skapa och skicka avbildningen till containerregistret. Den Docker@2 uppgiften är utformad för att effektivisera processen med att skapa, push-överföra och hantera Docker-avbildningar i dina Azure Pipelines. Den här uppgiften stöder en mängd olika Docker-kommandon, inklusive build, push, login, logout, start, stop och run.

Använd följande steg för att skapa en YAML-pipeline som använder Docker@2-uppgiften för att bygga och överföra avbildningen.

  1. I ditt Azure DevOps-projekt väljer du Pipelines och Ny pipeline.

  2. Välj GitHub- som plats för källkoden och välj din lagringsplats.

    • 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.
  3. Välj din lagringsplats.

  4. Välj mallen Startpipeline för att skapa en grundläggande pipelinekonfiguration.

  5. Ersätt innehållet i azure-pipelines.yml med följande kod:

    
    trigger:
    - main
    
    pool:
      vmImage: 'ubuntu-latest' 
    
    variables:
      repositoryName: '<target repository name>' 
    
    steps:
    - task: Docker@2
      inputs:
        containerRegistry: '<docker registry service connection>'
        repository: $(repositoryName)
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
    
    
  6. Redigera YAML-pipelinefilen på följande sätt:

    • Ersätt <target repository name> med namnet på lagringsplatsen i containerregistret där du vill push-överföra avbildningen.
    • Ersätt <docker registry service connection> med namnet på den Docker-registertjänstanslutning som du skapade tidigare.
  7. När du är klar väljer du Spara och kör>Spara och kör.

  8. Välj Jobb för att visa loggarna och kontrollera att pipelinan har körts framgångsrikt.

  1. Gå till ditt Azure DevOps-projekt och välj Pipelines på den vänstra menyn.

  2. Välj Ny pipeline.

  3. Välj GitHub- som plats för källkoden och välj din lagringsplats.

    • 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.
  4. Välj Docker-mallen – Bygg och pusha en avbild till Azure Container Registry.

  5. Välj din Azure-prenumeration och Fortsätt.

  6. Välj containerregistret och välj sedan Verifiera och konfigurera.

    Exempel på YAML-pipeline:

    # Docker
    # Build and push an image to Azure Container Registry
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
      # Container registry service connection established during pipeline creation
      dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
      imageRepository: 'usernamepipelinesjavascriptdocker'
      containerRegistry: 'repoistoryname.azurecr.io'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
      # Agent VM image name
      vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
      displayName: Build and push stage
      jobs:
      - job: Build
        displayName: Build
        pool:
          vmImage: $(vmImageName)
        steps:
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag)
    
    
  7. Välj Spara och kör och Spara och kör igen.

  8. Välj Jobb för att visa loggarna och försäkra sig att rörledningen har körts framgångsrikt.

Docker-mallen skapar tjänstanslutningen till Azure Container Registry och använder Docker@2-uppgiften för att bygga och pusha Docker-avbildningen till registret.

Den Docker@2 uppgiften är utformad för att effektivisera processen med att skapa, push-överföra och hantera Docker-avbildningar i dina Azure Pipelines. Den här uppgiften stöder en mängd olika Docker-kommandon, inklusive build, push, login, logout, start, stop och run.

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.