Integrazione continua e distribuzione continua nei dispositivi Azure IoT Edge (editor classico)
Si applica a: IoT Edge 1.4
Importante
IoT Edge 1.4 è la versione supportata. Se si usa una versione precedente, vedere Aggiornare IoT Edge.
Azure Pipelines include un'attività di azure IoT Edge predefinita 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 nei IoT Edge di Azure usando l'editor classico. In alternativa, è possibile usare YAML.
Questo articolo illustra come usare le attività predefinite di Azure IoT Edge per Azure Pipelines per creare pipeline di compilazione e versione per la soluzione IoT Edge. Ogni attività di Azure IoT Edge aggiunta alla pipeline implementa una delle quattro azioni seguenti:
Azione | Descrizione |
---|---|
Creare immagini del modulo | Accetta il codice della soluzione IoT Edge e compila le immagini del contenitore. |
Eseguire il 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 IoT Edge finale. |
Distribuire nei dispositivi IoT Edge | Crea IoT Edge distribuzioni 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:
- Versione dell'attività
- Avanzate : se applicabile, specificare i moduli che non si desidera compilare.
- Opzioni di controllo
- Variabili di ambiente
- Variabili di output
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 di Azure IoT Edge usando 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 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
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 e la pubblicazione dei log di compilazione ogni volta che si verificano le modifiche apportate alla soluzione IoT Edge.
Accedere all'organizzazione di Azure DevOps (
https://dev.azure.com/{your organization}
) e aprire il progetto che contiene il repository della soluzione IoT Edge.Nel menu del riquadro a sinistra 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.
Nella parte inferiore della pagina Dove si trova il codice selezionare Usa l'editor classico. Per usare YAML per creare le pipeline di compilazione del progetto, vedere la guida YAML.
Seguire le istruzioni visualizzate per creare la pipeline.
Specificare le informazioni sull'origine per la nuova pipeline di compilazione. Selezionare l'origine GIT Azure Repos, quindi selezionare progetto, repository e ramo in cui si trova il codice della soluzione IoT Edge. Selezionare quindi Continua.
Selezionare l'opzione per iniziare con una fase vuota anziché un modello.
Dopo la creazione della pipeline, viene visualizzato l'editor pipeline. Qui è possibile modificare il nome, il pool di agenti e la specifica dell'agente della pipeline.
È 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:
Per compilare i moduli nella piattaforma amd64 per i contenitori Linux, scegliere ubuntu-18.04
Se si desidera compilare i moduli nella piattaforma amd64 per i contenitori Windows 1809, è necessario configurare un agente auto-ospitato in Windows.
Se si vogliono compilare i moduli nella piattaforma arm32v7 o arm64 per contenitori Linux, è necessario configurare l'agente self-hosted in Linux.
La pipeline è preconfigurata con un processo denominato Processo 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 .
Quando vengono aggiunte tutte e quattro le attività, il processo di Agent è simile all'esempio seguente:
Selezionare la prima attività Azure IoT Edge per modificarla. Questa attività compila tutti i moduli nella soluzione con la piattaforma di destinazione specificata. Modificare l'attività con i valori seguenti:
Parametro Descrizione Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando viene modificato il campo Azione. 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 output 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à di Azure IoT Edge.
Queste configurazioni usano il repository di immagini e il
module.json
tag definiti nel file per assegnare un nome e contrassegnare l'immagine del modulo. Le immagini del modulo di compilazione consentono anche di sostituire le variabili con il valore esatto definito nelmodule.json
file. In Visual Studio o Visual Studio Code specificare il valore effettivo in un.env
file. In Azure Pipelines viene impostato il valore nella scheda Variabili della pipeline . Selezionare la scheda Variabili nel menu editor della pipeline e configurare il nome e il valore come segue:- ACR_ADDRESS: valore del server di accesso Registro Azure Container. È possibile trovare il valore del server di accesso nella pagina panoramica del Registro contenitori nella portale di Azure.
Se nel progetto sono presenti altre variabili, è possibile specificare il nome e il valore in questa scheda. Compilare immagini del modulo riconosce solo le variabili in
${VARIABLE}
formato. Assicurarsi di usare questo formato nei**/module.json
file.Selezionare la seconda attività Azure IoT Edge per modificarla. Questa attività esegue il push di tutte le immagini dei moduli nel registro contenitori selezionato.
Parametro Descrizione Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando il campo Azione cambia. Azione Selezionare Push module images (Immagini del modulo Push). Tipo di Registro contenitori Usare il tipo predefinito: Azure Container Registry
.La sottoscrizione di Azure Scegliere la propria sottoscrizione. Registro Azure Container selezionare il tipo di registro contenitori che si usa per archiviare le immagini dei moduli. A seconda del tipo di registro scelto, il modulo cambia. Se si sceglie Registro Azure Container, usare gli elenchi a discesa per selezionare la sottoscrizione di Azure e il nome del registro contenitori. Se si sceglie Generic Container Registry (Registro contenitori generico), selezionare Nuovo per creare una connessione al servizio di registro. 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 di 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 eseguire il push di immagini docker nel manifesto della distribuzione. Per altre informazioni su questa attività e sui relativi parametri, vedere Attività di 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 Ignora nelle impostazioni avanzate per ignorare le immagini che non sono per questo registro specifico.
Selezionare l'attività Copia file per modificarla. Usare questa attività per copiare i file nella directory di gestione temporanea degli artefatti.
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 di distribuzione IoT Edge.Cartella di destinazione Specificare la variabile $(Build.ArtifactStagingDirectory)
. Per informazioni sulla descrizione, vedere Compilare le variabili .Per altre informazioni su questa attività e sui relativi parametri, vedere Copiare file attività.
Selezionare l'attività Pubblica artefatti di compilazione per modificarla. Fornire il percorso della directory di staging degli artefatti all'attività in modo che il percorso possa essere pubblicato nella pipeline di rilascio.
Parametro Descrizione Nome visualizzato Usare il nome predefinito o personalizzare. Percorso di pubblicazione Specificare la variabile $(Build.ArtifactStagingDirectory)
. Per altre informazioni, vedere Compilare variabili .Nome dell'artefatto Usare il nome predefinito: drop Percorso di pubblicazione degli artefatti Usare la posizione predefinita: Azure Pipelines Per altre informazioni su questa attività e sui relativi parametri, vedere Pubblicare l'attività Degli artefatti di compilazione.
Aprire la scheda Trigger e selezionare la casella Abilita l'integrazione continua. Verificare che il ramo contenente il codice sia incluso.
- Selezionare Salva nell'elenco a discesa Salva & coda .
Questa pipeline è ora configurata per l'esecuzione automatica quando si esegue il push di nuovo codice al repository. L'ultima attività, quella di pubblicazione di artefatti della pipeline, attiva una pipeline di versione. 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:
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.
Quando viene richiesto di selezionare un modello, scegliere di iniziare con una fase vuota.
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, staging e prod. È possibile usare nomi diversi e creare più in base alla pratica DevOps. Dopo aver modificato il nome, chiudere la finestra dei dettagli della fase.
È anche possibile rinominare la pipeline di rilascio selezionando il testo "Nuova pipeline di rilascio" nella parte superiore.
Collegare la versione agli artefatti di compilazione pubblicati dalla pipeline di compilazione. Fare clic su Aggiungi nell'area degli elementi.
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 in un elemento più descrittivo. Selezionare quindi Aggiungi.
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.
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 agente e modificare il nome visualizzato in QA. È possibile configurare i dettagli sul processo dell'agente, ma l'attività di distribuzione è insensibile per poter usare qualsiasi specifica dell'agente nel pool di agenti scelto.
Nel processo qa selezionare il segno più (+) per aggiungere due attività. Cercare e aggiungere IoT Edge di Azure due volte.
Selezionare la prima attività di Azure IoT Edge e configurarla con i valori seguenti:
Parametro Descrizione Nome visualizzato Il nome visualizzato viene aggiornato automaticamente quando viene modificato il campo Azione. Azione Selezionare 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 IoT Edge finale.Queste configurazioni consentono di sostituire gli URL dell'immagine del
deployment.template.json
modulo nel file. Il manifesto della distribuzione Genera consente anche di sostituire le variabili con il valore esatto definito neldeployment.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 segue:- 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_USER: 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 che sono 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}" } }
Selezionare la seconda attività di Azure IoT Edge e configurarla con i valori seguenti:
Parametro Descrizione Nome visualizzato 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 IoT Edge file manifesto della distribuzione.La sottoscrizione di Azure Selezionare la sottoscrizione che contiene l'hub IoT. Nome dell'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 i 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 di distribuzione IoT Edge.Se l'attività prevede l'uso di un'immagine che risiede in un registro attendibile Docker privato che non è visibile al cloud pubblico, è possibile impostare la variabile di ambiente SKIP_MODULE_IMAGE_VALIDATION per
true
ignorare la convalida delle immagini.Selezionare Salva per salvare le modifiche nella nuova pipeline di versione. Tornare alla visualizzazione pipeline selezionando la scheda Pipeline dal menu.
Nota
Le distribuzioni a più livelli non sono ancora supportate nelle attività di Azure IoT Edge in Azure DevOps.
È tuttavia possibile usare un'attività dell'interfaccia della riga di comando di Azure in Azure DevOps per creare la distribuzione come distribuzione a più livelli. Per il valore script inline , è possibile 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 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.
Nel menu del riquadro a sinistra selezionare Pipeline e aprire la pipeline di compilazione creata all'inizio di questo articolo.
È possibile attivare un processo di compilazione nella pipeline di compilazione selezionando il pulsante Esegui pipeline in alto a destra.
Esaminare le impostazioni della pipeline di esecuzione . Selezionare quindi Esegui.
Selezionare Processo agente 1 per watch lo stato di avanzamento dell'esecuzione. È possibile esaminare i log dell'output del processo selezionando il processo.
Se la pipeline di compilazione viene completata correttamente, attiva una versione per la fase di sviluppo . La versione di sviluppo riuscita crea IoT Edge distribuzione per i dispositivi IoT Edge di destinazione.
Fare clic su Fase di sviluppo per visualizzare i log di versione.
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
- Per altre informazioni sulla distribuzione IoT Edge, vedere Understand IoT Edge deployments for single devices or at scale (Informazioni sulle distribuzioni IoT Edge per singoli dispositivi o su vasta scala)
- Eseguire le procedure per creare, aggiornare o eliminare una distribuzione in Distribuire e monitorare i moduli di IoT Edge su larga scala.