Partager via


Intégration continue et déploiement continu sur des appareils Azure IoT Edge (éditeur classique)

S’applique à :IoT Edge 1.4 cocher IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 sont des versions prises en charge. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Azure Pipelines inclut une tâche Azure IoT Edge intégrée qui vous aide à adopter DevOps avec vos applications Azure IoT Edge. Cet article explique comment utiliser les fonctionnalités d’intégration continue et de déploiement continu d’Azure Pipelines pour générer, tester et déployer rapidement et efficacement des applications sur votre azure IoT Edge à l’aide de l’éditeur classique. Vous pouvez également utiliserYAML .

Diagramme des branches d’intégration continue et de développement continu pour le développement et la production.

Dans cet article, vous allez apprendre à utiliser les tâches Azure IoT Edge intégrées pour Azure Pipelines afin de créer des pipelines de build et de mise en production pour votre solution IoT Edge. Chaque tâche Azure IoT Edge ajoutée à votre pipeline implémente l’une des quatre actions suivantes :

Action Description
Générer les images de module Génère les images conteneur à partir du code de votre solution IoT Edge.
Envoyer les images de module Envoie les images de module au registre de conteneurs que vous avez spécifié.
Générer le manifeste de déploiement Génère le fichier final du manifeste de déploiement IoT Edge à partir d’un fichier deployment.template.json et des variables.
Déployer sur des appareils IoT Edge Crée des déploiements IoT Edge sur un ou plusieurs appareils IoT Edge.

Sauf indication contraire, les procédures décrites dans cet article n’explorent pas toutes les fonctionnalités disponibles par le biais des paramètres de tâche. Pour plus d’informations, consultez les ressources suivantes :

Conditions préalables

  • Référentiel Azure Repos. Si vous n’en avez pas, vous pouvez créer un référentiel Git dans votre projet. Pour cet article, nous avons créé un référentiel appelé IoTEdgeRepo.

  • Une solution IoT Edge validée et poussée vers votre dépôt. Si vous souhaitez créer un exemple de solution pour tester cet article, suivez les étapes décrites dans Développer des modules Azure IoT Edge à l’aide de Visual Studio Code. Pour cet article, nous avons créé dans notre dépôt une solution nommée IoTEdgeSolution qui contient le code d’un module nommé filtermodule.

    Pour cet article, vous avez uniquement besoin du dossier de solution créé par les modèles IoT Edge dans Visual Studio Code ou Visual Studio. Vous n'avez pas à créer, envoyer (push), déployer ou déboguer ce code avant de continuer. Vous configurerez ces processus dans Azure Pipelines.

    Vous devez connaître le chemin du fichier deployment.template.json dans votre solution ; il est utilisé dans plusieurs étapes. Si vous ne connaissez pas bien le rôle du modèle de déploiement, consultez Découvrir comment déployer des modules et établir des routes.

    Conseil / Astuce

    Si vous créez une solution, commencez par cloner votre référentiel localement. Ensuite, lorsque vous créez la solution, vous pouvez choisir de le faire directement dans le dossier du référentiel. De là, vous pouvez facilement valider et envoyer (push) les nouveaux fichiers.

  • Registre de conteneurs où vous pouvez envoyer vos images de module. Vous pouvez utiliser Azure Container Registry ou un registre tiers.

  • Un hub IoT Azure actif avec au moins deux appareils IoT Edge à des fins de test distinct des phases de déploiement de test et de production. Vous pouvez suivre les articles de démarrage rapide pour créer un appareil IoT Edge sur Linux ou Windows.

Créer un pipeline de build pour l’intégration continue

