Comandos típicos
En esta guía describimos los comandos que más se utilizan en nuestro día a día.
Excepto que digamos lo contrario todos los comandos se ejecutan sobre el root del proyecto donde nos lo hemos descargado, nunca desde una subcarpeta.
Makefile
Durante el desarrollo siempre existe la necesidad de ir ejecutando en orden ciertos comandos. Para no tener que acordarnos los agrupamos en un fichero (Makefile) clasificados y ordenados para ejecutarlos.
De esta forma podemos ejecutar:
make [comando]
Puedes consultar el fichero para saber los comandos que existen y que puedes ejecutar, pero a continuación te vamos a describir algunos de los más importantes.
build
make build
Al bajarnos un proyecto desde cero lo primero que hacemos es build para construir todo el entorno de desarrollo y prepararlo adecuadamente.
También nos sirve si ya lo teníamos de antes y queremos resetearlo a su estado pristino.
Si llevamos mucho tiempo sin interactuar con un proyecto recomendamos ejecutarlo ante la duda.
Es bastante normal que después de este comando ejecutemos también make data, que está descrito más adelante.
serve
make serve
Enciende todas las aplicaciones y frontales a la vez para acceder a ellos con una reproducción de lo que ocurre en producción.
Hay que anotar que esto enciende SQL Server y otras tantas aplicaciones que en total requieren de bastantes recursos. Más adelante en esta guía tenemos como ir abriendo selectivamente lo que nos interese para trabajar en ese momento.
test
make test
Ejecuta todos los unit tests de todas las aplicaciones tal y como hace la integración continua al subir un nuevo commit.
data
make data
Resetea todos los datos locales de pruebas que tenemos a un estado inicial pristino para poder trabajar con ellos.
Este comando apaga la base de datos local, la elimina, la vuelve a crear y la rellena con los datos de prueba ejecutando las aplicaciones de C# que los contienen.
protos
make protos
Cada vez que modifiquemos un fichero *.proto el código C# se autogenera solo, pero no ocurre lo mismo con Javascript. Este comando reconstruye todos los ficheros autogenerados a partir de las definiciones Protobuf.
Prácticamente hay que ejecutarlo cada vez que realizemos cambios a un fichero *.proto, antes de subir el commit a revisión.
Docker Compose
Para ejecutar y mantener los contenedores en local usamos esta herramienta que nos ayuda a encenderlos y coordinarlos.
Alias
Si no estás trabajando con Altipla te faltara un alias para los siguientes comandos que debes añadir a tu ~/.bashrc. La definición es así:
alias dc='docker-compose'
En el fichero docker-compose.yml tienes todas las definiciones de contenedores que se pueden encender o manejar. Básicamente:
database: SQL Server.search: Elastic Search.users,webinterna, ...: Corresponden a las apps de backend deAZPool.Users,AZPool.WebInterna, ...admin-shell,admin-webinterna, ...: Las apps de frontend con los paneles de React.
Encender apps individuales
Si quieres encender apps individuales para probar:
dc up users webinterna
Apagar todas las apps
Tenemos muchas aplicaciones ejecutándose en local, y algunas de ellas como SQL Server son especialmente grandes y consumen muchos recursos del sistema. Por ejemplo nada más abrirse tenemos ya casi ocupados 1GB de RAM con la base de datos. Por esto recomendamos que al cambiarse a otro proyecto diferente o cuando ya no lo necesitemos cerrar los contenedores que no necesitamos.
Para cerrar todas las apps abiertas:
dc stop
Ejecutar los tests
Para ejecutar los tests en local necesitarás la base de datos encendida en background por lo que recomendamos este comando:
dc up -d database searchEntra en la carpeta que quieres testear:
cd AZPool.Notifications.TestsPuedes proceder con alguno de los comandos para probar en tu máquina los tests de la aplicación concreta que quieres ejecutar:
dotnet test
dotnet watch testTienes más información en el documento para Testear cambios