Integrazione continua e distribuzione continua nei dispositivi Azure IoT Edge

Si applica a:Segno di spunta IoT Edge 1.5 IoT Edge 1.5 Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS è di fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Si può facilmente adottare DevOps con le applicazioni Azure IoT Edge con le attività integrate Azure IoT Edge in Azure Pipelines. Questo articolo illustra come usare Azure Pipelines per compilare, testare e distribuire moduli Azure IoT Edge usando YAML. In alternativa, è possibile usare l'editor classico.

Diagramma dell'integrazione continua e dei rami di sviluppo continuo per lo sviluppo e la produzione.

Questo articolo illustra come usare le attività predefinite di Azure IoT Edge per Azure Pipelines per creare pipeline di compilazione e rilascio per la soluzione IoT Edge. Ogni attività di Azure IoT Edge aggiunta alla pipeline implementa una delle quattro azioni seguenti:

Azione Descrizione
Compilare immagini del modulo Accetta il codice della soluzione IoT Edge e compila le immagini del contenitore.
Esegui push delle immagini del modulo Esegue il push delle immagini del modulo nel registro contenitori specificato.
Generare il manifesto della distribuzione Accetta un file deployment.template.json e le variabili, quindi genera il file manifesto della distribuzione di IoT Edge finale.
Distribuire nei dispositivi IoT Edge Crea distribuzioni di IoT Edge in uno o più dispositivi IoT Edge.

Se non diversamente specificato, le procedure descritte in questo articolo non esplorano tutte le funzionalità disponibili tramite i parametri dell'attività. Per ulteriori informazioni, vedi le seguenti risorse:

Prerequisiti

  • Un repository Azure Repos. Se non se ne ha uno, è possibile creare un nuovo repository Git nel progetto. Per questo articolo è stato creato un repository denominato IoTEdgeRepo.

  • Una soluzione IoT Edge di cui sia stato eseguito il commit e il push nel repository. Per creare una nuova soluzione di esempio per il test di questo articolo, seguire la procedura descritta in Sviluppare moduli Azure IoT Edge con Visual Studio Code. Per questo articolo è stata creata una soluzione nel repository denominata IoTEdgeSolution, che include il codice per un modulo denominato filtermodule.

    Per questo articolo, tutto quello che serve è la cartella della soluzione creata dai modelli IoT Edge in Visual Studio Code o Visual Studio. Non è necessario compilare, eseguire il push, distribuire o eseguire il debug di questo codice prima di procedere. Questi processi verranno configurati in Azure Pipelines.

    Conoscere il percorso del file deployment.template.json nella soluzione, che viene usato in diversi passaggi. Se non si ha familiarità con il ruolo del modello di distribuzione, vedere Informazioni su come distribuire i moduli e stabilire route.

    Suggerimento

    Se si sta creando una nuova soluzione, prima di tutto clonare il repository in locale. Quindi, quando si crea la soluzione, sarà possibile crearla direttamente nella cartella del repository. Da questa posizione è possibile eseguire facilmente il commit e il push dei nuovi file.

  • Un registro contenitori in cui eseguire il push delle immagini dei moduli. È possibile usare il Registro Azure Container o un registro di terze parti.

  • Un hub IoT di Azure attivo con almeno due dispositivi IoT Edge per testare le fasi separate di test e distribuzione di produzione. È possibile seguire gli articoli di avvio rapido per creare un dispositivo IoT Edge in Linux o Windows

Per altre informazioni sull'uso di Azure Repos, vedere Condividere il codice con Visual Studio e Azure Repos.

Creare una pipeline di compilazione per l'integrazione continua

