Justificación uso gestor de tareas en Integración Continua
Una de las mejoras que se obtienen al emplear un gestor de tareas, es el aprovechamiento de las tareas diseñadas y simplificación que se produce en la realización de estas tareas, mediante el uso del gestor en el ámbito que corresponda, por lo que su empleao en un entorno de CI es más que evidente. El objetivo en este caso es el de realizar la comprobación de los tests desde los sistemas de integración continua, sin tener la necesidad de especificar los tests en cada CI que se configure, ya que sería una tarea poco limpia, ineficiente y más costosa.
Por ello se pide la correcta utilización del gestor de tareas en las distintas herramientas de CI que se han propuesto, por lo que se procede a ver como este ha sido utilizado en cada una de ellas.
Para poder utilizar en cualquier CI propuesto correctamente el gestor de tareas, este deberá instalarse en el entorno del CI, para ello se utilizará el fichero de requisitos requirements.txt
, el cual se puede observar aquí, y que realiza la instalación de las librerías necesarias para el proyecto, entre ellas invoke, el cual es el gestor de tareas del proyecto.
Invoke con Travis
Para utilizar invoke con Travis, son necesarios dos requisitos:
- Instalar invoke, para el cual se utiliza el fichero requirements.txt y se instala mediante pip3.
# Install dependencies (Invoke, Pytest and Assertpy)
install:
- pip3 install -r requirements.txt
- Utilizar la opción
test
de invoke para lanzar los tests.
# Launch tests using the task manager
script:
- invoke test
Invoke con CircleCI
Para utilizar invoke con CircleCI, son necesarios los requisitos previos:
- Instalar invoke, para el cual se utiliza el fichero requirements.txt y se instala mediante pip3.
docker:
# Project's Docker image in Docker Hub
- image: carlosma7/medauth:latest
Al hacer uso del contenedor del proyecto, utiliza un entorno ya preparado con las herramientas necesarias para realizar los tests, por lo que no es necesario instalar nada, ya posee dichas herramientas.
- Utilizar la opción
test
de invoke para lanzar los tests.
steps:
- checkout
# Launch tests using the task manager
- run: invoke test
Invoke con Shippable
Para utilizar invoke con Shippable, son necesarios nuevamente los mismos requisitos:
- Instalar invoke, para el cual se utiliza el fichero requirements.txt y se instala mediante pip3.
build:
ci:
# Install dependencies (Invoke, Pytest and Assertpy)
- pip3 install -r requirements.txt
- Utilizar la opción
test
de invoke para lanzar los tests.
# Launch tests using the task manager
- invoke test
Invoke con GitHub Actions
Para utilizar invoke con una GitHub Action, son necesarios nuevamente los mismos requisitos:
- Instalar invoke, para el cual se utiliza el fichero requirements.txt y se instala mediante pip3.
- Utilizar la opción
test
de invoke para lanzar los tests.
# Checks-out repository under $GITHUB_WORKSPACE, so workflow can access it
- uses: actions/checkout@v2
# Build the image in local space
- name: Build image
run: docker build -t medauth .
La GitHub Action diseñada, utiliza el contenedor propio del proyecto, el cual se actualiza cada vez que se incluyen nuevos tests, se modifica el propio contenedor o alguna configuración específica, por lo que los tests siempre se mantienen actualizados. Si se observa el Dockerfile del proyecto, se puede observar que se realiza la instalación de las dependencias y se lanzan los tests, por lo que se utiliza de forma interna y correcta invoke.