Condividi tramite


Integrazione continua e distribuzione continua nei dispositivi Azure IoT Edge (editor classico)

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

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 sono versioni supportate. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Azure Pipelines include un'attività predefinita di Azure IoT Edge che consente di adottare DevOps con le applicazioni Azure IoT Edge. Questo articolo illustra come usare le funzionalità di integrazione continua e distribuzione continua di Azure Pipelines per compilare, testare e distribuire applicazioni in modo rapido ed efficiente in Azure IoT Edge usando l'editor classico. In alternativa, è possibile usare YAML.

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

Questo articolo descrive come usare le attività di Azure IoT Edge integrate per Azure Pipelines per creare e rilasciare pipeline 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 Recupera il codice della soluzione IoT Edge e compila le immagini del contenitore.
Effettua il push delle immagini del modulo Carica le immagini dei moduli nel registro contenitori specificato.
Generare il manifesto di distribuzione Recupera un file deployment.template.json e le variabili, quindi genera il file manifesto della distribuzione di IoT Edge finale.
Distribuire su 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 altre informazioni, vedere le risorse seguenti:

Prerequisiti

  • Un repository di 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. Se si vuole creare una nuova soluzione di esempio per testare le procedure di questo articolo, seguire i passaggi descritti in Sviluppare moduli di 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.

    Occorre 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 provare le fasi separate di test e distribuzione in produzione. È possibile seguire gli articoli di avvio rapido per creare un dispositivo IoT Edge in Linux o Windows

Creare una pipeline di compilazione per l'integrazione continua

