Flussi di lavoro di integrazione continua e recapito continuo per DevOps LUIS
Importante
LUIS verrà ritirato il 1 ottobre 2025 e a partire dal 1 aprile 2023 non è più possibile creare nuove risorse LUIS. È consigliabile eseguire la migrazione delle applicazioni LUIS a comprensione del linguaggio di conversazione per sfruttare appieno il supporto continuativo per i prodotti e le funzionalità multilingue.
I tecnici software che sviluppano un'app Luis (Language Understanding) possono applicare procedure DevOps per il controllo del codice sorgente, compilazioni automatizzate, test e gestione delle versioni. Questo articolo illustra i concetti per l'implementazione di compilazioni automatizzate per LUIS.
Creare flussi di lavoro di automazione per LUIS
Nel sistema di gestione del codice sorgente (SCM), configurare le pipeline di compilazione automatizzate da eseguire nei seguenti eventi:
- Flusso di lavoro di richiesta pull attivato quando viene generata una richiesta pull (PR). Questo flusso di lavoro convalida il contenuto della richiesta pull prima che gli aggiornamenti vengano uniti nel ramo principale.
- Flusso di lavoro CI/CD attivato quando gli aggiornamenti vengono inseriti nel ramo principale, ad esempio quando si uniscono le modifiche da una richiesta pull. Questo flusso di lavoro garantisce la qualità di tutti gli aggiornamenti del ramo principale.
Il flusso di lavoro CI/CD combina due processi di sviluppo complementari:
L'integrazione continua (CI) è la pratica di progettazione che consiste nell’eseguire frequentemente il commit del codice in un repository condiviso e una compilazione automatizzata su di esso. Abbinata a un approccio di test automatizzato, l'integrazione continua consente di verificare per ogni aggiornamento che l'origine LUDown sia ancora valida e possa essere importata in un'app LUIS, ma anche che superi un gruppo di test volti a verificare che l'app sottoposta a training possa riconoscere le finalità e le entità necessarie per la soluzione.
Il recapito continuo (CD) sviluppa ulteriormente il concetto di integrazione continua per distribuire automaticamente l'applicazione in un ambiente in cui è possibile eseguire test più approfonditi. CD consente di individuare in anticipo eventuali problemi imprevisti derivati da modifiche il più rapidamente possibile, nonché di individuare lacune nella copertura dei test.
L'obiettivo dell'integrazione continua e del recapito continuo è garantire che "principale sia sempre spedibile". Per un'app LUIS, ciò significa che è possibile, se necessario, prendere qualsiasi versione dall'app LUIS del ramo principale e spedirla nell'ambiente di produzione.
Strumenti per la creazione di flussi di lavoro di automazione per LUIS
Suggerimento
È possibile trovare una soluzione completa per l'implementazione di DevOps nel repository di modelli di LUIS DevOps.
Sono disponibili diverse tecnologie di automazione della compilazione per creare flussi di lavoro di automazione. Tutte richiedono che sia possibile creare script tramite un'interfaccia della riga di comando (CLI) o chiamate REST in modo che possano essere eseguite in un server di compilazione.
Usare i seguenti strumenti per la creazione di flussi di lavoro di automazione per LUIS:
Interfaccia della riga di comando LUIS di Bot Framework Tools per l'uso con app e versioni LUIS, per training, test e pubblicazione nel servizio LUIS.
L'interfaccia della riga di comando di Azure per eseguire query sulle sottoscrizioni di Azure, recuperare le chiavi di creazione e di stima di LUIS e creare un'entità servizio di Azure usata per l'autenticazione di automazione.
NLU.DevOps per testare un'app LUIS e analizzare i risultati dei test.
Flusso di lavoro delle richieste pull
Come accennato, questo flusso di lavoro va configurato perché sia eseguito quando uno sviluppatore genera una richiesta pull per proporre che modifiche siano unite da un ramo di funzionalità al ramo principale. Lo scopo è verificare la qualità delle modifiche apportate alla richiesta pull prima che vengano unite al ramo principale.
Questo flusso di lavoro deve:
- Creare un'app LUIS temporanea importando l'origine
.lu
nella richiesta pull. - Eseguire il training e pubblicare la versione dell'app LUIS.
- Eseguire tutti gli unit test su di essa.
- Se tutti i test vengono superati, far passare il flusso di lavoro; in caso contrario, non farlo passare.
- Pulire ed eliminare l'app temporanea.
Se supportato da SCM, configurare le regole di protezione dei rami in modo che questo flusso di lavoro debba essere completato correttamente prima che la richiesta pull possa essere completata.
Flusso di lavoro CI/CD del ramo principale
Configurare questo flusso di lavoro perché sia eseguito dopo che gli aggiornamenti nella richiesta pull sono stati uniti nel ramo principale. Lo scopo è mantenere alta la qualità del ramo principale testando gli aggiornamenti. Se gli aggiornamenti sono di qualità soddisfacente, questo flusso di lavoro distribuisce la nuova versione dell'app LUIS in un ambiente in cui è possibile eseguire test più approfonditi.
Questo flusso di lavoro deve:
Creare una nuova versione nell'app LUIS primaria (l'app gestita per il ramo principale) usando il codice sorgente aggiornato.
Eseguire il training e pubblicare la versione dell'app LUIS.
Nota
Come illustrato in Esecuzione di test in un flusso di lavoro di compilazione automatizzato, è necessario pubblicare la versione dell'app LUIS sottoposta a test in modo che strumenti come NLU. DevOps possano accedervi. LUIS supporta solo due slot di pubblicazione nominati, gestione temporanea e produzione per un'app LUIS, ma è anche possibile pubblicare direttamente una versione ed eseguire query in base alla versione. Usare la pubblicazione diretta delle versioni nei flussi di lavoro di automazione per evitare di usare gli slot di pubblicazione nominati.
Eseguire tutti gli unit test.
Facoltativamente, eseguire test batch per misurare la qualità e l'accuratezza della versione dell'app LUIS e confrontarla con alcune baseline.
Se i test sono stati completati correttamente:
- Contrassegnare l'origine nel repository.
- Eseguire il processo Recapito continuo (CD) per distribuire la versione dell'app LUIS negli ambienti per ulteriori test.
Recapito continuo (CD)
Il processo CD in un flusso di lavoro CI/CD viene eseguito sono in caso di esito positivo degli unit test di compilazione e automatizzati. Il processo consiste nel distribuire automaticamente l'applicazione LUIS in un ambiente in cui è possibile eseguire ulteriori test.
Non esiste una soluzione consigliata per la distribuzione dell'app LUIS ed è necessario implementare il processo adatto al progetto. Il repository di modelli LUIS DevOps implementa una semplice soluzione a questo problema che consiste nel pubblicare la nuova versione dell'app LUIS nello slot di pubblicazione di produzione. Questa operazione è adatta a una semplice configurazione. Tuttavia, se è necessario supportare contemporaneamente diversi ambienti di produzione, ad esempio sviluppo, gestione temporanea e test di accettazione utente, il limite di due slot di pubblicazione nominati per ogni app risulterà insufficiente.
Altre opzioni per la distribuzione di una versione dell'app includono:
- Lasciare la versione dell'app pubblicata nell'endpoint della versione diretta e implementare un processo per configurare gli ambienti di produzione downstream con l'endpoint della versione diretta in base alle esigenze.
- Gestire diverse app LUIS per ogni ambiente di produzione e scrivere passaggi di automazione per importare in
.lu
una nuova versione nell'app LUIS per l'ambiente di produzione di destinazione per eseguirne il training e pubblicarla. - Esportare la versione testata dell'app LUIS in un contenitore Docker LUIS e distribuire il contenitore LUIS nelle Istanze contenitore di Azure.
Gestione del rilascio
In genere, è consigliabile eseguire il recapito continuo solo agli ambienti non di produzione, ad esempio lo sviluppo e lo staging. La maggior parte dei team richiede un processo di revisione e approvazione manuale per la distribuzione in un ambiente di produzione. Per una distribuzione di produzione, è consigliabile assicurarsi che essa si verifichi quando le figure chiave del team di sviluppo sono disponibili per fornire supporto o durante periodi di traffico ridotto.
Applicare DevOps per lo sviluppo di app LUIS usando GitHub Actions
Passare al repository di modelli di LUIS DevOps per una soluzione completa che implementa devOps e per procedure consigliate di progettazione software per LUIS. È possibile usare questo repository di modelli per creare un repository personalizzato con supporto integrato per flussi di lavoro e procedure CI/CD che consentono il controllo del codice sorgente, compilazioni automatizzate, test e gestione delle versioni con LUIS per il proprio progetto.
Il repository di modelli di LUIS DevOps illustra come:
- Clonare il repository di modelli: copiare il modello nel proprio repository GitHub.
- Configurare risorse LUIS: creare le risorse di creazione e stima LUIS in Azure che verranno usate dai flussi di lavoro di integrazione continua.
- Configurare i flussi di lavoro CI/CD: configurare i parametri per i flussi di lavoro CI/CD e archiviarli in Segreti GitHub.
- Illustra il ciclo interno di sviluppo: lo sviluppatore apporta aggiornamenti a un'app LUIS campione mentre lavora in un ramo di sviluppo, testa gli aggiornamenti e quindi genera una richiesta pull per proporre modifiche e per chiedere l'approvazione della revisione.
- Eseguire flussi di lavoro CI/CD: eseguire flussi di lavoro di integrazione continua per compilare e testare un'app LUIS usando GitHub Actions.
- Eseguire test automatizzati: eseguire test batch automatizzati per un'app LUIS per valutare la qualità dell'app.
- Distribuire l'app LUIS: eseguire un processo di recapito continuo (CD) per pubblicare l'app LUIS.
- Usare il repository con il proprio progetto: spiega come usare il repository con la propria applicazione LUIS.
Passaggi successivi
Informazioni su come scrivere un flusso di lavoro di GitHub Actions con NLU. DevOps
Usare il repository di modelli LUIS DevOps per applicare DevOps con il proprio progetto.
Strategie di controllo del codice sorgente e gestione rami per LUIS