Intégration continue et déploiement continu sur des appareils Azure IoT Edge

S’applique à :Coche IoT Edge 1.5 IoT Edge 1.5 Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont versions prises en charge. IoT Edge 1.4 LTS est fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Vous pouvez facilement adopter DevOps avec vos applications Azure IoT Edge via les tâches Azure IoT Edge intégrées dans Azure Pipelines. Cet article montre comment utiliser Azure Pipelines pour générer, tester et déployer des modules sur Azure IoT Edge à l’aide de YAML. Vous pouvez également utiliser l’éditeur classique.

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 :

Prérequis

  • 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.

  • Solution IoT Edge validée et envoyée (push) vers votre référentiel. 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

    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 vers lequel envoyer (push) 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.

Pour plus d’informations sur l’utilisation d’Azure Repos, consultez Share your code with Visual Studio and Azure Repos (Partager votre code avec Visual Studio et Azure Repos).

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 afin qu’il s’exécute automatiquement lorsque vous archivez des modifications dans l’exemple de solution IoT Edge et qu’il publie des journaux de génération.

  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 build, sélectionnez le bouton Nouveau pipeline en haut à droite.

    Capture d’écran montrant comment créer un pipeline de build à l’aide du bouton Nouveau pipeline.

  3. Dans la page Où se trouve votre code ?, sélectionnez Azure Repos Git YAML. Si vous souhaitez utiliser l’éditeur classique pour créer les pipelines de build de votre projet, consultez le guide de l’éditeur classique.

  4. Sélectionnez le référentiel pour lequel vous créez un pipeline.

    Capture d’écran montrant comment sélectionner le référentiel de votre pipeline de build.

  5. Dans la page Configurer votre pipeline, sélectionnez Pipeline de démarrage. Si vous avez un fichier YAML Azure Pipelines préexistant que vous souhaitez utiliser pour créer ce pipeline, vous pouvez sélectionner Fichier YAML Azure Pipelines existant et spécifier la branche et le chemin du fichier dans le référentiel.

    Sélectionnez un pipeline de démarrage ou un fichier YAML Azure Pipelines existant pour commencer votre pipeline de build

  6. Dans la page Passer en revue le fichier YAML de pipeline, vous pouvez sélectionner le nom par défaut azure-pipelines.yml pour renommer le fichier de configuration de votre pipeline.

    Sélectionnez Afficher l’Assistant pour ouvrir la palette Tâches.

    Capture d’écran montrant comment sélectionner Afficher l’Assistant pour ouvrir la palette Tâches.

  7. Pour ajouter une tâche, placez votre curseur à la fin du fichier YAML ou à l’endroit où vous souhaitez que les instructions pour votre tâche soient ajoutées. Recherchez et sélectionnez Azure IoT Edge. Renseignez les paramètres de la tâche comme suit. Ensuite, cliquez sur Ajouter.

    Paramètre Description
    Action Sélectionnez Générer les images de module.
    Fichier .template.json Spécifiez l’emplacement du 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é.

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

    Capture d’écran de la palette Utiliser des tâches et comment ajouter des tâches à votre pipeline.

    Conseil

    Une fois chaque tâche ajoutée, l’éditeur met automatiquement en surbrillance les lignes ajoutées. Pour éviter tout remplacement accidentel, désélectionnez les lignes et fournissez un nouvel espace pour la tâche suivante avant d’ajouter des tâches supplémentaires.

  8. Répétez ce processus pour ajouter trois tâches supplémentaires avec les paramètres suivants :

    • Tâche : Azure IoT Edge

      Paramètre Description
      Action Sélectionnez Envoyer les images de module.
      Type de registre de conteneurs Utilisez le type par défaut : Azure Container Registry.
      Abonnement Azure Sélectionnez votre abonnement.
      Azure Container Registry Choisissez le registre que vous souhaitez utiliser pour le pipeline.
      Fichier .template.json Spécifiez l’emplacement du 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é.

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

    • Tâche : Copier des fichiers

      Paramètre Description
      Dossier source Dossier source à partir duquel effectuer la copie. La racine du référentiel est vide. Utilisez des variables si des fichiers ne se trouvent pas dans le référentiel. Exemple : $(agent.builddirectory).
      Contenu Ajoutez deux lignes : deployment.template.json et **/module.json.
      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.

    • Tâche : Publier des artefacts de build

      Paramètre Description
      Chemin de publication Spécifiez la variable $(Build.ArtifactStagingDirectory). Pour en savoir plus sur la description, consultez Générer des variables.
      Nom de l’artefact Spécifiez 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.

  9. Sélectionnez Enregistrer dans la liste déroulante Enregistrer et exécuter en haut à droite.

  10. Le déclencheur pour l’intégration continue est activé par défaut pour votre pipeline YAML. Si vous souhaitez modifier ces paramètres, sélectionnez votre pipeline, puis Modifier en haut à droite. Sélectionnez Plus d’actions en regard du bouton Exécuter en haut à droite et accédez à Déclencheurs. L’Intégration continue est indiquée comme étant activée sous le nom de votre pipeline. Si vous souhaitez afficher les détails du déclencheur, cochez la case Remplacer le déclencheur d’intégration continue YAML à partir d’ici.

Capture d’écran montrant comment passer en revue les paramètres de déclencheur de votre pipeline à partir du menu Déclencheurs sous Plus d’actions.

Passez à la section suivante pour générer le pipeline de mise en production.

Créer un pipeline de mise en production pour un déploiement continu

Dans cette section, vous créez un pipeline de mise en production configuré pour s’exécuter automatiquement quand votre pipeline de build supprime des artefacts. Ce pipeline de build affichera les journaux d’activité de déploiement dans Azure Pipelines.

Créer un pipeline et ajouter une nouvelle phase :

  1. Sous l’onglet Mises en production dans 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 un travail vide pour votre pipeline de mise en production

  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 la phase 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. Liez la mise en production aux artefacts de build publiés par le pipeline de build. Cliquez sur Ajouter dans la zone des 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 le bouton bascule pour activer le déclencheur de déploiement continu. Désormais, une mise en production est 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 le Travail de l’agent et changez son Nom d’affichage en AQ. 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. Sur le travail 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 d’affichage 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}. Par conséquent, veillez à utiliser ce type 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 d’affichage 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 Placez 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 Indiquez si vous souhaitez que le pipeline de mise en production soit 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.

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

Pour déclencher un travail de build, envoyez (push) une validation dans le dépôt de code source, ou déclenchez-le 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 Travail de l’agent 1 pour observer la progression de l’exécution. Vous pouvez examiner les journaux de la sortie du travail en sélectionnant le travail.

    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. La mise en production dev réussie crée un déploiement IoT Edge sur les appareils IoT Edge cibles.

    Mise en production en phase dev

  6. Cliquez sur la phase dev pour afficher les journaux de mise en production.

    Journaux d'activité de mise en production

  7. Si votre pipeline échoue, commencez par examiner les journaux. Vous pouvez afficher les journaux en accédant au résumé de l’exécution du pipeline et en sélectionnant le travail 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