2017-09-01 90 views
0

在我們當前的開發中。工作流程有主數據庫 - >DbMain。有一個過程採用最新版本的項目並自動將其部署到那裏,然後觸發單元測試。由於我們希望始終在源代碼控制中擁有項目的工作版本,因此每位開發人員都應確保他檢查工作代碼,並且所有測試都會通過。管理SSDT中每個開發人員的不同發佈配置文件

爲此,我們決定爲具有以下命名約定每個開發人員創建單獨的數據庫 - >DbMain_ XX(其中XX是開發初期)。因此,簽入前的每個開發人員都會假設手動發佈對該數據庫的所有更改並運行單元測試。爲此目的設置發佈配置非常有用,它是主發佈配置的副本,只有數據庫名稱存在差異。

這會引入我們將在解決方案中有很多不同的發佈配置文件,這是相當混亂的。

如果我們不會將這些配置文件添加到源代碼管理,那麼.sqlproj文件仍然會引用這些文件,因此項目將引用不存在的文件。

所以真正的問題。我可以爲所有使用變量更改數據庫名稱的開發人員使用單一發布配置文件嗎?例如DbName _ $(dev_initials)?或者我們可以讓每個開發人員都擁有自己的發佈配置,而且不會破壞項目嗎?

UPDATE:

按照彼得·肖特評論:

我可以創建本地發佈配置文件,但如果我不將它添加到源代碼控制,則仍處於sqlproj文件中的條目,但文件本身將不可用。

本地運行測試至少有兩個缺點。第一個是每個人都應該在本地安裝SQL Server。我們主要通過虛擬機工作,並且磁盤空間相當有限。另一件事是開發人員肯定會忘記或不會每次都不會手動運行測試。有時候他們會在沒有構建或/和運行測試的情況下推動對回購的更改。我們希望避免這種情況,並儘快「趕上」失敗的構建。

提到的另一種方法是擁有1個通用構建數據庫。在我的情況下,我們有一個(DbMain)。所有的開發人員都可以使用它來滿足它的需求,但是當2個開發人員同時發佈時,我們一定會抓住這種情況,並且通過弄清楚真正出問題的地方,可能會造成很多混亂。

+0

您可以在本地創建發佈配置文件以不中斷項目,但是在本地構建並在其中運行測試或者具有通用構建數據庫以及打破構建的簽入/提交的公共構建數據庫會提高標記而不是創建標記每人一個DB? (不要將它作爲一個包含關鍵數據的數據庫 - 只是建立或不建立數據庫,或許首先使用測試數據。) –

+0

@PeterSchott我已更新問題 –

回答

1

這種事情的一種常見方法 - 不僅是對於SSDT發佈配置文件,而且對於一般的配置文件 - 是提交一個類似DbMain.publish.xml.template這樣的名稱的文件的通用版本,並向開發者提供重命名文件爲DbMain.publish.xml - 或其他 - 和.gitignore該文件的本地副本,允許開發人員進行他們想要的任何更改,但繼承該文件的.template版本的通用設置。

發佈配置並不需要被添加到.sqlproj在部署時使用,這僅僅是在Visual Studio中的便利,使他們更容易找到和編輯,所以你不必擔心打破引用。

如果你想避免多個開發者發佈到一個共同的「構建」數據庫,這是一個沮喪的處方。

真的,您希望將「構建」數據庫發佈爲您的CI過程的一部分,這意味着之後開發人員推動了他們的更改。

+0

目前我以類似的方式做了,但是使用例外情況是,我推送了配置文件的「共享」版本,然後每個開發人員都應該說git不要跟蹤該文件的更改 –

+0

是的,所以你已經走上了正軌。如果現在唯一的問題是'.sqlproj'文件中引用的問題,那麼您只需告訴開發人員不要將他們的本地配置文件添加到項目中。 –

+0

配置中沒有引用錯誤,因爲我已將它推送到git,然後每個人都應該說不跟蹤本地更改。它幾乎與你的建議相同,不同之處在於你沒有將此配置推送到git –

相關問題