Fluxos de trabalho de integração contínua e entrega contínua para DevOps do LUIS
Importante
O LUIS será desativado em 1º de outubro de 2025 e, a partir de 1º de abril de 2023, você não poderá criar novos recursos do LUIS. É recomendável migrar seus aplicativos LUIS para a compreensão da linguagem coloquial a fim de usufruir do suporte contínuo ao produto e dos recursos multilíngues.
Os engenheiros de software que estão desenvolvendo um aplicativo de Reconhecimento Vocal (LUIS) podem aplicar práticas DevOps sobre controle do código-fonte, compilações automatizadas, testes e gerenciamento de versão. Este artigo descreve os conceitos para implementar compilações automatizadas para o LUIS.
Compilar fluxos de trabalho de automação para LUIS
No seu sistema SCM (gerenciamento de código-fonte), configure pipelines de build automatizados para execução nos seguintes eventos:
- Fluxo de trabalho de PR disparado quando uma PR (solicitação pull) é gerada. Este fluxo de trabalho valida o conteúdo da PR antes que as atualizações sejam mescladas na ramificação principal.
- Fluxo de trabalho de CI/CD disparado quando as atualizações são enviadas para a ramificação principal, por exemplo, ao mesclar as alterações de uma PR. Esse fluxo de trabalho garante a qualidade de todas as atualizações para a ramificação principal.
O fluxo de trabalho de CI/CD combina dois processos de desenvolvimento complementares:
A CI (Integração Contínua) é a prática de engenharia do código de confirmação frequente em um repositório compartilhado e a execução de uma compilação automatizada. Emparelhada com uma abordagem de teste automatizada, a integração contínua nos permite verificar se, para cada atualização, a origem do LUDown ainda é válida e pode ser importada para um aplicativo LUIS, mas também se foi aprovada em um grupo de testes que verificam se o aplicativo treinado pode reconhecer as intenções e as entidades necessárias para sua solução.
A CD (Entrega Contínua) desenvolve o conceito de Integração Contínua para implantar automaticamente o aplicativo em um ambiente no qual você pode executar testes mais detalhados. A CD nos permite aprender antecipadamente sobre quaisquer problemas imprevistos que surjam de nossas alterações o mais rápido possível, e também para verificar discrepâncias em nossa cobertura de teste.
O objetivo da integração contínua e entrega contínua é garantir que o "principal seja sempre enviável". Para um aplicativo LUIS, isso significa que poderíamos, se necessário, pegar qualquer versão do aplicativo LUIS da ramificação principal e a enviar para produção.
Ferramentas para compilar fluxos de trabalho de automação do LUIS
Dica
Você pode encontrar uma solução completa para implementar DevOps no repositório de modelos de DevOps do LUIS.
Há diferentes tecnologias de automação de compilação disponíveis para criar fluxos de trabalho de automação de compilação. Todas exigem que você possa executar script de etapas usando uma CLI (interface de linha de comando) ou chamadas REST para que possam ser executadas em um servidor de compilação.
Use as seguintes ferramentas para compilar fluxos de trabalho de automação do LUIS:
CLI do LUIS das Ferramentas do Bot Framework para trabalhar com aplicativos e versões do LUIS, treinar, testar e publicá-las no serviço LUIS.
CLI do Azure para consultar assinaturas do Azure, obter chaves de criação e previsão do LUIS e criar uma entidade de serviço do Azure usada para autenticação de automação.
Ferramenta NLU.DevOps para testar um aplicativo LUIS e analisar os resultados do teste.
O fluxo de trabalho de PR
Conforme mencionado, você configura esse fluxo de trabalho para ser executado quando um desenvolvedor gera uma PR para propor alterações a serem mescladas de uma ramificação de recursos para a ramificação principal. Sua finalidade é verificar a qualidade das alterações na PR antes que elas sejam mescladas à ramificação principal.
Esse fluxo de trabalho deve:
- Crie um aplicativo LUIS temporário importando a origem
.lu
na PR. - Treine e publique a versão do aplicativo LUIS.
- Execute todos os testes de unidade nele.
- Aprove o fluxo de trabalho caso todos os testes sejam aprovados. Caso contrário, reprove o mesmo.
- Limpe e exclua o aplicativo temporário.
Se o SCM tiver suporte, configure as regras de proteção de ramificação para que esse fluxo de trabalho seja concluído com êxito antes que a PR possa ser concluída.
O fluxo de trabalho de CI/CD da ramificação principal
Configure esse fluxo de trabalho para ser executado depois que as atualizações na PR foram mescladas na ramificação principal. Sua finalidade é manter o nível de qualidade alto da sua ramificação principal testando as atualizações. Se as atualizações atenderem ao nível de qualidade, esse fluxo de trabalho implantará a nova versão do aplicativo LUIS em um ambiente no qual você possa realizar testes mais detalhados.
Esse fluxo de trabalho deve:
Compilar uma nova versão em seu aplicativo LUIS primário (o aplicativo que você mantém na ramificação principal) usando o código-fonte atualizado.
Treine e publique a versão do aplicativo LUIS.
Observação
Conforme explicado em Executando testes em um fluxo de trabalho de compilação automatizado, você deve publicar a versão do aplicativo LUIS em teste para que as ferramentas, como NLU.DevOps, possam acessá-lo. O LUIS só dá suporte a dois slots de publicação nomeados, preparo e produção em um aplicativo LUIS, mas você também pode publicar uma versão diretamente e fazer uma consulta por versão. Use a publicação de versão direta em seus fluxos de trabalho de automação para evitar se limitar a usar os slots de publicação nomeados.
Execute todos os testes de unidade.
Opcionalmente, execute testes em lotes para medir a qualidade e a precisão da versão do aplicativo LUIS, e compare com alguma linha de base.
Se os testes forem concluídos com êxito:
- Marque a origem no repositório.
- Execute o trabalho de CD (Entrega Contínua) para implantar a versão do aplicativo LUIS em ambientes para testes adicionais.
CD (Entrega contínua)
O trabalho de CD em um fluxo de trabalho de CI/CD é executado condicionalmente no sucesso da compilação e dos testes de unidade automatizados. Seu trabalho é implantar automaticamente o aplicativo LUIS em um ambiente onde você possa executar mais testes.
Não há uma solução única recomendada para a melhor implantação do aplicativo LUIS. Você deve implementar o processo apropriado para o seu projeto. O repositório de modelos DevOps do LUIS implementa uma solução simples para isso, que é publicar a nova versão do aplicativo LUIS no slot de publicação de produção. Isso é aceitável para uma configuração simples. No entanto, se você precisar dar suporte a vários ambientes de produção diferentes ao mesmo tempo, como desenvolvimento, preparação e UAT, o limite de dois slots de publicação nomeados por aplicativo será insuficiente.
Outras opções para implantar uma versão do aplicativo incluem:
- Deixe a versão do aplicativo publicada no ponto de extremidade de versão direta e implemente um processo para configurar ambientes de produção downstream com o ponto de extremidade de versão direta, conforme necessário.
- Mantenha diferentes aplicativos LUIS para cada ambiente de produção e grave as etapas de automação para importar
.lu
para uma nova versão no aplicativo LUIS para o ambiente de produção de destino, para treiná-lo e publicá-lo. - Exporte a versão do aplicativo LUIS testada para um contêiner do docker do LUIS e implante o contêiner do LUIS nas Instâncias de contêiner do Azure.
Gerenciamento de liberações
Em geral, é recomendável que você faça entrega contínua somente para seus ambientes de não produção, como para desenvolvimento e preparo. A maioria das equipes exige um processo manual de revisão e aprovação para a implantação em um ambiente de produção. Para uma implantação de produção, você pode querer garantir que ela ocorra quando as pessoas-chave da equipe de desenvolvimento estiverem disponíveis para suporte ou durante períodos de baixo tráfego.
Aplicar DevOps ao desenvolvimento de aplicativo do LUIS usando GitHub Actions
Acesse o repositório de modelos de DevOps com LUIS para obter uma solução completa que implementa o DevOps e as práticas recomendadas de engenharia de software para LUIS. Você pode usar esse repositório de modelos para criar um com suporte interno para fluxos de trabalho e práticas de CI/CD que habilitam o controle do código-fonte, as compilações automatizadas, os testes e o gerenciamento de versões com o LUIS para o seu projeto.
O repositório de modelos de DevOps com LUIS aborda como:
- Clonar o repositório de modelos – copie o modelo para o seu repositório do GitHub.
- Configurar recursos de LUIS – crie os recursos de criação e previsão do LUIS no Azure que serão usados pelos fluxos de trabalho de integração contínua.
- Configurar os fluxos de trabalho de CI/CD – configure parâmetros para os fluxos de trabalho de CI/CD e armazene-os em segredos do GitHub.
- Percorrer o "loop interno de desenvolvimento" – o desenvolvedor faz atualizações em um aplicativo LUIS de exemplo enquanto trabalha em uma ramificação de desenvolvimento, testa as atualizações e gera uma solicitação de pull para propor alterações e para buscar aprovação de revisão.
- Executar fluxos de trabalho de CI/CD – execute fluxos de trabalho de integração contínua para compilar e testar um aplicativo LUIS usando o GitHub Actions.
- Executar testes automatizados – execute testes de lote automatizado para um aplicativo LUIS para avaliar a qualidade do aplicativo.
- Implantar o aplicativo LUIS – execute um trabalho de entrega contínua (CD) para publicar o aplicativo LUIS.
- Usar o repositório com o seu projeto – como usar o repositório com o seu aplicativo LUIS.
Próximas etapas
Saiba como escrever um fluxo de trabalho do GitHub Actions com o NLU.DevOps
Usar o repositório de modelos de DevOps com LUIS para aplicar o DevOps com o seu projeto.