In questa sezione viene creata una nuova pipeline di compilazione. La pipeline viene configurata per l'esecuzione automatica quando si eseguono le modifiche alla soluzione IoT Edge di esempio e si pubblicano i log di compilazione.

  1. Accedere all'organizzazione di Azure DevOps (https://dev.azure.com/{your organization}) e aprire il progetto che contiene il repository della soluzione IoT Edge.

    Screenshot che mostra come aprire il progetto DevOps.

  2. Nel menu del riquadro sinistro del progetto selezionare Pipeline. Selezionare Crea pipeline al centro della pagina. In alternativa, se sono già presenti pipeline di compilazione, selezionare il pulsante Nuova pipeline in alto a destra.

    Screenshot che mostra come creare una nuova pipeline di compilazione usando il pulsante Nuova pipeline .

  3. Nella pagina Dove si trova il codice selezionare Azure Repos Git YAML. Se si vuole usare l'editor classico per creare le pipeline di compilazione del progetto, vedere la guida all'editor classico.

  4. Selezionare il repository per cui si sta creando una pipeline.

    Screenshot che mostra come selezionare il repository per la pipeline di compilazione.

  5. Nella pagina Configura la pipeline selezionare Pipeline di avvio. Se si dispone di un file YAML di Azure Pipelines preesistente che si vuole usare per creare questa pipeline, è possibile selezionare File YAML di Azure Pipelines esistente e specificare il ramo e il percorso nel repository al file.

    Selezionare La pipeline iniziale o il file YAML di Azure Pipelines esistente per avviare la pipeline di compilazione

  6. Nella pagina Verifica YAML della pipeline è possibile selezionare il nome azure-pipelines.yml predefinito per rinominare il file di configurazione della pipeline.

    Selezionare Mostra assistente per aprire il riquadro Attività.

    Screenshot che mostra come selezionare Mostra assistente per aprire il riquadro Attività.

  7. Per aggiungere un'attività, posizionare il cursore alla fine di YAML o ovunque si desideri aggiungere le istruzioni per l'attività. Cercare e selezionare Azure IoT Edge. Compilare i parametri dell'attività come indicato di seguito. Quindi selezionare Aggiungi.

    Parametro Descrizione
    Azione Selezionare Compila immagini del modulo.
    .template.json file Specificare il percorso del file deployment.template.json nel repository che contiene la soluzione IoT Edge.
    Piattaforma predefinita Selezionare il sistema operativo appropriato per i moduli in base al dispositivo IoT Edge di destinazione.

    Per altre informazioni su questa attività e sui relativi parametri, vedere Attività azure IoT Edge.

    Screenshot del riquadro Usa attività e come aggiungere attività alla pipeline.

    Suggerimento

    Dopo l'aggiunta di ogni attività, l'editor evidenzia automaticamente le righe aggiunte. Per evitare la sovrascrittura accidentale, deselezionare le righe e fornire un nuovo spazio per l'attività successiva prima di aggiungere attività aggiuntive.

  8. Ripetere questo processo per aggiungere altre tre attività con i parametri seguenti:

    • Attività: Azure IoT Edge

      Parametro Descrizione
      Azione Selezionare Push module images (Esegui push immagini modulo).
      Tipo di registro contenitori Usare il tipo predefinito: Registro Azure Container.
      Sottoscrizione di Azure Selezionare la propria sottoscrizione.
      Registro Azure Container Scegliere il Registro di sistema che si vuole usare per la pipeline.
      .template.json file Specificare il percorso del file deployment.template.json nel repository che contiene la soluzione IoT Edge.
      Piattaforma predefinita Selezionare il sistema operativo appropriato per i moduli in base al dispositivo IoT Edge di destinazione.

      Per altre informazioni su questa attività e sui relativi parametri, vedere Attività azure IoT Edge.

    • Attività: Copia file

      Parametro Descrizione
      Cartella di origine Cartella di origine da cui copiare. Empty è la radice del repository. Usare le variabili se i file non si trovano nel repository. Esempio: $(agent.builddirectory).
      Contenuto Aggiungere due righe: deployment.template.json e **/module.json.
      Target Folder Specificare la variabile $(Build.ArtifactStagingDirectory). Per altre informazioni sulla descrizione, vedere Compilare le variabili .

      Per altre informazioni su questa attività e sui relativi parametri, vedere Attività Copia file.

    • Attività: Pubblicare artefatti di compilazione

      Parametro Descrizione
      Percorso per la pubblicazione Specificare la variabile $(Build.ArtifactStagingDirectory). Per altre informazioni sulla descrizione, vedere Compilare le variabili .
      Nome dell'artefatto Specificare il nome predefinito: drop
      Percorso di pubblicazione degli artefatti Usare il percorso predefinito: Azure Pipelines

      Per altre informazioni su questa attività e sui relativi parametri, vedere l'attività Pubblica artefatti di compilazione.

  9. Selezionare Salva dall'elenco a discesa Salva ed esegui in alto a destra.

  10. Il trigger per l'integrazione continua è abilitato per impostazione predefinita per la pipeline YAML. Per modificare queste impostazioni, selezionare la pipeline e selezionare Modifica in alto a destra. Selezionare Altre azioni accanto al pulsante Esegui in alto a destra e passare a Trigger. L'integrazione continua viene visualizzata come abilitata sotto il nome della pipeline. Per visualizzare i dettagli del trigger, selezionare la casella Esegui l'override del trigger di integrazione continua YAML da qui .

