2017-02-19 68 views
0

我是Redgate的新手,希望找到一些关于如何最好地设置我的数据库存储库的帮助。redgate数据库依赖关系

我有多个站点和多个数据库,他们都有自己的存储库。数据库可以与一个或多个网站相关联。

我用以下方式创建了我的存储库;

wwwroot/webapps/site1 
wwwroot/webapps/site2 
wwwroot/webapps/site3 

wwwroot/databases/db1 
wwwroot/databases/db2 
wwwroot/databases/db3 
wwwroot/databases/db4 

例如,site1,2,3全部使用db1,但site2也与db2相关联。针对db1所做的更改适用于所有网站,但我希望能够检查对db1的更改,而不管我正在使用哪个网站存储库。

创建时这一切都只是正常建立到每一个人仓库,但我想我的部署代码和数据库更改为同一版本的一部分。

目前,我有一个TFS构建(TFS 2015使用基于任务的构建),其部署我的代码,我必须确保任何相关的数据库更改为另一版本的一部分单独部署。

是否有可能以某种方式将我的代码构建链接到数据库更改让他们一起部署?我的存储库设置是否正确,或者有更好的方法来设置它?任何指导将不胜感激。

更多信息来描述我的问题。

Code repository 
wwwroot/webapps/site1/feature_A 
wwwroot/webapps/site1/feature_B 
wwwroot/webapps/site2/feature_C 

    DB repository 
wwwroot/databases/db1/feature_A 
wwwroot/databases/db1/feature_C 

使用上面的例子;

feature_A(代码存储库)依赖于feature_A(DB存储库)。目前的设置将要求我为我的代码创建两个构建版本,另一个为我的数据库创建。

feature_B(代码资源库)没有依赖性

feature_C(代码库)是依赖于feature_C(DB信息库)。

我只能通过指定功能创建一个版本,因为我的代码和DB库是分开的,我不得不做这两个版本。

我想通过创建一个构建,将推动我的数据库和代码,同时改变了实现上述。我不知道如何做到这一点,或者如果可能的话。如果这是不可能的,有人可以提出一个替代方案。

我不希望里面添加我的网络文件夹中的DB库,因为在同一个数据库用于跨多个网站,这将导致出现问题。

例如下面的工作对我来说却意味着DB1库将被创建多次。

wwwroot/webapps/site1\Code\ 
wwwroot/webapps/site1\DB1\ 

wwwroot/webapps/site2\Code\ 
wwwroot/webapps/site2\DB1\ 
wwwroot/webapps/site2\DB2\ 

wwwroot/webapps/site3\Code\ 
wwwroot/webapps/site3\DB1\ 
+0

你就不能有第二个建设任务/步骤为您的TFS的一部分构建部署数据库?它不需要是完全独立的版本。 –

+0

你的意思是你想在数据库发生变化时触发一个TFS构建?你使用的是哪个版本的TFS?你使用XAML构建还是基于任务的构建? –

+0

@大卫 - 我不能做你建议的内容,因为构建必须指向一个功能。由于代码和数据库回购是分开的,我不能在第二回购中包含另一点。 –

回答

0

所以你想在一个版本中获得两个版本库。可以检查以下步骤:

  1. 在构建定义,指定一个存储库:

enter image description here

  • 然后添加一个命令行任务使用git命令将另一个存储库克隆到与步骤1相同的位置:
  • enter image description here

    如果存在授权问题,当您克隆库,启用“允许脚本访问OAuth令牌”:

    enter image description here

    +0

    这可能是最好的/唯一的解决方案,但它仍然不是我所希望的。以这种方式设置我的构建是好的,但这意味着在运行构建之前,我必须更新构建配置并更改命令行代理步骤指向的功能,或者如果不需要,请将其删除。我只是希望能够排队构建而不必每次都更改构建配置 –

    +0

    这是目前构建版本中获得两个回购的唯一方法。如果命令行不是必需的,您可以在构建定义中禁用它。当你需要它时,启用它。 –