Condividi tramite


Usare Azure Pipelines per compilare ed eseguire il push di immagini del contenitore nei registri

Azure DevOps Services

Questo articolo illustra la creazione di una pipeline per costruire ed eseguire il push di un'immagine Docker in un Registro Contenitori di Azure o in un Hub Docker.

Prerequisiti

Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
Autorizzazioni - :
    - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators.
    - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio .
- Se si utilizza un agente autogestito, assicurarsi che Docker sia installato e che il motore Docker sia in esecuzione con privilegi amministrativi. Gli agenti ospitati da Microsoft includono Docker preinstallato.
GitHub - Un account GitHub.
- Un repository GitHub con un Dockerfile. Usare il repository di esempio se non si ha un progetto personalizzato.
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.
azzurro - Una sottoscrizione di Azure .
- Un Registro dei Container Azure.
Prodotto Requisiti
Azure DevOps - Un progetto Azure DevOps.
Autorizzazioni - :
    - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators.
    - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio .
- Se si utilizza un agente autogestito, assicurarsi che Docker sia installato e che il motore Docker sia in esecuzione con privilegi amministrativi. Gli agenti ospitati da Microsoft includono Docker preinstallato.
GitHub - Un account GitHub.
- Un repository GitHub con un Dockerfile. Usare il repository di esempio se non si ha un progetto personalizzato.
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.
Hub docker - Un account di Docker Hub.
- Un repository di immagini Docker Hub .

Creare una connessione al servizio del Registro di sistema Docker

Prima di eseguire il push delle immagini del contenitore in un registro, è necessario creare una connessione al servizio in Azure DevOps. Questa connessione al servizio archivia le credenziali necessarie per l'autenticazione sicura con il registro contenitori. Per altre informazioni, vedere connessioni al servizio Registro Docker.

  1. Nel progetto Azure DevOps, seleziona Impostazioni progetto>Connessioni al servizio.

    Screenshot della selezione delle impostazioni del progetto.

  2. Seleziona Nuova connessione al servizio e Registro Docker.

    Screenshot della selezione del Registro di sistema Docker.

  3. Selezionare Docker Hub e immettere le seguenti informazioni:

    Campo Descrizione
    id Docker Immettere l'ID Docker.
    Password di Docker Immettere la password di Docker.
    nome della connessione al servizio Immettere un nome per la connessione al servizio.
    Concedere l'autorizzazione di accesso a tutte le pipeline Seleziona questa opzione per concedere l'accesso a tutte le pipeline.

    screenshot della finestra di dialogo di connessione al servizio Docker Hub.

  4. Selezionare Verificare e salvare.

Creare una pipeline per compilare ed eseguire il push di un'immagine Docker

  • YAML
  • classico

L'attività Docker@2 viene usata per compilare ed eseguire il push dell'immagine nel registro contenitori. L'attività Docker@2 è progettata per semplificare il processo di compilazione, push e gestione delle immagini Docker all'interno di Azure Pipelines. Questa attività supporta un'ampia gamma di comandi Docker, tra cui compilazione, push, accesso, disconnessione, avvio, arresto ed esecuzione.

Segui i seguenti passaggi per creare una pipeline YAML che utilizza l'attività Docker@2 per compilare ed eseguire il push dell'immagine.

  1. Nel progetto di Azure DevOps, seleziona Pipelines e Nuova pipeline.

  2. Selezionare GitHub come percorso del codice sorgente e selezionare il repository.

    • Se si viene reindirizzati a GitHub per accedere, immettere le credenziali di GitHub.
    • Se si viene reindirizzati a GitHub per installare l'app Azure Pipelines, selezionare Approva e installa.
  3. Selezionare il repository.

  4. Selezionare il modello della pipeline di avvio per creare una configurazione della pipeline di base.

  5. Sostituire il contenuto di azure-pipelines.yml con il codice seguente:

    
    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. Modificare il file YAML della pipeline come segue:

    • Sostituire <target repository name> con il nome del repository nel registro contenitori in cui si vuole eseguire il push dell'immagine.
    • Sostituire <docker registry service connection> con il nome della connessione al servizio registro Docker creata in precedenza.
  7. Al termine, seleziona Salva ed esegui>Salva ed esegui.

  8. Selezionare lavoro per visualizzare i log e verificare che la pipeline sia stata eseguita correttamente.

  • YAML
  • classico
  1. Passare al progetto Azure DevOps e selezionare pipeline dal menu a sinistra.

  2. Selezionare Nuova pipeline.

  3. Selezionare GitHub come percorso del codice sorgente e selezionare il repository.

    • Se si viene reindirizzati a GitHub per accedere, immettere le credenziali di GitHub.
    • Se si viene reindirizzati a GitHub per installare l'app Azure Pipelines, selezionare Approva e installa.
  4. Selezionare il modello di Docker - Costruire ed eseguire il push di un'immagine nel registro Azure Container.

  5. Seleziona la sottoscrizione di Azure e Continua.

  6. Seleziona il Registro dei contenitori e quindi seleziona Convalida e configura.

    Esempio di pipeline YAML:

    # 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. Selezionare Salva ed esegui e Salva ed esegui di nuovo.

  8. Selezionare Job per visualizzare i log e verificare che la pipeline sia stata eseguita con successo.

Il modello Docker crea la connessione del servizio al Registro Container di Azure e usa l'attività Docker@2 per compilare ed eseguire il push dell'immagine Docker nel registro.

L'attività Docker@2 è progettata per semplificare il processo di compilazione, push e gestione delle immagini Docker all'interno di Azure Pipelines. Questa attività supporta un'ampia gamma di comandi Docker, tra cui compilazione, push, accesso, disconnessione, avvio, arresto ed esecuzione.

Quando si usano agenti self-hosted, assicurarsi che Docker sia installato nell'host dell'agente e che il motore/daemon Docker sia in esecuzione con privilegi elevati.