Usare Azure Pipelines per compilare ed eseguire il push di immagini del contenitore nei registri
Articolo
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
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 Registro Azure Container, nell'hub Docker e in Google Artifact Registry. Vengono inoltre fornite informazioni dettagliate sull'uso di System.AccessToken per l'autenticazione sicura all'interno della pipeline.
Questo articolo illustra la configurazione e la configurazione per l'uso di Azure Pipelines per compilare ed eseguire il push di un'immagine Docker in un hub Docker e in Google Artifact Registry. 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. L'attività Docker@2 viene usata per compilare ed eseguire il push dell'immagine nel registro contenitori.
Prerequisiti
Un progetto Azure DevOps.
Registro contenitori (Docker Hub, Google Artifact Registry o Registro Azure Container).
Un repository GitHub con un Dockerfile. Se non è disponibile, è possibile usare il repository di esempio Nel browser, passare al repository di esempio e quindi copiarlo tramite fork nell'account GitHub.
Docker. Se si usa un agente self-hosted, assicurarsi che Docker sia installato e che il motore Docker in esecuzione con privilegi elevati. Gli agenti ospitati da Microsoft includono Docker preinstallato.
Un progetto Azure DevOps.
Registro contenitori (Docker Hub o Google Artifact Registry).
Un repository GitHub con un Dockerfile. Se non è disponibile, è possibile usare il repository di esempio Nel browser, passare al repository di esempio e quindi copiarlo tramite fork nell'account GitHub.
Docker. Se si usa un agente self-hosted, assicurarsi che Docker sia installato e che il motore Docker in esecuzione con privilegi elevati. Gli agenti ospitati da Microsoft includono Docker preinstallato.
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 alla pagina Connessioni al servizio nel progetto Azure DevOps per creare una nuova connessione al servizio e selezionare il tipo di connessione registro Docker.
Esistono diversi processi per creare una connessione al servizio per un hub Docker e un Registro artefatti di Google.
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.
Scegliere l'opzione Registro Azure Container in Connessione al servizio registro Docker e specificare le informazioni richieste dal metodo di autenticazione scelto.
Il push di un'immagine Docker in Registro Azure Container non è supportato in Azure DevOps Server.
Per creare una connessione al servizio Docker associata a Google Artifact Registry:
Aprire il progetto nella console di Google Cloud Platform (GCP) e quindi aprire Cloud Shell
Per risparmiare tempo durante la digitazione dell'ID progetto e delle opzioni della zona del motore di calcolo, impostare i valori di configurazione predefiniti eseguendo i comandi seguenti:
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
Sostituire [PROJECT_NAME] con il nome del progetto GCP e sostituire [ZONE] con il nome della zona che si intende usare per la creazione di risorse. Se non si è certi della zona da selezionare, usare us-central1-a. Ad esempio:
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
Abilitare l'API Registro artefatti per il progetto:
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.
I passaggi seguenti illustrano come creare una pipeline YAML che usa l'attività Docker@2 per compilare ed eseguire il push dell'immagine.
Passare al progetto Azure DevOps e selezionare Pipeline dal menu a sinistra.
Selezionare Nuova pipeline per creare una nuova pipeline.
Selezionare GitHub o 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
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.
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su vmImageubuntu-latest o windows-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 la demands: docker proprietà per assicurarsi che sia selezionato un agente con Docker installato.
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>.
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. Sostituire il nome del pool con il nome del pool che contiene l'agente self-hosted con la funzionalità Docker.
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su vmImageubuntu-latest o windows-latest.
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.
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.
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.
I passaggi seguenti illustrano come creare una pipeline YAML che usa l'attività Docker@2 per compilare ed eseguire il push dell'immagine.
Passare al progetto Azure DevOps e selezionare Pipeline dal menu a sinistra.
Selezionare Nuova pipeline per creare una nuova pipeline.
Selezionare GitHub o 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.
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.
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su vmImageubuntu-latest o windows-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 la demands: docker proprietà per assicurarsi che sia selezionato un agente con Docker installato.
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: myregistry.azurecr.io/myimage.
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.
Il push di docker imaged in Registro Azure Container non è supportato in Azure DevOps Server.
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.
I passaggi seguenti illustrano come creare una pipeline YAML che usa l'attività Docker@2 per compilare ed eseguire il push dell'immagine.
Passare al progetto Azure DevOps e selezionare Pipeline dal menu a sinistra.
Selezionare Nuova pipeline per creare una nuova pipeline.
Selezionare GitHub o 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.
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.
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su vmImageubuntu-latest o windows-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 la demands: docker proprietà per assicurarsi che sia selezionato un agente con Docker installato.
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-project-id>/<your-image-name>.
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.
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. Sostituire il nome del pool con il nome del pool che contiene l'agente self-hosted con la funzionalità Docker.
In base al fatto che si distribuisca un'app Linux o Windows, assicurarsi di impostare rispettivamente su vmImageubuntu-latest o windows-latest.
Sostituire <target repository name> con il nome del repository nel registro contenitori in cui si vuole eseguire il push dell'immagine. Ad esempio: <your-project-id>/<your-image-name>.
Sostituire <docker connection> con il nome della connessione al servizio Docker creata in precedenza.
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.