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.
Nel progetto Azure DevOps, seleziona Impostazioni progetto>Connessioni al servizio.
Seleziona Nuova connessione al servizio e Registro Docker.
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. Selezionare Verificare e salvare.
Creare una pipeline per compilare ed eseguire il push di un'immagine Docker
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.
Nel progetto di Azure DevOps, seleziona Pipelines e Nuova pipeline.
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.
Selezionare il repository.
Selezionare il modello della pipeline di avvio per creare una configurazione della pipeline di base.
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'
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.
- Sostituire
Al termine, seleziona Salva ed esegui>Salva ed esegui.
Selezionare lavoro per visualizzare i log e verificare che la pipeline sia stata eseguita correttamente.
Passare al progetto Azure DevOps e selezionare pipeline dal menu a sinistra.
Selezionare Nuova pipeline.
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.
Selezionare il modello di Docker - Costruire ed eseguire il push di un'immagine nel registro Azure Container.
Seleziona la sottoscrizione di Azure e Continua.
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)
Selezionare Salva ed esegui e Salva ed esegui di nuovo.
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.