In questa sezione viene creata una nuova pipeline di compilazione. Configurare la pipeline per l'esecuzione automatica e la pubblicazione dei log di compilazione ogni volta che si controllano le modifiche apportate alla soluzione IoT Edge.

  1. Accedere all'organizzazione 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. Oppure, se si hanno già pipeline di build, selezionare il pulsante Nuova pipeline in alto a destra.

    Screenshot che mostra come creare una nuova pipeline di compilazione.

  3. Nella parte inferiore della pagina Dove si trova il codice selezionare Usa l'editor classico. Se si vuole usare YAML per creare le pipeline di compilazione del progetto, vedere la guida YAML.

    Screenshot che mostra come usare l'editor classico.

  4. Seguire le istruzioni per creare la pipeline.

    1. Specificare le informazioni di origine per la nuova pipeline di compilazione. Selezionare Azure Repos Git come origine, quindi selezionare il progetto, il repository e il ramo in cui si trova il codice della soluzione IoT Edge. Selezionare quindi Continua.

      Screenshot che mostra come selezionare l'origine della pipeline.

    2. Selezionare Lavoro vuoto anziché un modello.

      Screenshot che mostra come iniziare con un lavoro vuoto per la pipeline di build.

  5. Una volta creata la pipeline, si viene automaticamente portati all'editor della pipeline. Qui è possibile modificare il nome della pipeline, il pool di agenti e la specifica dell'agente.

    È possibile selezionare un pool ospitato da Microsoft o un pool self-hosted gestito.

    Nella descrizione della pipeline scegliere la specifica dell'agente corretta in base alla piattaforma di destinazione:

    Configurare la specifica dell'agente di compilazione.

  6. La pipeline viene preconfigurata con un'attività denominata Attività agente 1. Selezionare il segno più (+) per aggiungere quattro attività al processo: Azure IoT Edge due volte, Copia file una sola volta e Pubblica artefatti di compilazione una sola volta. Cercare ogni attività e passare il puntatore del mouse sul nome dell'attività per visualizzare il pulsante Aggiungi .

    Aggiungi attività Azure IoT Edge.

    Quando vengono aggiunte tutte e quattro le attività, l'attività dell'Agent è simile all'esempio seguente:

    Quattro attività nella pipeline di compilazione.

  7. Selezionare la prima attività di Azure IoT Edge per modificarla. Questa attività compila tutti i moduli nella soluzione con la piattaforma di destinazione specificata. Modifica l'attività con i seguenti valori:

    Parametro Descrizione
    Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando il campo Azione cambia.
    Azione Selezionare Compila immagini del modulo.
    File template.json Selezionare i puntini di sospensione (...) e passare al 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.
    Variabili di uscita Specificare un nome di riferimento da associare al percorso del file in cui viene generato il file deployment.json, ad esempio edge.

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

    Queste configurazioni usano il repository di immagini e il module.json tag definiti nel file per denominare e contrassegnare l'immagine del modulo. Le immagini del modulo di compilazione consentono anche di sostituire le variabili con il valore esatto definito nel module.json file. In Visual Studio o Visual Studio Code, è necessario specificare il valore effettivo in un file .env. In Azure Pipelines il valore viene impostato nella scheda Variabili della pipeline . Selezionare la scheda Variabili nel menu dell'editor della pipeline e configurare il nome e il valore come segue:

    • ACR_ADDRESS: Il valore del server di accesso del tuo Registro Container di Azure. È possibile trovare il valore del server di accesso nella pagina di panoramica del registro contenitori nel portale di Azure.

    Se nel progetto sono presenti altre variabili, è possibile specificare il nome e il valore in questa scheda. Le immagini del modulo di compilazione riconoscono solo le variabili in ${VARIABLE} formato. Assicurarsi di usare questo formato nei **/module.json file.

  8. Selezionare la seconda attività di Azure IoT Edge per modificarla. Questa attività esegue il push di tutte le immagini del modulo nel registro contenitori selezionato.

    Parametro Descrizione
    Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando il campo Azione cambia.
    Azione Selezionare Carica le immagini del modulo.
    Tipo di registro contenitori Usare il tipo predefinito: Azure Container Registry.
    Sottoscrizione di Azure Scegliere la propria sottoscrizione.
    Registro dei container di Azure Selezionare il tipo di registro contenitori usato per archiviare le immagini del modulo. A seconda del tipo di registro scelto, il modulo cambia. Se si sceglie Azure Container Registry, usare l'elenco a discesa per selezionare la sottoscrizione di Azure e il nome del registro dei contenitori. Se si sceglie Registro Contenitori generici, selezionare Nuovo per creare una connessione al servizio del Registro di sistema.
    File template.json Selezionare i puntini di sospensione (...) e navigare fino al 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.
    Aggiungere credenziali del Registro di sistema al manifesto della distribuzione Specificare true per aggiungere le credenziali del Registro di sistema per il push di immagini Docker nel manifesto della distribuzione.

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

    Se sono presenti più registri contenitori per ospitare le immagini del modulo, è necessario duplicare questa attività, selezionare un registro contenitori diverso e usare i moduli Bypass nelle impostazioni avanzate per ignorare le immagini che non sono per questo registro specifico.

  9. Selezionare l'attività Copia file per modificarla. Usare questa attività per copiare i file nella directory di preparazione dell'artefatto.

    Parametro Descrizione
    Nome visualizzato Usare il nome predefinito o personalizzare
    Cartella di origine Cartella con i file da copiare.
    Contenuto Aggiungere due righe: deployment.template.json e **/module.json. Questi due file fungono da input per generare il manifesto della distribuzione di IoT Edge.
    Cartella di destinazione Specificare la variabile $(Build.ArtifactStagingDirectory). Per informazioni sulla descrizione, vedere Creare variabili.

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

  10. Selezionare l'attività Pubblica Artefatti di Compilazione per modificarla. Specificare il percorso della directory di staging degli artefatti per l'attività in modo che il percorso possa essere pubblicato nella pipeline di rilascio.

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

    Per ulteriori informazioni su questa attività e sui relativi parametri, vedere Pubblica compilazioni di artefatti attività.

  11. Aprire la scheda Trigger e selezionare la casella Abilita integrazione continua. Assicurarsi che il ramo contenente il codice sia incluso.

Screenshot che mostra come attivare il trigger di integrazione continua.

  1. Selezionare Salva dall'elenco a discesa Salva e metti in coda.

Questa pipeline è ora configurata per l'esecuzione automatica quando si esegue il push di nuovo codice nel repository. L'ultima attività, che pubblica gli artefatti della pipeline, attiva una pipeline di rilascio. Passa alla sezione successiva per creare la pipeline di rilascio.

Creare una pipeline di versione per la distribuzione continua

