Uso con bases de datos

De Wiki de EGC
Revisión del 03:40 9 dic 2017 de Resinas (discusión | contribuciones) (Página creada con «Es frecuente que una aplicación requiera de bases de datos u otros servicios externos para poder probarse. Travis CI tiene soporte de serie para las bases de datos más ha...»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Es frecuente que una aplicación requiera de bases de datos u otros servicios externos para poder probarse. Travis CI tiene soporte de serie para las bases de datos más habituales como MySQL, PostgreSQL, MongoDB o ElasticSearch. La lista completa se puede encontrar en https://docs.travis-ci.com/user/database-setup/ así como la forma de configurar cada una de ellas que, de nuevo, se realiza a través de .travis.yml. Por ejemplo, para configurar mysql hay que añadir a .travis.yml lo siguiente:

...
services:
  - mysql

before_install:
  - mysql -e 'CREATE DATABASE IF NOT EXISTS hello_test;'

La primera instrucción le dice a Travis CI que instale mysql pues lo vamos a utilizar y la segunda instrucción le indica que cree la base de datos justo antes de la fase de instalación. Travis ya crea dos usuarios por defecto: travis y root, ambos con password vacío. El resto de bases de datos se configuran de una forma bastante similar.

No obstante, la configuración de la base de datos es sólo la mitad del recorrido. Una vez configurada, es necesario indicar a nuestra aplicación cuál es la base de datos que vamos a utilizar. Una de las formas más habituales de hacer esto hoy en día es por medio de variables de entorno. Además de para indicar la base de datos a utilizar, las variables de entorno también se suelen usar con frecuencia para almacenar las credenciales de acceso a servicios externos como Amazon S3 o Facebook. Lógicamente para poder hacer esto, nuestra aplicación tiene que estar preparado para leer las variables de configuración del entorno. Además, es necesario configurar esas variables de entorno en Travis CI. Eso se puede hacer de dos formas (ver más detalles en https://docs.travis-ci.com/user/environment-variables/):

  • A través de la configuración del repositorio en la web de Travis CI
  • A través del fichero .travis.yml

Si elegimos esta segunda opción, las variables de entorno se definen añadiendo a .travis.yml lo siguiente:

...
env: 
  - DATABASE=jdbc:mysql://localhost:3306/hello_test DB_USERNAME=travis DB_PASSWORD=""

Esta configuración define cuatro variables de entorno: DATABASE, DB_USERNAME y DB_PASSWORD, que son las necesarias para definir la configuración de bases de datos en una aplicación Java que utilice Spring Data. En este caso, está configurando el acceso a una base de datos MySQL llamada hello_test que está en localhost y a la que accede por medio del usuario travis con contraseña vacía.

Ejercicio

  1. Cámbiate a la rama add-databases del repositorio hello-java. En esta rama, se modifica el código para que el saludo, en lugar de estar definido a mano en un fichero de código, esté almacenado en una base de datos. Para eso, se usa Spring JPA y las variables de entorno que se necesitan son:
    • SPRING_DATASOURCE_DRIVERCLASSNAME, que debe tomar el valor com.mysql.jdbc.Driver para una base de datos MySQL
    • SPRING_DATASOURCE_URL, que debe tomar el valor jdbc:mysql://localhost:3306/nombredelabasededatos
    • SPRING_DATASOURCE_USERNAME, que es el nombre del usuario de acceso a la base de datos
    • SPRING_DATASOURCE_PASSWORD, que es la contraseña de ese usuario
  2. Añade un fichero .travis.yml que construya la aplicación utilizando para las pruebas una base de datos MySQL.