如何在与Jenkins的持续集成中管理数据库

时间:2016-08-26 16:56:29

标签: git amazon-web-services jenkins continuous-integration automated-tests

我对DevOps很新。试图组织我的项目进行持续集成(CI),我遇到了一个问题,我还没有找到解决方案。我想知道在我的设置中管理我的数据库文件的最佳方法是什么,以便开发人员和Jenkins可以访问最新版本的DB。

在各种主题中已经触及了类似的问题,例如下面的内容。但是没有人回答我的具体情况。

设置

以下是我的设置:

  • 语言: Python 3.5(包含单元测试等)
  • 数据库: MySQL - 数据每天更新一次(不是架构)
  • 版本控制: Git
  • 代码托管: Bitbucket
  • 开发操作系统:Windows 10
  • CI计算机:运行Linux的亚马逊AWS EC2(Ubuntu 16.04.1)
  • CI工具: Jenkins

我已经设置了CI,每当我更新origin / master时,Jenkins都会在AWS机器上运行测试。

修改 为了澄清我的数据库是什么,假设它是某种日常销售数字或每日市场更新。我有一个代码每天更新一次数据库,另一个程序在其上执行某种数据分析。

问题

我不关心数据库的版本控制。换句话说,我不在乎两天前我的数据库是什么。但是,由于我的数据库每天都会更新,我希望不同的开发系统以及Jenkins每次运行测试时都能访问最新的。从我到目前为止所读到的,将数据库包含在我的Git存储库中并不是一个好习惯(我不想这样做,因为我不关心跟踪它的变化)。所以问题是我应该如何存储我的数据库并将其集成到我的项目中?

有些人建议使用Dropbox或其他工具随处访问数据库。这是最好的方法吗?如果是的话,究竟应该在Dropbox上保留什么?实际数据库(* .db)文件和文件夹?在MySQL中,它们集中存放在MySQL的/ data /文件夹中,我不知道如何将它们存储在另一个文件夹中,例如Dropbox。

其他人建议保留数据库的转储。这个过程应该是什么?在每日更改数据库后生成转储并将.txt转储文件保留在Dropbox上? Jenkins每次都会如何从这些转储文件重新创建数据库?

1 个答案:

答案 0 :(得分:0)

我不会移动实际数据。如果可能,并且只要它满足您的安全需求,我只需要从您正在进行开发或测试的任何地方访问您的MySQL服务器,然后修改连接字符串以指向该服务器。