簡體   English   中英

使用 TeamCity 進行顛覆發布管理

[英]subversion release management with TeamCity

我們目前使用 Subversion 進行發布管理,並標記我們所有的發布(包括 QA 和我們的生產服務器)。 但是,我們希望創建一個單一的 Release 目錄來反映我們的最新版本。 這樣,我們可以讓 TeamCity 始終從同一個文件夾中提取以進行持續構建。 此外,如果有人必須對生產環境進行快速錯誤修復,他們不會不小心將其移至錯誤的分支。

例如,下面是我們當前的結構,添加了一個“發布”文件夾。 是否有一種簡單的方法可以將標記的分支每次都移動到“發布”,或者甚至讓“發布”成為最新 release_* 版本的鏈接?

我們的顛覆文件夾結構

澄清

以下是我們的構建/發布過程當前如何工作的示例:

  • 今天,在 TeamCity 成功構建后,我向 QA 發布了我們的 web 應用程序版本。 這樣做時,我分支/標記它
  • 明天開始,開發人員將繼續在后備箱中進行更新。 在下一個 QA 版本之前,這些不會被推送到 QA
  • 周三,我們的 QA 團隊通知我們他們發現了一個錯誤。 我們對 QA 分支進行了錯誤修復,將更改合並回主干,並將更新的 QA 分支推送回 QA。 問題 #1:TeamCity 不再為我們工作,因為我們在 #'d QA 分支
  • 周五,QA 批准了生產版本,因此我們發布並分支/標記
  • 周一,一位客戶致電詢問需要對生產進行小改動的問題。 我們在發布分支中進行更改並合並回主干。 問題 #2:再一次,我們在沒有 TeamCity 幫助的情況下做出改變

我會(並且確實)對此采取稍微不同的方法。 源代碼控制管理主要是為了管理源代碼並將其視為跟蹤或暗示發布的一種手段,這會使生活變得有些棘手。 這確實是您的持續集成環境的目的,它比 SVN 做得更好。

我使用 TeamCity 作為識別從 SVN 中提取的路徑和修訂號的方法。 在構建運行時定義這一點很容易,並且任何發布到生產環境時都要謹慎(即仔細檢查路徑和修訂版)。 在絕對最壞的情況下,如果你搞砸了,你總是可以使用修改后的參數重新運行構建。

你真的不希望直接對“Releases”文件夾進行代碼更改——如果它是主流開發,這就是主干的用途,如果你不得不調整早期版本,這就是分支的用途。 它有點像擊敗 SVN 以屈服於做一些不是其核心優勢的事情,在這方面,您可能會發現良好源代碼控制管理的 10 條誡命中的一些技巧很有用。

您可以輕松編寫腳本,以便在構建完成后將文件夾的文件或內容復制到發布文件夾中。 您甚至可以在執行此操作之前刪除發布文件夾的內容。 所以是的,因為 svn 中的分支或標簽是一個復制操作,你可以輕松地做到這一點。

對於每個項目,我們都有一個包含最新版本(通常只是二進制文件)的Latest文件夾。

這對於持續集成非常有用,盡管我們必須使用自定義 MSBuild 腳本來實現這一點,例如對內容執行 Svn 刪除,然后將 Svn 復制到最新文件夾。

您可以使用svn:external屬性將名為 release 的文件夾指向不同的標簽。 請參閱svn:external

svn propset svn:externals 'release http://my_repo/tags/latest_tag' .

每次發布新標簽時,您都必須更新屬性值以指向最新標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM