2008-10-22 124 views
7

我目前正致力於自動化/改進包裝我店的整個產品的發佈過程。目前該產品的組合:版本信息的最佳實踐?

  • Java服務器端代碼庫
  • XML配置和應用程序文件
  • 殼牌和批處理腳本爲管理員
  • 靜態地提供HTML頁面
  • 和一些其他的東西,但大部分是這樣的

所有或大部分都有其中包含各種版本信息,我們編輯出於各種目的。發佈打包過程的一部分涉及到很多發現,grep'ing和sed'ing(用腳本)來更新信息。這種包裝產品的粘合劑似乎已經以有機的,即時的方式拼湊在一起,並且保持非常可怕。例如,一些Java方法在發佈時創建Date對象,其參數通過文本替換進行更新,而無需編譯器驗證......只是,urgh。

我試圖避免給出使用實際軟件(即CVS,SVN,螞蟻等)的例子,因爲我想避免「使用xyz的功能來做到這一點」,並更多地關注一般實踐。我想爲這個問題指責劣質設計,但如果我必須重新開始,仍然使用不同的技術,我不確定如何最好地處理這個問題,而不是放下約定。

我的問題是,是否有任何最佳實踐或提示和技巧來維護和更新跨不同技術,文件類型,平臺和版本控制系統的版本信息?

回答

2

事實上,完成克雷格安格斯的回答,拇指這裏的規則應該是到不包括在正常分娩的文件任何元信息,但報告這些元數據(版本號,發佈日期等)到一個特殊的文件 - 包含在發佈 - 。

這有助於您使用一個VCS(版本控制系統)工具從開發到認證到試生產。
這意味着無論何時加載工作空間(用於開發,或用於測試或準備發佈到生產環境中),它都是版本控制工具,可爲您提供所有詳細信息。

當您準備交付(一組打包文件)時,您應該詢問VCS工具以瞭解您想保留的每個元信息,並將其寫入包含在所述文件集中的特殊文件中。

即遞送應該在外部目錄被打包(任何工作空間外部)和:

  • 複製到共享目錄(或Maven倉庫)如果它是一個非官方釋放(但只是一個快速包裝,幫助隔壁的團隊等待您的送貨)。這樣你就可以每天做10或20次,這並不重要:它們很容易丟棄。

  • 導入到VCS中以便作爲正式發貨,並且爲了方便部署,因爲您需要的只是要求版本工具提供正確版本的正確版本,並且您可以開始部署它。

注意:我剛剛描述了一個主要用於許多相互依賴的項目的發佈管理過程。對於一個小型單個項目,您可以跳過VCS工具中的導入並將您的交付存儲在其他地方。

3

創建一個包含版本號和都不同組件的參考性文件

  • Java文件可通過
  • XML引用的屬性可以使用包括屬性文件?
  • HTML可以使用JavaScript寫在HTML從屬性的版本號
  • Shell腳本可以讀取文件中的
0

除了克雷格安格斯的包括使用的工具版本。