Cómo administrar bases de datos en continuous integration con Jenkins

Soy bastante nuevo en DevOps. Al tratar de organizar mi proyecto para la continuous integration (CI), estoy enfrentando un problema para el que aún no he podido encontrar una solución. Me gustaría saber cuál es la mejor forma de administrar mi (s) file (s) de database en la configuration que tengo para que los desarrolladores puedan acceder a la última versión de DB así como a Jenkins.

Se han tocado preguntas similares en varios hilos, como los que se encuentran a continuación. Pero ninguno respondió la pregunta específica a mi situación.

  • CI de database con Jenkins: un tutorial paso a paso
  • ¿Cómo puedo poner una database bajo git (control de versión)?
  • Usando el control de versiones (Git) en una database MySQL
  • ¿Hacer una copy de security de una database MySQL en Git es una buena idea?

Preparar

Así es como se ve mi configuration:

  • Idioma: Python 3.5 (con unittest, etc.)
  • Base de datos: MySQL – las actualizaciones de datos una vez al día (no el esquema)
  • Control de versiones: Git
  • Alojamiento de código: Bitbucket
  • SO de desarrollo: Windows 10
  • Máquina CI: Amazon AWS EC2 con Linux (Ubuntu 16.04.1)
  • Herramienta CI: Jenkins

Configuré el CI de tal manera que cada vez que actualizo Origin / Master, Jenkins ejecuta las testings en la máquina AWS.

EDITAR Para aclarar cuál es mi database, supongamos que es algún tipo de cifras de ventas diarias o actualización diaria del mercado. Tengo un código para actualizar el db una vez al día y otro progtwig para realizar algún tipo de análisis de datos en él.

Problema

No estoy preocupado por el control de versiones de la database. En otras palabras, no me importa qué era mi DB hace dos días. Sin embargo, dado que mi database se actualizará todos los días, quiero que diferentes sistemas de desarrollo, así como Jenkins, tengan acceso a las últimas cada vez que se ejecute una testing. Por lo que he leído hasta ahora, no es una buena práctica include la database en mi repository de Git (y no me gustaría hacerlo, ya que no me importa rastrear los cambios en él). Entonces, la pregunta es ¿cómo debo almacenar mi database e integrarla en mi proyecto?

Algunos han sugerido usar Dropbox u otras herramientas para acceder al DB en cualquier lugar. ¿Es este el mejor enfoque? En caso afirmativo, ¿qué debería mantenerse exactamente en Dropbox? ¿Archivos y carpetas de bases de datos reales (* .db)? En MySQL, se guardan centralmente en la carpeta / data / de MySQL y no tengo idea de cómo almacenarlos en otra carpeta, como Dropbox.

Otros sugirieron mantener un vertedero de DB. ¿Cuál debería ser el process? ¿Para generar el volcado después del cambio diario de la database y mantener los files de volcado de .txt en Dropbox? ¿Cómo volvería a crear Jenkins la database de estos files de volcado cada vez?

No movería los datos reales. Si es posible, y siempre que satisfaga sus necesidades de security, simplemente pondría la connection a su server MySQL accesible desde donde esté haciendo el desarrollo o las testings, y luego modifique la cadena de connection para apuntar a ese server.