Dans cette section, vous créez un pipeline de build. Vous configurez le pipeline pour qu’il s’exécute automatiquement et publie les journaux de build chaque fois que vous vérifiez les modifications apportées à la solution IoT Edge.

  1. Connectez-vous à votre organisation Azure DevOps (https://dev.azure.com/{your organization}), puis ouvrez le projet contenant votre référentiel de solution IoT Edge.

    Capture d’écran montrant comment ouvrir votre projet DevOps.

  2. Dans le menu du volet gauche de votre projet, sélectionnez Pipelines. Sélectionnez Créer un pipeline au centre de la page. Ou, si vous avez déjà des pipelines de construction, sélectionnez le bouton Créer un pipeline en haut à droite.

    Capture d’écran montrant comment créer un nouveau pipeline de construction.

  3. En bas de la Où est votre code ? page, sélectionnez Utiliser l’éditeur classique. Si vous souhaitez utiliser YAML pour créer les pipelines de build de votre projet, consultez le guide YAML.

    Capture d’écran montrant comment utiliser l’éditeur classique.

  4. Suivez les instructions pour créer votre pipeline.

    1. Fournissez les informations source pour votre nouveau pipeline de build. Sélectionnez Git Azure Repos comme source, puis sélectionnez le projet, le référentiel et la branche où se trouve votre code de solution IoT Edge. Sélectionnez ensuite Continuer.

      Capture d’écran montrant comment sélectionner votre source de pipeline.

    2. Sélectionnez tâche vide au lieu d’un modèle.

      Capture d’écran montrant comment démarrer avec un emploi vide pour votre pipeline de construction.

  5. Une fois votre pipeline créé, vous êtes dirigé vers l’éditeur de pipeline. Ici, vous pouvez modifier le nom, le pool d’agents et la spécification de l’agent du pipeline.

    Vous pouvez sélectionner un pool hébergé par Microsoft ou un pool auto-hébergé que vous gérez.

    Dans la description de votre pipeline, choisissez la spécification de l’agent appropriée en fonction de votre plateforme cible :

    Configurer la spécification de l’agent de build.

  6. Votre pipeline est préconfiguré avec une tâche appelée Agent job 1. Sélectionnez le signe plus (+) pour ajouter quatre tâches au travail : Azure IoT Edge deux fois, copier des fichiers une seule fois et publier des artefacts de build une seule fois. Recherchez chaque tâche et pointez sur le nom de la tâche pour afficher le bouton Ajouter.

    Ajouter une tâche Azure IoT Edge.

    Lorsque les quatre tâches sont ajoutées, votre travail Agent ressemble à l’exemple suivant :

    Quatre tâches dans le pipeline de build.

  7. Sélectionnez la première tâche Azure IoT Edge pour la modifier. Cette tâche génère tous les modules de la solution avec la plateforme cible que vous spécifiez. Modifiez la tâche avec les valeurs suivantes :

    Paramètre Description
    Nom affiché Le nom d’affichage est automatiquement mis à jour lorsque le champ Action change.
    Action Sélectionnez Générer les images de module.
    Fichier .template.json Sélectionnez les points de suspension (...) et naviguez vers le fichier deployment.template.json dans le référentiel qui contient votre solution IoT Edge.
    Plateforme par défaut Sélectionnez le système d’exploitation approprié pour vos modules en fonction de l’appareil IoT Edge ciblé.
    Variables de sortie Fournissez un nom de référence à associer au chemin d’accès du fichier dans lequel votre fichier deployment.json génère, par exemple edge.

    Pour plus d’informations sur cette tâche et ses paramètres, consultez Tâche Azure IoT Edge.

    Ces configurations utilisent le référentiel d’images et la balise définis dans le fichier module.json pour nommer et baliser l’image du module. Générer des images de module permet également de remplacer les variables par la valeur exacte que vous définissez dans le fichier module.json. Dans Visual Studio ou Visual Studio Code, vous spécifiez la valeur réelle dans un fichier .env. Dans Azure Pipelines, vous définissez la valeur sous l’onglet Variables de pipeline. Sélectionnez l’onglet Variables dans le menu de l’éditeur de pipeline et configurez le nom et la valeur comme suit :

    • ACR_ADDRESS : valeur de votre serveur de connexion Azure Container Registry. Vous trouverez la valeur du serveur de connexion dans la page de vue d’ensemble du registre de conteneurs dans le portail Azure.

    Si vous avez d’autres variables dans votre projet, vous pouvez spécifier le nom et la valeur de cet onglet. Générer des images de module reconnaît uniquement les variables au format ${VARIABLE}. Veillez à utiliser ce format dans vos fichiers **/module.json.

  8. Sélectionnez la deuxième tâche Azure IoT Edge pour la modifier. Cette tâche envoie toutes les images du module vers le registre de conteneurs que vous sélectionnez.

    Paramètre Description
    Nom affiché Le nom d’affichage est automatiquement mis à jour lorsque le champ Action change.
    Action Sélectionnez Pousser les images du module.
    Type de registre de conteneurs Utilisez le type par défaut : Azure Container Registry.
    Abonnement Azure Choisissez votre abonnement.
    Registre de conteneurs Azure Sélectionnez le type de registre de conteneurs que vous utilisez pour stocker vos images de module. Selon le type de Registre que vous choisissez, le formulaire change. Si vous choisissez Azure Container Registry, utilisez les listes déroulantes pour sélectionner l’abonnement Azure et le nom de votre registre de conteneurs. Si vous choisissez Generic Container Registry, sélectionnez Nouveau pour créer une connexion de service de registre.
    Fichier .template.json Sélectionnez les points de suspension (...) et accédez au fichier deployment.template.json dans le référentiel qui contient votre solution IoT Edge.
    Plateforme par défaut Sélectionnez le système d’exploitation approprié pour vos modules en fonction de l’appareil IoT Edge ciblé.
    Ajouter des identifiants de registre au manifeste de déploiement Spécifiez true pour ajouter les informations d’identification du registre afin d'envoyer (push) des images Docker au manifeste de déploiement.

    Pour plus d’informations sur cette tâche et ses paramètres, consultez Tâche Azure IoT Edge.

    Si vous avez plusieurs registres de conteneurs pour héberger vos images de module, vous devez dupliquer cette tâche, sélectionner un registre de conteneurs différent et utiliser Contourner module(s) dans les paramètres Avancé afin de contourner les images qui ne correspondent pas à ce registre spécifique.

  9. Sélectionnez la tâche Copier des fichiers pour la modifier. Utilisez cette tâche pour copier des fichiers dans le répertoire de mise en scène de l’artéfact.

    Paramètre Description
    Nom affiché Utiliser le nom par défaut ou personnaliser
    Dossier source Dossier contenant les fichiers à copier.
    Contenu Ajoutez deux lignes : deployment.template.json et **/module.json. Ces deux fichiers servent d’entrées pour générer le manifeste de déploiement IoT Edge.
    Dossier cible Spécifiez la variable $(Build.ArtifactStagingDirectory). Pour en savoir plus sur la description, consultez Générer des variables.

    Pour plus d’informations sur cette tâche et ses paramètres, consultez Tâche de copie de fichiers.

  10. Sélectionnez la tâche Publier des artefacts de build pour l'éditer. Fournissez le chemin d’accès du répertoire intermédiaire d’artefact à la tâche afin que le chemin d’accès puisse être publié pour libérer le pipeline.

    Paramètre Description
    Nom affiché Utilisez le nom par défaut ou personnalisez.
    Chemin de publication Spécifiez la variable $(Build.ArtifactStagingDirectory). Pour en savoir plus, consultez Générer des variables.
    Nom de l’artefact Utilisez le nom par défaut : drop
    Emplacement de publication des artefacts Utilisez l’emplacement par défaut : azure Pipelines

    Pour plus d’informations sur cette tâche et ses paramètres, consultez Tâche Publier les artefacts de build.

  11. Ouvrez l’onglet déclencheurs et cochez la case pour Activer l’intégration continue. Vérifiez que la branche contenant votre code est incluse.

Capture d’écran montrant comment activer le déclencheur d’intégration continue.

  1. Sélectionnez Enregistrer dans la liste déroulante Enregistrer & file d’attente.

Ce pipeline est maintenant configuré pour s’exécuter automatiquement lorsque vous envoyez du nouveau code à votre dépôt. La dernière tâche, la publication des artefacts de pipeline, déclenche un pipeline de lancement. Passez à la section suivante pour construire le pipeline de mise en production.

Créer un pipeline de livraison pour un déploiement continu

Dans cette section, vous allez créer un pipeline de déploiement configuré pour s’exécuter automatiquement lorsque votre pipeline de build dépose les artefacts, et il affichera les journaux de déploiement dans Azure Pipelines.

Créer un pipeline et ajouter une nouvelle phase :

  1. Dans l’onglet Versions sous Pipelines, choisissez + Nouveau pipeline. Sinon, si vous avez déjà des pipelines de mise en production, choisissez le bouton + Nouveau, puis sélectionnez + Nouveau pipeline de mise en production.

    Ajouter un pipeline de mise en production à l’aide du bouton + Nouveau pipeline

  2. Lorsque vous êtes invité à sélectionner un modèle, optez pour une Tâche vide.

    Démarrer avec une tâche vide pour votre pipeline de déploiement

  3. Votre nouveau pipeline de mise en production s'initialise avec une seule phase appelée Phase 1. Renommez la phase 1 en développement et traitez-la comme un pipeline de déploiement continu pour votre environnement de développement. En règle générale, les pipelines de déploiement continu présentent plusieurs phases, notamment le développement, la préproduction et la production. Vous pouvez changer les noms de ces phases ou en créer davantage selon votre pratique DevOps. Fermez la fenêtre de détails de l'étape une fois cette dernière renommée.

    Vous pouvez également renommer votre pipeline de mise en production en sélectionnant le texte « Nouveau pipeline de mise en production » en haut.

  4. Lie la version aux artefacts de build publiés par le pipeline de build. Cliquez sur Ajouter dans la zone artefacts.

    Cliquer sur Ajouter dans la zone des artefacts de l’interface

  5. Dans la page Ajouter un artefact, sélectionnez Build comme Type source. Choisissez le projet et le pipeline de build que vous avez créés. Si vous le souhaitez, remplacez l’Alias source par un nom plus descriptif. Ensuite, cliquez sur Ajouter.

    Dans la page Ajouter un artefact, sélectionner Ajouter pour créer l’artefact

  6. Ouvrez les déclencheurs d’artefact, puis sélectionnez l'interrupteur pour activer le déclencheur de déploiement continu. À présent, une nouvelle version sera créée chaque fois qu’une nouvelle build est disponible.

    Ouvrir les déclencheurs d’artefact et activer le déclencheur de déploiement continu

  7. La phase dev est préconfigurée avec un travail, mais aucune tâche. Dans le menu de pipeline, sélectionnez Tâches, puis la phase dev. Sélectionnez la Tâche d'agent et changez son Nom d’affichage en QA. Vous pouvez définir les détails du travail de l’agent, mais la tâche de déploiement n’étant pas propre à la plateforme, vous pouvez utiliser n’importe quelle Spécification de l’agent dans le Pool d’agents choisi.

    Examiner les tâches de votre phase de développement sous l’onglet Tâches

  8. Au poste AQ, sélectionnez le signe plus (+) pour ajouter deux tâches. Recherchez et ajoutez Azure IoT Edge deux fois.

  9. Sélectionnez la première tâche Azure IoT Edge et configurez-la avec les valeurs suivantes :

    Paramètre Description
    Nom affiché Le nom d’affichage est automatiquement mis à jour lorsque le champ Action change.
    Action Sélectionnez Generate deployment manifest.
    Fichier .template.json Indiquez le chemin : $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Le chemin est publié à partir du pipeline de build.
    Plateforme par défaut Sélectionnez le système d’exploitation approprié pour vos modules en fonction de l’appareil IoT Edge ciblé.
    Chemin de sortie Placez le chemin $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ce chemin est le fichier final du manifeste de déploiement IoT Edge.

    Ces configurations permettent de remplacer les URL des images de module dans le fichier deployment.template.json. Générer le manifeste de déploiement permet également de remplacer les variables par la valeur exacte que vous avez définie dans le fichier deployment.template.json. Dans Visual Studio/Visual Studio Code, vous spécifiez la valeur réelle dans un fichier .env. Dans Azure Pipelines, vous définissez la valeur sous l'onglet Variables du pipeline de mise en production. Accédez à l'onglet Variables et définissez le nom et la valeur comme suit :

    • ACR_ADDRESS : valeur de votre serveur de connexion Azure Container Registry. Vous pouvez récupérer le serveur de connexion à partir de la page Vue d’ensemble de votre registre de conteneurs dans le portail Azure.
    • ACR_PASSWORD : votre mot de passe Azure Container Registry.
    • ACR_USER : votre nom d’utilisateur Azure Container Registry.

    Si votre projet contient d’autres variables, vous pouvez spécifier le nom et la valeur dans cet onglet. Générer le manifeste de déploiement ne reconnaît que les variables de type ${VARIABLE}. Veillez à utiliser cette saveur dans vos fichiers *.template.json.

    "registryCredentials": {
      "<ACR name>": { // Your Azure Container Registry **Registry name** value
        "username": "${ACR_USER}",
        "password": "${ACR_PASSWORD}",
        "address": "${ACR_ADDRESS}"
      }
    }
    

    Configurer les variables pour votre pipeline de mise en production sous l’onglet Variables

  10. Sélectionnez la deuxième tâche Azure IoT Edge et configurez-la avec les valeurs suivantes :

    Paramètre Description
    Nom affiché Le nom d’affichage est automatiquement mis à jour lorsque le champ Action change.
    Action Sélectionnez Deploy to IoT Edge devices.
    Fichier de déploiement Mettez le chemin $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Ce chemin est le fichier du manifeste de déploiement IoT Edge.
    Abonnement Azure Sélectionnez l’abonnement contenant votre IoT Hub.
    Nom de l’IoT Hub Sélectionnez votre hub IoT.
    Choisir un ou plusieurs appareils Choisissez si le pipeline de déploiement doit être déployé sur un ou plusieurs appareils. Si vous le déployez sur un seul appareil, entrez l'ID d’appareil IoT Edge. Si vous le déployez sur plusieurs appareils, spécifiez la condition cible des appareils. La condition cible est un filtre qui correspond à un ensemble d'appareils IoT Edge dans IoT Hub. Pour utiliser les étiquettes d’appareils comme condition, vous devez mettre à jour les étiquettes d’appareils correspondantes avec le jumeau d’appareil IoT Hub. Mettez à jour l'ID de déploiement IoT Edge et la priorité de déploiement IoT Edge dans les paramètres avancés. Pour plus d’informations sur la création d’un déploiement pour plusieurs appareils, consultez Comprendre les déploiements automatiques IoT Edge.
    ID d’appareil ou condition cible Selon la sélection précédente, spécifiez un ID d’appareil ou une condition cible pour le déploiement sur plusieurs appareils.
    Avancé Pour l’ID de déploiement IoT Edge, spécifiez $(System.TeamProject)-$(Release.EnvironmentName). Cette variable mappe le projet et le nom de la version avec votre ID de déploiement IoT Edge.

    Si votre tâche implique l’utilisation d’une image qui réside dans un registre de confiance Docker privé et qui n’est pas visible dans le cloud public, vous pouvez définir la variable d’environnement SKIP_MODULE_IMAGE_VALIDATION sur true pour ignorer la validation de l’image.

    Ajouter des tâches Azure IoT Edge pour votre phase de développement

  11. Sélectionnez Enregistrer pour enregistrer vos modifications dans le nouveau pipeline de mise en production. Pour revenir à la vue du pipeline, sélectionnez l’onglet Pipeline dans le menu.

Remarque

Les déploiements en couches ne sont pas encore pris en charge dans les tâches Azure IoT Edge dans Azure DevOps.

Toutefois, vous pouvez utiliser une tâche Azure CLI dans Azure DevOps pour créer votre déploiement en tant que déploiement en couches. Pour la valeur de de script inline, vous pouvez utiliser la az iot edge deployment create command:

az iot edge deployment create -d {deployment_name} -n {hub_name} --content modules_content.json --layered true

Vérifier les fonctionnalités CI/CD IoT Edge avec les pipelines de build et de mise en production

Pour déclencher une tâche de build, vous pouvez soit envoyer une validation dans le dépôt de code source, soit la déclencher manuellement. Dans cette section, vous déclenchez manuellement le pipeline CI/CD pour tester son fonctionnement. Vérifiez ensuite que le déploiement a abouti.

  1. Dans le menu du volet de gauche, sélectionnez Pipelines et ouvrez le pipeline de build que vous avez créé au début de cet article.

  2. Vous pouvez déclencher un travail de build dans votre pipeline de build en sélectionnant le bouton Exécuter le pipeline en haut à droite.

    Déclencher manuellement votre pipeline de build à l’aide du bouton Exécuter le pipeline

  3. Vérifiez les paramètres Exécuter le pipeline. Ensuite, sélectionnez Exécuter.

    Spécifier les options d’exécution du pipeline et sélectionner Exécuter

  4. Sélectionnez Agent tâche 1 pour surveiller la progression de l’exécution. Vous pouvez examiner les logs de la sortie du travail en sélectionnant celui-ci.

    Examiner la sortie du journal du travail

  5. Si le pipeline de build s'achève correctement, il déclenche une mise en production en phase dev. Le lancement de la version dev réussie crée un déploiement IoT Edge pour cibler les appareils IoT Edge.

    Publication pour la phase de développement

  6. Cliquez sur étape de développement pour afficher les journaux de publication.

    Journaux de version

  7. Si votre pipeline échoue, commencez par examiner les journaux. Vous pouvez consulter les logs d'activité en accédant au résumé d’exécution du pipeline et en sélectionnant l'étape et la tâche. Si une tâche donnée échoue, vérifiez les journaux de cette tâche. Pour obtenir des instructions détaillées sur la configuration et l’utilisation des journaux, consultez l’article Consulter les journaux pour diagnostiquer les problèmes de pipeline.

Étapes suivantes