CI/CD pour les applications MicroProfile utilisant Azure Pipelines

Ce tutoriel vous montre comment configurer un cycle de publication d’intégration continue Azure Pipelines et de déploiement continu (CI/CD) pour déployer votre application Java EE MicroProfile sur un Web App pour conteneurs Azure. L’application MicroProfile de ce tutoriel utilise une image de base Payara Micro pour créer un fichier WAR.

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

Vous commencez le processus de conteneurisation Azure DevOps en générant une image Docker et en envoyant l’image conteneur vers un ACR (Azure Container Registry). Vous terminez ce processus en créant un pipeline de mise en production Azure Pipelines et en déployant l’image conteneur dans une application web.

Prérequis

  1. Dans le portail Azure, créez un Azure Container Registry.

  2. Dans le portail Azure, créez un Web App pour conteneurs Azure. Sélectionnez Linux comme Système d’exploitation, et pour Configurer le conteneur, sélectionnez Démarrage rapide comme Source d’image.

  3. Copiez et enregistrez l’URL de clonage à partir de l’exemple de référentiel GitHub à l’adresse https://github.com/Azure-Samples/microprofile-hello-azure.

  4. Inscrivez-vous ou connectez-vous à votre organisation Azure DevOps, puis créez un projet.

  5. Importez l’exemple de référentiel GitHub dans Azure Repos :

    1. Dans la page de votre projet Azure DevOps , sélectionnez Repos dans le volet de navigation de gauche.
    2. Sous ou importer un référentiel, sélectionnez Importer.
    3. Sous URLde clonage, entrez l’URL de clonage Git que vous avez enregistrée, puis sélectionnez Importer.

Créer un pipeline de build

Le pipeline de build d’intégration continue dans Azure Pipelines exécute automatiquement toutes les tâches de build chaque fois qu’une validation est effectuée dans l’application source Java EE. Dans cet exemple, Azure Pipelines utiliser Maven pour générer le projet Java MicroProfile.

  1. Dans la page de votre projet Azure DevOps , sélectionnez Pipelines>Builds dans le volet de navigation de gauche.

  2. Sélectionnez Nouveau pipeline.

  3. Sélectionnez Utiliser l’éditeur classique pour créer un pipeline sans YAML.

  4. Assurez-vous que le nom de votre projet et que le référentiel GitHub importé s’affichent dans les champs, puis sélectionnez Continuer.

  5. Sélectionnez Maven dans la liste des modèles, puis sélectionnez Appliquer.

  6. Dans le volet de droite, assurez-vous que Ubuntu 1604 hébergé s’affiche dans la liste déroulante Pool d’agents.

    Remarque

    Ce paramètre permet à Azure Pipelines de savoir quel serveur de build utiliser. Vous pouvez utiliser votre propre serveur de build personnalisé.

  7. Pour configurer le pipeline pour l’intégration continue, sélectionnez l’onglet Déclencheurs dans le volet de gauche, puis cochez la case en regard de Activer l’intégration continue.

  8. En haut de la page, sélectionnez la liste déroulante à côté de Enregistrer et mettre en file d’attente, puis sélectionnez Enregistrer.

    Enable continuous integration

Générer une image de build Docker

Azure Pipelines utilise un fichier Docker avec une image de base Payara Micro pour générer une image Docker.

  1. Sélectionnez l’onglet Tâches, puis sélectionnez le signe + en regard de Tâche de l’agent 1 pour ajouter une tâche.

    Add a new task

  2. Dans le volet de droite, sélectionnez Docker dans la liste des modèles, puis sélectionnez Ajouter.

  3. Sélectionnez BuildAndPush dans le volet de gauche et, dans le volet de droite, entrez une description dans le champ Nom d’affichage.

  4. Sous Référentiel du conteneur, sélectionnez Nouveau en regard du champ Registre de conteneurs.

  5. Renseignez la boîte de dialogue Ajouter une connexion de service de registre Docker comme suit :

    Champ Valeur
    Type de registre Sélectionnez Azure Container Registry.
    Nom de connexion Attribuez un nom à cette connexion.
    Abonnement Azure Sélectionnez votre abonnement Azure dans la liste déroulante et, si nécessaire, sélectionnez Autoriser.
    Azure Container Registry Sélectionnez le nom de votre Azure Container Registry dans la liste déroulante.
  6. Cliquez sur OK.

    Add a Docker Registry service connection

    Remarque

    Si vous utilisez Docker Hub ou un autre registre, sélectionnez Docker Hub ou Autres au lieu de Azure Container Registry, en regard de Type de registre. Entrez ensuite les informations d’identification et de connexion de votre registre de conteneurs.

  7. Sous Commandes, sélectionnez Générer dans la liste déroulante Commandes.

  8. Sélectionnez les points de suspension ... en regard du champ Dockerfile, recherchez et sélectionnez le Dockerfile dans votre référentiel GitHub, puis sélectionnez OK.

    Select the Dockerfile

  9. Sous Étiquettes, entrez Dernière sur une nouvelle ligne.

  10. En haut de la page, sélectionnez la liste déroulante à côté de Enregistrer et mettre en file d’attente, puis sélectionnez Enregistrer.

Envoyer l’image Docker à ACR