In questa sezione, creerai una pipeline di rilascio configurata per eseguire automaticamente quando la pipeline di compilazione rilascia gli artefatti e visualizzerà 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 rilascio usando il pulsante + Nuova pipeline

  2. Quando viene richiesto di selezionare un modello, scegliere di iniziare con un lavoro vuoto.

    Inizia con un'attività vuota per la pipeline di rilascio

  3. La nuova pipeline di versione viene inizializzata con un'unica fase, denominata Fase 1. Rinominare la fase 1 dev 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 dev, staging e prod. È possibile usare nomi diversi e crearne di più in base alle proprie procedure DevOps. Chiudere la finestra dei dettagli della fase una volta rinominata.

    È 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 artefatti.

    Fare clic su Aggiungi nell'area Artefatti dell'interfaccia

  5. Nella pagina Aggiungi un artefatto selezionare Compilazione come Tipo di origine. Scegli il progetto e la pipeline di compilazione che hai creato. Se lo si desidera, è possibile modificare 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 il toggle per abilitare il trigger di distribuzione continua. A questo momento, verrà creata una nuova versione ogni volta che è disponibile una nuova compilazione.

    Aprire i trigger degli artefatti e attivare l'interruttore per abilitare il trigger di distribuzione continua

  7. La fase dev è preconfigurata con un processo e nessuna attività. Nel menu della pipeline selezionare Attività e quindi scegliere la fase dev. Selezionare il Lavoro dell'agente e modificare il Nome di visualizzazione in QA. È possibile configurare i dettagli del lavoro dell'agente, ma l'attività di distribuzione è indipendente dalla piattaforma, pertanto è possibile usare qualsiasi Specifica agente nel Pool di agenti scelto.

    Visualizzare le attività per la fase dev nella scheda Attività

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

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

    Parametro Descrizione
    Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando il campo Azione cambia.
    Azione Seleziona Generate deployment manifest.
    File template.json 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 delle immagini del modulo nel file deployment.template.json. Genera manifesto della distribuzione consente anche di sostituire le variabili con il valore esatto definito nel file deployment.template.json. In Visual Studio/Visual Studio Code si specifica il valore effettivo in un file .env. In Azure Pipelines il valore viene impostato nella scheda Variabili della pipeline di rilascio. Passare alla scheda Variabili e configurare il nome e il valore come indicato di seguito.

    • ACR_ADDRESS: Il valore del server di accesso del tuo Registro Container di Azure. È possibile recuperare il server di accesso dalla pagina Panoramica del registro contenitori nel portale di Azure.
    • ACR_PASSWORD: password del Registro Azure Container.
    • ACR_USER: nome utente del Registro Azure Container.

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

    "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à Azure IoT Edge e configurarla con i valori seguenti:

    Parametro Descrizione
    Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando il campo Azione cambia.
    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 di IoT Edge.
    Sottoscrizione di Azure Selezionare la sottoscrizione che contiene l'hub IoT.
    Nome hub IoT Selezionare l'hub IoT.
    Scegli un dispositivo singolo/multiplo Scegliere se si vuole che la pipeline di rilascio esegua la distribuzione su 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 consente di individuare un set di dispositivi IoT Edge nell'hub IoT. Se si vogliono usare i tag del dispositivo come condizione, è necessario aggiornare i tag di dispositivo corrispondenti con il dispositivo gemello hub IoT. Aggiornare l'ID di distribuzione IoT Edge e la priorità di 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 associa il nome del progetto e della versione con l'ID di 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 true per ignorare la convalida dell'immagine.

    Aggiungere attività di Azure IoT Edge per la fase dev

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

Annotazioni

Le distribuzioni a più livelli non sono ancora supportate nelle attività di Azure IoT Edge in Azure DevOps.

Tuttavia, è possibile utilizzare un'attività del CLI di Azure all'interno di Azure DevOps per creare la distribuzione come una distribuzione a più livelli. Per il valore di Script Inline, puoi usare il comando az iot edge deployment create.

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

Verificare la CI/CD di IoT Edge con le pipeline di build e 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 a sinistra selezionare Pipeline e aprire la pipeline di compilazione creata all'inizio di questo articolo.

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

    Attivare manualmente la pipeline di compilazione usando il pulsante Esegui pipeline

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

    Specificare le opzioni per l'esecuzione della pipeline e selezionare Esegui

  4. Selezionare Attività agente 1 per controllare lo stato di avanzamento dell'esecuzione. Puoi controllare i log dell'output dell'attività selezionando l'attività.

    Esaminare l'output del log del compito

  5. Se la pipeline di compilazione viene completata correttamente, viene attivato un rilascio nella fase dev. La versione dev rilasciata con successo crea la distribuzione di IoT Edge per i dispositivi IoT Edge di destinazione.

    Rilascio per la fase di sviluppo

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

    Note di rilascio

  7. Se la tua pipeline sta fallendo, inizia guardando 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 tale attività. Per istruzioni dettagliate sulla configurazione e l'uso dei log, vedere Esaminare i log per eseguire la diagnostica dei problemi della pipeline.

Passaggi successivi