CI/CD per app MicroProfile con Azure Pipelines

Questa esercitazione illustra come configurare facilmente un ciclo di rilascio di integrazione continua e distribuzione continua (CI/CD) Azure Pipelines per distribuire un'applicazione Java EE MicroProfile in un'app Web per contenitori di Azure. L'app MicroProfile in questa esercitazione usa un'immagine di base Payara Micro per creare un file WAR.

FROM payara/micro:5.182
COPY target/*.war $DEPLOY_DIR/ROOT.war
EXPOSE 8080

Avviare il processo di inserimento in un contenitore di Azure Pipelines creando un'immagine Docker ed eseguendo il push dell'immagine del contenitore in un Registro Azure Container. Completare il processo creando una pipeline di versione Azure Pipelines e distribuendo l'immagine del contenitore in un'app Web.

Prerequisiti

  1. Nel portale di Azure creare un Registro Azure Container.

  2. Nel portale di Azure creare un'app Web per contenitori di Azure. Selezionare Linux come Sistema operativo e per Configura contenitore selezionare Avvio rapido come Origine immagine.

  3. Copiare e salvare l'URL di clonazione dal repository GitHub di esempio all'indirizzo https://github.com/Azure-Samples/microprofile-hello-azure.

  4. Eseguire la registrazione o l'accesso all'organizzazione Azure DevOps e creare un nuovo progetto.

  5. Importare il repository GitHub di esempio in Azure Repos:

    1. Dalla pagina del progetto di Azure DevOps selezionare Repos nel riquadro di spostamento sinistro.
    2. In o importa un repository selezionare Importa.
    3. In URL clonazione immettere l'URL di clonazione Git salvato e selezionare Importa.

Creazione di una pipeline di compilazione

La pipeline di compilazione di integrazione continua in Azure Pipelines esegue automaticamente tutte le attività di compilazione ogni volta che è presente un commit nell'app di origine Java EE. In questo esempio Azure Pipelines usa Maven per compilare il progetto Java MicroProfile.

  1. Nella pagina del progetto di Azure DevOps selezionare Pipeline>Compilazioni nel riquadro di spostamento sinistro.

  2. Selezionare Nuova pipeline.

  3. Selezionare Usa l'editor classico per creare una pipeline senza YAML.

  4. Verificare che il nome del progetto e il repository GitHub importato siano presenti nei campi e scegliere Continua.

  5. Selezionare Maven dall'elenco di modelli e quindi fare clic su Applica.

  6. Nel riquadro destro verificare che venga visualizzato Ubuntu 1604 Ospitato nell'elenco a discesa Pool di agenti.

    Nota

    Questa impostazione indica ad Azure Pipelines quale server di compilazione usare. È anche possibile usare un server di compilazione personalizzato privato.

  7. Per configurare la pipeline per l'integrazione continua, selezionare la scheda Trigger nel riquadro sinistro e quindi selezionare la casella di controllo accanto ad Abilita l'integrazione continua.

  8. Nella parte superiore della pagina selezionare l'elenco a discesa accanto a Salva e accoda e fare clic su Salva.

    Enable continuous integration

Creare un'immagine di compilazione Docker

Azure Pipelines usa un Dockerfile con un'immagine di base Payara Micro per creare un'immagine Docker.

  1. Selezionare la scheda Attività e quindi fare clic sul segno più + accanto a Processo agente 1 per aggiungere un'attività.

    Add a new task

  2. Nel riquadro destro selezionareDocker dall'elenco dei modelli e quindi fare clic su Aggiungi.

  3. Nel riquadro sinistro selezionare buildAndPush e nel riquadro destro immettere una descrizione nel campo Nome visualizzato.

  4. In Container Repository selezionareNuovo accanto al campo Registro Container.

  5. Completare la finestra di dialogo Aggiungi una connessione al servizio Registro Docker nel modo seguente:

    Campo Valore
    Tipo di registro Selezionare Registro Azure Container.
    Nome connessione Immetti un nome per la connessione.
    Sottoscrizione di Azure Selezionare la sottoscrizione di Azure nell'elenco a discesa e, se necessario, fare clic su Autorizza.
    Registro Azure Container Selezionare il nome del Registro Azure Container nell'elenco a discesa.
  6. Seleziona OK.

    Add a Docker Registry service connection

    Nota

    Se si usa Docker Hub o un altro registro, selezionare Hub Docker o Altri anziché Registro Azure Container accanto a Tipo di registro. Specificare quindi le credenziali e le informazioni di connessione per il registro contenitori.

  7. In Comandi selezionare Compila nell'elenco a discesa Comando.

  8. Selezionare i puntini di sospensione... accanto al campoDockerfile, individuare e selezionare il Dockerfile dal repository GitHub e quindi fare clic su OK.

    Select the Dockerfile

  9. In Tag immetterepiù recente in una nuova riga.

  10. Nella parte superiore della pagina selezionare l'elenco a discesa accanto a Salva e accoda e fare clic su Salva.

Eseguire il push dell'immagine Docker nel Registro Azure Container

Azure Pipelines esegue il push dell'immagine Docker nel Registro Azure Container e la usa per eseguire l'app per le API MicroProfile come app Web Java aggiunta a contenitori.

  1. Poiché si sta usando Docker in Azure Pipelines, creare un altro modello Docker ripetendo la procedura descritta in Creare un'immagine di compilazione Docker. Questa volta selezionare Esegui push nell'elenco a discesa Comando.

  2. Selezionare l'elenco a discesa accanto a Salva e accoda e fare clic su Salva e accoda.

  3. Nella finestra popup Esegui la pipeline verificare che sia selezionato Ubuntu 1604 Ospitato in Pool di agenti e fare clic su Salva ed esegui.

  4. Al termine della compilazione, è possibile selezionare il collegamento ipertestuale nella pagina Compila per verificare l'esito della compilazione e visualizzare altri dettagli.

    Select the build hyperlink

Creazione di una pipeline di rilascio

Una pipeline di versione continua Azure Pipelines attiva automaticamente la distribuzione in un ambiente di destinazione come Azure nel momento in cui una compilazione ha esito positivo. È possibile creare pipeline di versione per ambienti di sviluppo, di test, di gestione temporanea o di produzione.

  1. Nella pagina del progetto di Azure DevOps selezionare Pipeline>Versioni nel riquadro di spostamento sinistro.

  2. Selezionare Nuova pipeline.

  3. Selezionare Distribuisci un'app Java in Servizio app di Azure nell'elenco di modelli e quindi fare clic su Applica.

    Select the Deploy a Java app to Azure App Service template

  4. Nella finestra popup cambiare Fase 1 in un nome di fase, ad esempio Sviluppo, Test, Gestione temporanea o Produzione e quindi chiudere la finestra.

  5. In Artefatti nel riquadro sinistro fare clic su Aggiungi per collegare gli artefatti dalla pipeline di compilazione alla pipeline di rilascio.

  6. Nel riquadro destro selezionare la pipeline di compilazione nell'elenco a discesa in Origine (pipeline di compilazione) e quindi fare clic su Aggiungi.

    Add a build artifact

  7. Selezionare il collegamento ipertestuale nella fase Produzione per eseguire l'operazione Visualizza le attività nella fase.

    Select the stage name

  8. Nel riquadro destro completare il modulo come segue:

    Campo Valore
    Sottoscrizione di Azure Selezionare la sottoscrizione di Azure nell'elenco a discesa.
    Tipo di app Selezionare App Web per contenitori (Linux) nell'elenco a discesa.
    Nome del servizio app Selezionare l'istanza di Registro Azure Container nell'elenco a discesa.
    Registro o spazio dei nomi Immettere il nome del Registro Azure Container nel campo, ad esempio mymicroprofileregistry.azure.io.
    Repository Immettere il repository che contiene l'immagine Docker.

    Configure stage tasks

  9. Nel riquadro sinistro selezionare Deploy War to Azure App Service (Distribuisci War in Servizio app di Azure) e nel riquadro destro immettere il tag più recente nel campo Tag.

  10. Nel riquadro sinistro selezionare Esegui su agente e quindi nel riquadro destro selezionare Ubuntu 1604 Ospitato nell'elenco a discesa Pool di agenti.

Impostare variabili di ambiente

Aggiungere e definire le variabili di ambiente per la connessione al registro contenitori durante la distribuzione.

  1. Selezionare la scheda Variabili e quindi fare clic su Aggiungi per aggiungere le variabili seguenti per l'URL, il nome utente e la password del registro contenitori.

    Nome valore
    registry.url Immettere l'URL del registro contenitori, Ad esempio: https://mymicroprofileregistry.azure.io
    registry.username Immettere il nome utente per il Registro di sistema.
    registry.password Immettere la password per il Registro di sistema. Per motivi di sicurezza, selezionare l'icona a forma di lucchetto per mantenere nascosta la password.

    Add variables

  2. Nella scheda Attività selezionare Deploy War to Azure App Service (Distribuisci War in Servizio app di Azure) nel riquadro sinistro.

  3. Nel riquadro destro espandere Impostazioni applicazione e configurazione e quindi fare clic sui puntini di sospensione ... accanto al campo Impostazioni app.

  4. Nella finestra popup Impostazioni app fare clic su Aggiungi per definire e assegnare le variabili delle impostazioni dell'app:

    Nome valore
    DOCKER_REGISTRY_SERVER_URL $(registry.url)
    DOCKER_REGISTRY_SERVER_USERNAME $(registry.username)
    DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password)
  5. Seleziona OK.

    Add and set variables

Configurare la distribuzione continua

Per abilitare la distribuzione continua:

  1. In Artefatti nella scheda Pipeline selezionare l'icona a forma di fulmine nell'artefatto della compilazione.

  2. Nel riquadro destro impostare Trigger di distribuzione continua su Abilitato.

  3. Fare clic su Salva nell'angolo in alto a destra e quindi di nuovo su Salva.

    Enable continuous deployment trigger

Distribuire l'app Java

Dopo aver abilitato CI/CD, modificando il codice sorgente vengono create ed eseguite automaticamente build e versioni. È anche possibile creare ed eseguire le versioni manualmente, come indicato di seguito:

  1. Nella parte superiore destra della pagina della pipeline di versione selezionare Crea versione.

  2. Nella pagina Crea una nuova versione selezionare il nome della fase in Fasi per la modifica di un trigger da automatizzato a manuale.

  3. Seleziona Crea.

  4. Selezionare il nome della versione, passare il mouse sulla fase o selezionarla e quindi scegliere Distribuisci.

Testare l'app Web Java

Dopo aver completato la distribuzione, testare l'app Web.

  1. Creare l'URL dell'app Web dal portale di Azure.

    App Service app in the Azure portal

  2. Immettere l'URL nel Web browser per eseguire l'app. Nella pagina Web verrà visualizzato Hello Azure!

    Java web app page