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 sarà possibile creare nuove risorse LUIS. È consigliabile eseguire la migrazione delle applicazioni LUIS alla comprensione del linguaggio conversazionale per trarre vantaggio dal supporto continuo del prodotto e dalle 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 descrive i concetti per l'implementazione di compilazioni automatizzate per LUIS.

Creare flussi di lavoro di automazione per LUIS

CI workflows

Nel sistema di gestione del codice sorgente configurare le pipeline di compilazione automatizzate da eseguire negli eventi seguenti:

  1. Flusso di lavoro pull attivato quando viene generata una richiesta pull. Questo flusso di lavoro convalida il contenuto della richiesta pull prima che gli aggiornamenti vengano uniti nel ramo principale.
  2. 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 del commit frequente del codice in un repository condiviso e l'esecuzione di una compilazione automatizzata su di essa. Abbinato a un approccio di test automatizzato, l'integrazione continua consente di verificare che per ogni aggiornamento l'origine LUDown sia ancora valida e possa essere importata in un'app LUIS, ma anche che superi un gruppo di test che verificano che l'app sottoposta a training possa riconoscere le finalità e le entità necessarie per la soluzione.

  • Il recapito continuo (CD) implementa ulteriormente il concetto di integrazione continua per distribuire automaticamente l'applicazione in un ambiente in cui è possibile eseguire test più approfonditi. CD consente di apprendere in anticipo eventuali problemi imprevisti che derivano dalle modifiche il più rapidamente possibile, nonché per conoscere le 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 tecnologie di automazione di compilazione diverse per creare flussi di lavoro di automazione. Tutti richiedono che sia possibile creare script tramite un'interfaccia della riga di comando o chiamate REST in modo che possano essere eseguite in un server di compilazione.

Usare gli strumenti seguenti per la creazione di flussi di lavoro di automazione per LUIS:

Flusso di lavoro delle richieste pull

Come accennato, si configura questo flusso di lavoro per l'esecuzione quando uno sviluppatore genera una richiesta pull per proporre modifiche 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 esso.
  • Passare il flusso di lavoro se tutti i test vengono superati; in caso contrario, non superarlo.
  • Pulire ed eliminare l'app temporanea.

Se supportato da SCM, configurare le regole di protezione dei rami in modo che questo flusso di lavoro venga completato correttamente prima del completamento della richiesta pull.

Flusso di lavoro CI/CD del ramo principale

Configurare questo flusso di lavoro per l'esecuzione dopo che gli aggiornamenti nella richiesta pull sono stati uniti nel ramo principale. Il suo scopo è mantenere alta la barra di qualità per il ramo principale testando gli aggiornamenti. Se gli aggiornamenti soddisfano la barra di qualità, 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 può accedervi. LUIS supporta solo due slot di pubblicazione denominati, gestione temporanea e produzione per un'app LUIS, ma è anche possibile pubblicare una versione direttamente 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 denominati.

  • 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 in modo condizionale 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 più test.

Non esiste una soluzione consigliata per distribuire l'app LUIS ed è necessario implementare il processo appropriato per il progetto. Il repository del modello LUIS DevOps implementa una soluzione semplice per questo 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 UAT, il limite di due slot di pubblicazione denominati 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 app LUIS diverse 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, eseguire il training e pubblicarlo.
  • Esportare la versione testata dell'app LUIS in un contenitore Docker LUIS e distribuire il contenitore LUIS nelle istanze di Azure Container.

Gestione del rilascio

In genere è consigliabile eseguire il recapito continuo solo agli ambienti non di produzione, ad esempio per lo sviluppo e la gestione temporanea. 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 si verifichi quando le persone chiave del team di sviluppo sono disponibili per il 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 procedure consigliate di progettazione software per LUIS. È possibile usare questo repository di modelli per creare un repository personalizzato con il supporto predefinito 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 del modello: copiare il modello nel proprio repository GitHub.
  • Configurare le 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 dello sviluppo: lo sviluppatore apporta aggiornamenti a un'app LUIS di esempio mentre lavora in un ramo di sviluppo, testa gli aggiornamenti e quindi genera una richiesta pull per proporre modifiche e per cercare 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