Delen via


Azure Pipelines gebruiken om containerinstallatiekopieën te bouwen en te pushen naar registers

Azure DevOps Services-

In dit artikel wordt u begeleid bij het maken van een pijplijn om een Docker-image te bouwen en te pushen naar een Azure Container Registry of Docker Hub.

Vereisten

Product vereisten
Azure DevOps - Een Azure DevOps-project.
- machtigingen:
    - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders.
    - Als u serviceverbindingen wilt maken: u moet de Administrator- of Creator- rol hebben voor serviceverbindingen.
- Als u een zelf-hostende agent gebruikt, controleert u of Docker is geïnstalleerd en of de Docker-engine wordt uitgevoerd met verhoogde bevoegdheden. Door Microsoft gehoste agents hebben Docker vooraf geïnstalleerd.
GitHub- - Een GitHub-account.
- Een GitHub-opslagplaats met een Dockerfile. Gebruik de voorbeeldopslagplaats als u geen eigen project hebt.
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.
Azure - Een Azure-abonnement.
- Een Azure Container Registry-.
Product vereisten
Azure DevOps - Een Azure DevOps-project.
- machtigingen:
    - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders.
    - Als u serviceverbindingen wilt maken: u moet de Administrator- of Creator- rol hebben voor serviceverbindingen.
- Als u een zelf-hostende agent gebruikt, controleert u of Docker is geïnstalleerd en of de Docker-engine wordt uitgevoerd met verhoogde bevoegdheden. Door Microsoft gehoste agents hebben Docker vooraf geïnstalleerd.
GitHub- - Een GitHub-account.
- Een GitHub-opslagplaats met een Dockerfile. Gebruik de voorbeeldopslagplaats als u geen eigen project hebt.
- Een GitHub-serviceverbinding om Azure Pipelines te autoriseren.
Docker Hub - Een Docker Hub-account.
- Een Docker Hub afbeeldingsrepository.

Een Docker-registerserviceverbinding maken

Voordat u containerinstallatiekopieën naar een register pusht, moet u een serviceverbinding maken in Azure DevOps. Met deze serviceverbinding worden de referenties opgeslagen die vereist zijn om veilig te verifiëren met het containerregister. Zie Docker Registry-serviceverbindingenvoor meer informatie.

  1. Selecteer in uw Azure DevOps-project Project-instellingen>Service-verbindingen.

    Schermopname van de selectie van projectinstellingen.

  2. Selecteer nieuwe serviceverbinding en Docker Registry-.

    schermopname van de docker-registerselectie.

  3. Selecteer Docker Hub en voer de volgende gegevens in:

    Veld Beschrijving
    Docker-id Voer uw Docker-id in.
    Docker-wachtwoord Voer uw Docker-wachtwoord in.
    serviceverbindingsnaam Voer een naam in voor de serviceverbinding.
    Toegang verlenen aan alle pijplijnen Selecteer deze optie om toegang te verlenen tot alle pijplijnen.

    schermopname van het dialoogvenster verbinding met docker Hub-service.

  4. Selecteer Controleren en opslaan.

Maak een pijplijn om een Docker-image te bouwen en pushen.

De Docker@2 taak wordt gebruikt om de installatiekopieën te bouwen en naar het containerregister te pushen. De Docker@2 taak is ontworpen om het proces van het bouwen, pushen en beheren van Docker-installatiekopieën binnen uw Azure Pipelines te stroomlijnen. Deze taak ondersteunt een breed scala aan Docker-opdrachten, waaronder bouwen, pushen, aanmelden, afmelden, starten, stoppen en uitvoeren.

Gebruik de volgende stappen om een YAML-pijplijn te maken die de Docker@2-taak gebruikt om de image te bouwen en te pushen.

  1. Selecteer in uw Azure DevOps-project Pipelines en Nieuwe pijplijn.

  2. Selecteer GitHub- als de locatie van uw broncode en selecteer uw opslagplaats.

    • Als u wordt omgeleid naar GitHub om u aan te melden, voert u uw GitHub-referenties in.
    • Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
  3. Selecteer uw opslagplaats.

  4. Selecteer de Starter-pijplijnsjabloon om een basispijplijnconfiguratie te maken.

  5. Vervang de inhoud van azure-pipelines.yml door de volgende code:

    
    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. Bewerk het YAML-pijplijnbestand als volgt:

    • Vervang <target repository name> door de naam van de opslagplaats in het containerregister waar u de installatiekopieën wilt pushen.
    • Vervang <docker registry service connection> door de naam van de Docker-registerserviceverbinding die u eerder hebt gemaakt.
  7. Wanneer u klaar bent, selecteert u Opslaan en uitvoeren>enOpslaan en uitvoeren.

  8. Selecteer Job om de logboeken weer te geven en te controleren of de pipeline is uitgevoerd.

  1. Ga naar uw Azure DevOps-project en selecteer Pipelines in het menu aan de linkerkant.

  2. Selecteer nieuwe pijplijn.

  3. Selecteer GitHub- als de locatie van uw broncode en selecteer uw opslagplaats.

    • Als u wordt omgeleid naar GitHub om u aan te melden, voert u uw GitHub-referenties in.
    • Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
  4. Selecteer de Docker - Een afbeelding bouwen en pushen naar de Azure Container Registry-sjabloon.

  5. Selecteer uw Azure-abonnement en Doorgaan.

  6. Selecteer uw Container Registry en selecteer vervolgens Valideren en configureren.

    Voorbeeld van YAML-pijplijn:

    # 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. Selecteer Opslaan en uitvoeren en Opslaan en opnieuw uitvoeren.

  8. Selecteer job om de logboeken weer te geven en te controleren of de pijplijn met succes is uitgevoerd.

De Docker-sjabloon maakt de serviceverbinding met uw Azure Container Registry en gebruikt de Docker@2 taken om de Docker-image te bouwen en te pushen naar het register.

De Docker@2 taak is ontworpen om het proces van het bouwen, pushen en beheren van Docker-installatiekopieën binnen uw Azure Pipelines te stroomlijnen. Deze taak ondersteunt een breed scala aan Docker-opdrachten, waaronder bouwen, pushen, aanmelden, afmelden, starten, stoppen en uitvoeren.

Wanneer u zelf-hostende agents gebruikt, moet u ervoor zorgen dat Docker is geïnstalleerd op de host van de agent en dat de Docker-engine/daemon wordt uitgevoerd met verhoogde bevoegdheden.