Screenshot che mostra come esaminare le impostazioni del trigger della pipeline dal menu Trigger in Altre azioni.

Passare alla sezione successiva per creare la pipeline di versione.

Creare una pipeline di versione per la distribuzione continua

In questa sezione si crea una pipeline di versione configurata per essere eseguita automaticamente quando la pipeline di compilazione rilascerà gli artefatti e mostrerà i log di distribuzione in Azure Pipelines.

Creare una nuova pipeline e aggiungere una nuova fase:

  1. Nella scheda Versioni in Pipeline scegliere + Nuova pipeline. In alternativa, se sono già disponibili pipeline di versione, scegliere il pulsante + Nuova e fare clic su + Nuova pipeline di versione.

    Aggiungere una pipeline di versione usando il pulsante + Nuova pipeline

  2. Quando viene richiesto di selezionare un modello, scegliere di iniziare con una fase vuota.

    Iniziare con un processo vuoto per la pipeline di versione

  3. La nuova pipeline di versione viene inizializzata con un'unica fase, denominata Fase 1. Rinominare la fase 1 per lo sviluppo e considerarla come una pipeline di distribuzione continua per l'ambiente di sviluppo. In genere, le pipeline di distribuzione continua hanno più fasi, tra cui sviluppo, gestione temporanea e produzione. È possibile usare nomi diversi e crearne di più in base alla procedura devOps. Dopo aver modificato il nome, chiudere la finestra dei dettagli della fase.

    È anche possibile rinominare la pipeline di versione selezionando il testo "Nuova pipeline di versione" nella parte superiore.

  4. Collegare la versione agli artefatti di compilazione pubblicati dalla pipeline di compilazione. Fare clic su Aggiungi nell'area degli elementi.

    Fare clic su Aggiungi nell'area artefatti dell'interfaccia

  5. Nella pagina Aggiungi un artefatto selezionare Compila come tipo di origine. Scegliere il progetto e la pipeline di compilazione creata. Se si desidera, è possibile modificare l'alias di origine impostando un valore più descrittivo. Quindi selezionare Aggiungi.

    Nella pagina aggiungi un artefatto selezionare Aggiungi per creare l'artefatto

  6. Aprire i trigger degli artefatti e selezionare l'interruttore per abilitare il trigger di distribuzione continua. A questo punto, ogni volta che è disponibile una nuova build, verrà creata una nuova versione.

    Aprire i trigger dell'artefatto e attivare/disattivare per abilitare il trigger di distribuzione continua

  7. La fase di sviluppo è preconfigurata con un processo e zero attività. Dal menu della pipeline selezionare Attività e quindi scegliere la fase di sviluppo . Selezionare il processo di Agent e modificarne il nome visualizzato in QA. È possibile configurare i dettagli sul processo dell'agente, ma l'attività di distribuzione non è sensibile alla piattaforma, quindi è possibile usare qualsiasi specifica dell'agente nel pool di agenti scelto.

    Visualizzare le attività per la fase di sviluppo nella scheda Attività

  8. Nel processo qa selezionare il segno più (+) per aggiungere due attività. Cercare e aggiungere Azure IoT Edge due volte.

  9. Selezionare la prima attività di Azure IoT Edge e configurarla con i valori seguenti:

    Parametro Descrizione
    Display name Il nome visualizzato viene aggiornato automaticamente quando viene modificato il campo Azione.
    Azione Selezionare Generate deployment manifest.
    .template.json file Specificare il percorso: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Il percorso viene pubblicato dalla pipeline di compilazione.
    Piattaforma predefinita Selezionare il sistema operativo appropriato per i moduli in base al dispositivo IoT Edge di destinazione.
    Percorso di output Inserire il percorso $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Questo percorso è il file manifesto della distribuzione di IoT Edge finale.

    Queste configurazioni consentono di sostituire gli URL dell'immagine del deployment.template.json modulo nel file. Il manifesto genera distribuzione consente anche di sostituire le variabili con il valore esatto definito nel deployment.template.json file. In Visual Studio/Visual Studio Code si specifica il valore effettivo in un .env file. In Azure Pipelines il valore viene impostato nella scheda Variabili della pipeline di versione. Passare alla scheda Variabili e configurare il nome e il valore come indicato di seguito:

    • ACR_ADDRESS: valore del server di accesso Registro Azure Container. È possibile recuperare il server di accesso dalla pagina Panoramica del registro contenitori nel portale di Azure.
    • ACR_PASSWORD: password Registro Azure Container.
    • ACR_U edizione Standard R: nome utente Registro Azure Container.

    Se nel progetto sono presenti altre variabili, è possibile specificare il nome e il valore in questa scheda. Il manifesto di generazione della distribuzione può riconoscere solo le variabili in ${VARIABLE} versione. Assicurarsi di usare questo sapore nei *.template.json file.

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

    Configurare le variabili per la pipeline di versione nella scheda Variabili

  10. Selezionare la seconda attività di Azure IoT Edge e configurarla con i valori seguenti:

    Parametro Descrizione
    Display name Il nome visualizzato viene aggiornato automaticamente quando viene modificato il campo Azione.
    Azione Selezionare Deploy to IoT Edge devices.
    File di distribuzione Inserire il percorso $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Questo percorso è il file manifesto della distribuzione IoT Edge.
    Sottoscrizione di Azure Selezionare la sottoscrizione che contiene l'hub IoT.
    Nome hub IoT Selezionare l'hub IoT.
    Scegliere un dispositivo singolo/multiplo Scegliere se si vuole distribuire la pipeline di versione in uno o più dispositivi. Se si distribuisce a un singolo dispositivo, immettere l'ID del dispositivo IoT Edge. Se si distribuisce a più dispositivi, specificare la condizione di destinazione del dispositivo. La condizione di destinazione è un filtro che corrisponde a un set di dispositivi IoT Edge in hub IoT. Se si vogliono usare tag di dispositivo come condizione, è necessario aggiornare i tag dei dispositivi corrispondenti con hub IoT dispositivo gemello. Aggiornare l'ID distribuzione di IoT Edge e la priorità della distribuzione IoT Edge nelle impostazioni avanzate. Per altre informazioni sulla creazione di una distribuzione per più dispositivi, vedere Informazioni sulle distribuzioni automatiche IoT Edge.
    ID dispositivo o condizione di destinazione A seconda della selezione precedente, specificare un ID dispositivo o una condizione di destinazione da distribuire in più dispositivi.
    Avanzato Per l'ID di distribuzione IoT Edge, specificare $(System.TeamProject)-$(Release.EnvironmentName). Questa variabile esegue il mapping del nome del progetto e della versione con l'ID distribuzione IoT Edge.

    Se l'attività prevede l'uso di un'immagine che si trova in un registro attendibile Docker privato che non è visibile al cloud pubblico, è possibile impostare la variabile di ambiente SKIP_MODULE_IMAGE_VALIDATION su per true ignorare la convalida delle immagini.

    Aggiungere attività di Azure IoT Edge per la fase di sviluppo

  11. Selezionare Salva per salvare le modifiche nella nuova pipeline di versione. Tornare alla visualizzazione pipeline selezionando la scheda Pipeline dal menu.

