Usare Azure Pipelines per compilare ed eseguire il push di immagini del contenitore nei registri
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Questo articolo illustra la configurazione e la configurazione in Azure Pipelines per compilare ed eseguire il push di un'immagine Docker in un Registro Azure Container e nell'hub Docker. Vengono inoltre fornite informazioni dettagliate sull'uso di System.AccessToken
per l'autenticazione sicura all'interno della pipeline.
Questo articolo illustra l'installazione e la configurazione per l'uso di Azure Pipelines per compilare ed eseguire il push di un'immagine Docker in un hub Docker. Vengono inoltre fornite informazioni dettagliate sull'uso di System.AccessToken
per l'autenticazione sicura all'interno della pipeline.
Si apprenderà come creare una pipeline YAML per compilare ed eseguire il push di un'immagine Docker in un registro contenitori usando l'attività Docker@2.
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. |
Hub docker | - Un account di Docker Hub. - Un repository di immagini Docker Hub . |
- requisiti del progetto : un progetto Azure DevOps .
- Autorizzazioni :
- Essere membro del gruppo Project Administrators.
- Ruolo di Amministratore per le connessioni al servizio nel progetto Azure DevOps.
-
Sottoscrizioni:
- Un account GitHub. Se non è disponibile, è possibile crearne uno gratuitamente all'indirizzo GitHub.
- Account docker Hub: è necessario un account Docker Hub. Se non è disponibile, è possibile crearne uno gratuitamente in Hub Docker.
- Repository: Un repository GitHub con un Dockerfile. Se non ne hai uno, puoi usare il repository di esempio
- connessione al servizio : una connessione al servizio GitHub Enterprise Server. Se non è disponibile, è possibile crearne uno nelle impostazioni del progetto Azure DevOps. Per altre informazioni sulla creazione di una connessione al servizio, vedere Connessioni al servizio.
- Il registro contenitori : A (registro contenitori dell'Hub Docker
- Requisiti software: È necessario che Docker sia installato e che il motore Docker sia in esecuzione con privilegi elevati sull'agente self-hosted.
Creare una connessione al servizio 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. Passare a Connessioni al servizio nelle impostazioni del progetto Azure DevOps per creare una nuova connessione al servizio registro Docker.
Scegliere l'opzione Docker Hub in Connessione al servizio registro Docker e specificare il nome utente e la password per creare una connessione al servizio Docker.
Creare una pipeline YAML per compilare ed eseguire il push di un'immagine Docker
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.
Seguire questa procedura per creare una pipeline YAML che utilizza il task Docker@2 per costruire ed eseguire il push dell'immagine.
Passare al progetto Azure DevOps e selezionare pipeline dal menu a sinistra.
Selezionare Nuova pipeline.
Selezionare la posizione del repository di origine.
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 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 connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Modificare il file YAML della pipeline come segue:
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su
vmImage
ubuntu-latest
owindows-latest
.Se si usa un agente self-hosted, impostare
vmImage
sul nome del pool che contiene l'agente self-hosted con la funzionalità Docker. È possibile aggiungere lademands:
proprietà per assicurarsi che sia selezionato un agente con Docker installato. Ad esempio:pool: name: <your agent pool> demands: docker
Sostituire
<docker connection>
con il nome della connessione al servizio Docker creata in precedenza.Sostituire
<target repository name>
con il nome del repository nel registro contenitori in cui si vuole eseguire il push dell'immagine. Ad esempio:<your-docker-hub-username>/<repository-name>
.
Al termine, selezionare Salva ed esegui.
Quando si salva il file azure-pipelines.yml nel repository, viene richiesto di aggiungere un messaggio di commit. Immettere un messaggio e quindi selezionare Salva ed esegui.
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.
Per compilare l'immagine, Docker deve essere installato nell'host dell'agente e il motore/daemon Docker deve essere in esecuzione con privilegi elevati.
Usare la procedura seguente per creare la pipeline usando l'editor della pipeline YAML.
Passare alla raccolta e creare un progetto.
Nel progetto selezionare Pipeline.
Seleziona Crea pipeline.
Selezionare GitHub Enterprise Server come percorso per il codice sorgente.
Se non è già stato fatto, autorizzare Azure Pipelines a connettersi all'account GitHub Enterprise Server.
- Selezionare Connetti a GitHub Enterprise Server.
- Immettere i dettagli dell'account e quindi selezionare Verifica e salva.
Selezionare il repository. Se si viene reindirizzati a GitHub per installare l'app Azure Pipelines, selezionare Approva e installa.
Per configurare la pipeline, selezionare il modello Di compilazione di un'immagine Docker.
Nell'editor della pipeline YAML sostituire il contenuto del file YAML con il codice seguente:
trigger: - main pool: name: default demands: docker variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Modificare il file YAML della pipeline come segue:
- Sostituire il nome del pool con il nome del pool che contiene l'agente self-hosted con la funzionalità Docker.
- Sostituire
<target repository name>
con il nome del repository nel registro contenitori in cui si vuole eseguire il push dell'immagine. Ad esempio:<your-docker-hub-username>/<repository-name>
. - Sostituire
<docker connection>
con il nome della connessione al servizio Docker creata in precedenza.
Seleziona Salva ed Esegui.
Nella pagina Salva ed esegui selezionare Salva ed esegui di nuovo.
È possibile controllare l'esecuzione della pipeline e visualizzare i log per visualizzare l'immagine Docker compilata e sottoposta a push nel registro contenitori.
Uso di System.AccessToken per l'autenticazione nell'attività Docker@2
È possibile eseguire l'autenticazione con un registro contenitori usando l'oggetto System.AccessToken
fornito da Azure DevOps. Questo token consente l'accesso sicuro alle risorse all'interno della pipeline senza esporre credenziali sensibili.
L'esempio di pipeline YAML seguente, l'attività Docker@2 viene usata per accedere al registro contenitori ed eseguire il push dell'immagine Docker.
System.AccessToken
viene impostato come variabile di ambiente per autenticare i comandi Docker.
Sostituire <docker connection>
con il nome della connessione al servizio del Registro di sistema Docker.
Sostituire <your repository>
con il nome del repository Docker.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
steps:
- task: Docker@2
inputs:
command: login
containerRegistry: '<docker connection>'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: Docker@2
inputs:
command: buildAndPush
repository: '<your repository>'
dockerfile: '**/Dockerfile'
tags: |
$(Build.BuildId)
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)