Pipeline de una Alexa Skill con GitHub Actions

Pipeline DevOps usando GitHub Actions

Como vimos en el anterior post, hemos desarrollado un pipeline entero para una Skill de Alexa usando CircleCI. Ahora vamos a construir lo mismo, pero usando la nueva herramienta de integración continua proporcionada por GitHub, GitHub Actions para así comprender su funcionamiento y ver las diferencias respecto a la anterior plataforma de CI/CD usada.

DevOps en tu Alexa Skill

Creación de un pipeline DevOps usando CircleCI

“DevOps es la unión de personas, procesos y productos para permitir la entrega continua de valor a nuestros usuarios finales.” - Donovan Brown, Microsoft

Externalizar tu i18n en tu Skill de Alexa

Externacionalización de las traducciones de nuestra Skill

En informática, la internacionalización es el proceso de diseño de software para que se pueda adaptar a diferentes idiomas y regiones sin la necesidad de reingeniería o hacer cambios en el código. En el caso del software, significa traducir a varios idiomas, utilizar diferentes monedas o diferentes formatos de fecha entre otros.

Alexa Skill con DynamoDB local

Alexa Skill desarrollada en Node.js usando DynamoDB en tu propio ordenador

Mockear las dependencias, especialmente las externas, es una práctica común al escribir pruebas o cuando se está desarrollando localmente. La inyección de dependencia generalmente hace que sea fácil proporcionar una implementación mockeada para nuestras dependencias, e.g. la base de datos.

DevOps en tu Alexa Skill. Validation Tests.

Comprobar que nuestra Skill está lista para su certificación

Hay otro paso importante en el proceso de desarrollo de Alexa Skills. No está relacionado con el código o si la Skill y sus componentes se están ejecutando correctamente. Este paso es la validación de nuestra Skill de Alexa antes de enviarla a certificación. Significa que los metadatos de nuestra Skill (logos, descripción, ejemplos, etc.) están correctamente rellenados. Podemos comprobarlo en nuestro pipeline gracias a ASK CLI y al uso de la Alexa Skill Management API.

DevOps en tu Alexa Skill. End-to-end Tests.

Bespoken como herramienta clave end-to-end

Este tipo de prueba nos permite verificar si la interacción de los componentes del software en nuestra Alexa Skill, como, VUI, código lambda o la base de datos, funciona como se esperaba. En resumen, las pruebas end-to-end evalúan la capacidad de la aplicación para satisfacer todas las solicitudes que el usuario final puede realizar.

DevOps en tu Alexa Skill. Deploy.

Despliegue de una Skill con la ASK CLI

Cuando se verifica el código en los pasos anteriores, es hora de desplegar la Skill de Alexa para comenzar los siguientes pasos que ejecutarán diferentes tipos de pruebas. Hay algunas pruebas como pruebas de VUI, pruebas de integración, pruebas end-to-end y pruebas de validación que no podemos ejecutar en localhost con nuestro código. Es por eso que necesitamos desplegar neustra Alexa Skill en el stage de desarrollo.

DevOps en tu Alexa Skill. Tests Unitarios.

Test unitarios en una Alexa Skill

Una prueba unitaria es un método que llama a funciones o fragmentos de códigos de nuestro código fuente con varios inputs y luego valida si los outputs son los que desean esperar. Así, estas pruebas validan si el resultado es el esperado. El método o función a probar se conoce como System Under Test (SUT).

DevOps en tu Alexa Skill. Submit.

Submitear una Skill para certificar

Este es el último paso de nuestro pipeline. Anteriormente, hemos realizado muchas pruebas diferentes y, si todo está bien, es hora de enviar nuestra Skill de Alexa a certificación. Es decir, hemos concluido la parte de integración continua.

Alexa Skill con TypeScript

Alexa Skill desarrollada en TypeScript usando Visual Studio Code

Las Skills de Alexa se pueden desarrollar utilizando las funciones Lambda de AWS o un endpoint en una REST API. La función Lambda es la implementación de Amazon de funciones serverless disponibles en AWS. Amazon recomienda utilizar las funciones Lambda aunque no sean fáciles de debuggear y trackear. Si bien puedes loggear en CloudWatch, no puedes poner puntos de ruptura una vez desplegada la Lambda e ir directamente al código.

Alexa Skill con Python

Alexa Skill desarrollada en Python usando Visual Studio Code

Las Skills de Alexa se pueden desarrollar utilizando las funciones Lambda de AWS o un endpoint en una REST API. La función Lambda es la implementación de Amazon de funciones serverless disponibles en AWS. Amazon recomienda utilizar las funciones Lambda aunque no sean fáciles de debuggear y trackear. Si bien puedes loggear en CloudWatch, no puedes poner puntos de ruptura una vez desplegada la Lambda e ir directamente al código.

Alexa Skill con Node.js

Alexa Skill desarrollada en Node.js usando Visual Studio Code

Las Skills de Alexa se pueden desarrollar utilizando las funciones Lambda de AWS o un endpoint en una REST API. La función Lambda es la implementación de Amazon de funciones serverless disponibles en AWS. Amazon recomienda utilizar las funciones Lambda aunque no sean fáciles de debuggear y trackear. Si bien puedes loggear en CloudWatch, no puedes poner puntos de ruptura una vez desplegada la Lambda e ir directamente al código.

Alexa Skill con .NET Core

Alexa Skill desarrollada en .NET Core usando Visual Studio

Las Skills de Alexa se pueden desarrollar utilizando las Lambda functions de AWS o usando un servidor REST. Lambda function es la implementación de Amazon de funciones serverless disponibles en AWS. Amazon recomienda usar las Lambda functions a pesar de que no sean fáciles de debuggear. Si bien puedes loggear en CloudWatch, no puedes poner un breakpoint y revisor el código. Esto hace que debuggear una request que nos envía Alexa sea un completo desafío.

Pagination