Azure Pipelines envoie l’image Docker à votre de Azure Container Registry et l’utilise pour exécuter l’application API MicroProfile comme application web Java en conteneur.

  1. Dans la mesure où vous utilisez Docker dans Azure pipelines, créez un autre modèle Docker en répétant les étapes de la section Créer une image de build Docker. Cette fois-ci, sélectionnez Envoyer dans la liste déroulante Commande.

  2. Sélectionnez la liste déroulante à côté de Enregistrer et mettre en file d’attente, puis sélectionnez Enregistrer et mettre en file d’attente.

  3. Dans la fenêtre contextuelle Exécuter le pipeline, assurez -vous que Ubuntu 1604 hébergé est sélectionné sous Pool d’agents, puis sélectionnez Enregistrer et exécuter.

  4. Une fois la build terminée, vous pouvez sélectionner le lien hypertexte sur la page Build pour vérifier si l’opération est réussie et voir d’autres détails.

    Select the build hyperlink

Créer un pipeline de mise en production

Le pipeline de mise en production continue Azure Pipelines déclenche automatiquement le déploiement sur un environnement cible, par exemple Azure, dès que la build est réussie. Vous pouvez créer des pipelines de mise en production pour les environnements de développement, de test, de mises en lots ou de production.

  1. Dans la page de votre projet Azure DevOps , sélectionnez Pipelines>Mises en production dans le volet de navigation de gauche.

  2. Sélectionnez Nouveau pipeline.

  3. Sélectionnez Déployer une application Java sur Azure App Service dans la liste des modèles, puis sélectionnez Appliquer.

    Select the Deploy a Java app to Azure App Service template

  4. Dans la fenêtre contextuelle, remplacez Phase 1 par un nom de phase comme Dev, Test, Mise en lots ouProduction, puis fermez la fenêtre.

  5. Sous Artefacts dans le volet de gauche, sélectionnez Ajouter pour lier les artefacts du pipeline de build au pipeline de mise en production.

  6. Dans le volet de droite, sélectionnez votre pipeline de build dans la liste déroulante sous Source (pipeline de build), puis sélectionnez Ajouter.

    Add a build artifact

  7. Sélectionnez le lien hypertexte dans la phase Production pour Afficher les phases.

    Select the stage name

  8. Dans le volet de droite, remplissez le formulaire comme suit :

    Champ Valeur
    Abonnement Azure Sélectionnez votre abonnement Azure dans la liste déroulante.
    Type d’application Sélectionnez Web App pour conteneurs (Linux) dans la liste déroulante.
    Nom de l’App Service Sélectionnez votre instance ACR dans la liste déroulante.
    Registre ou espace de noms Entrez le nom de votre ACR dans le champ. Par exemple, entrez mymicroprofileregistry.azure.io.
    Dépôt Entrez le référentiel qui contient votre image Docker.

    Configure stage tasks

  9. Dans le volet de gauche, sélectionnez Déployer War sur Azure App Service, et dans le volet de droite, entrez l’étiquette dernier dans le champ Étiquette.

  10. Dans le volet de gauche, sélectionnez Exécuter sur l’agent, et dans le volet de droite, sélectionnez Ubuntu 1604 hébergé dans la liste déroulante Pool d’agents.

Configurer les variables d’environnement

Ajoutez et définissez les variables d’environnement pour connecter le registre de conteneurs au cours du déploiement.

  1. Sélectionnez l’onglet Variables, puis sélectionnez Ajouter pour ajouter les variables suivantes pour l’URL, le nom d’utilisateur et le mot de passe de votre conteneur.

    Nom Valeur
    registry.url Entrez l’URL de votre registre de conteneurs. Par exemple : https://mymicroprofileregistry.azure.io
    registry.username Entrez le nom d’utilisateur du registre.
    registry.password Entrez le mot de passe du registre. Par mesure de sécurité, sélectionnez l’icône en forme de verrou pour conserver la valeur du mot de passe masquée.

    Add variables

  2. Dans l’onglet Tâches, sélectionnez Déployer War sur Azure App Service dans le volet de gauche.

  3. Dans le volet de droite, développez Paramètres d’application et de configuration, puis sélectionnez les points de suspension ... en regard du champ Paramètres de l’application.

  4. Dans la fenêtre contextuelle Paramètres de l’application, sélectionnez Ajouter pour définir et affecter les variables suivantes aux paramètres de l’application :

    Nom Valeur
    DOCKER_REGISTRY_SERVER_URL $(registry.url)
    DOCKER_REGISTRY_SERVER_USERNAME $(registry.username)
    DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password)
  5. Cliquez sur OK.

    Add and set variables

Configurer un déploiement continu

Pour activer le déploiement continu :

  1. Dans l’onglet Pipeline, sous Artefacts, sélectionnez l’icône en forme d’éclair dans l’artefact de build.

  2. Dans le volet de droite, définissez ensuite le Déclencheur de déploiement continu sur Activé.

  3. Sélectionnez Enregistrer en haut à droite, puis sélectionnez à nouveau Enregistrer.

    Enable continuous deployment trigger

Déployer l’application Java

Maintenant que vous avez activé la solution CI/CD, toute modification du code source crée et exécute automatiquement les builds et les mises en production. Vous pouvez également créer et exécuter des mises en production de façon manuelle, comme suit :

  1. En haut à droite de la page du pipeline de mise en production, sélectionnez Créer une mise en production.

  2. Sur la page Créer une mise en production, sélectionnez le nom de sous Phases pour modifier le déclencheur d’automatique à manuel.

  3. Sélectionnez Créer.

  4. Sélectionnez le nom de la mise en production, pointez ou sélectionnez la phase, puis sélectionnez Déployer.

Testez l’application web Java

Une fois le déploiement effectué, testez votre application web.

  1. Copiez l’URL de l’application web dans le portail Azure.

    App Service app in the Azure portal

  2. Entrez l’URL dans votre navigateur web pour exécuter votre application. La page web doit indiquer Hello Azure !

    Java web app page