Verificare la CI/CD di IoT Edge con la compilazione e le pipeline di rilascio

Per attivare un processo di compilazione, è possibile eseguire il push di un commit al repository del codice sorgente o attivarlo manualmente. In questa sezione si attiva manualmente la pipeline CI/CD per verificarne il funzionamento. Si verifica quindi che la distribuzione abbia esito positivo.

  1. Nel menu del riquadro sinistro selezionare Pipeline e aprire la pipeline di compilazione creata all'inizio di questo articolo.

  2. È possibile attivare un processo di compilazione nella pipeline di compilazione selezionando il pulsante Esegui pipeline in alto a destra.

    Attivare manualmente la pipeline di compilazione usando il pulsante Esegui pipeline

  3. Esaminare le impostazioni della pipeline di esecuzione. Selezionare quindi Esegui.

    Specificare le opzioni della pipeline di esecuzione e selezionare Esegui

  4. Selezionare Agent job 1 (Processo agente 1 ) per controllare lo stato dell'esecuzione. È possibile esaminare i log dell'output del processo selezionando il processo.

    Esaminare l'output del log del processo

  5. Se la pipeline di compilazione viene completata correttamente, attiva una versione per la fase di sviluppo . La versione di sviluppo riuscita crea la distribuzione di IoT Edge per i dispositivi IoT Edge di destinazione.

    Rilascio per lo sviluppo

  6. Fare clic sulla fase di sviluppo per visualizzare i log di versione.

    Log di versione

  7. Se la pipeline ha esito negativo, iniziare esaminando i log. È possibile visualizzare i log passando al riepilogo dell'esecuzione della pipeline e selezionando il processo e l'attività. Se una determinata attività ha esito negativo, controllare i log per l'attività. Per istruzioni dettagliate sulla configurazione e l'uso dei log, vedere Esaminare i log per diagnosticare i problemi della pipeline.

Passaggi successivi