2017-02-19 80 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

    這是目前構建版本中獲得兩個回購的唯一方法。如果命令行不是必需的,您可以在構建定義中禁用它。當你需要它時,啓用它。 –