Dot-Net

TeamCity 從版本文件中讀取和更新版本號

  • May 30, 2019

我們正在使用 TeamCity 作為 CI 伺服器,並且我們一直在考慮如何實現一種方法來對我們的版本進行版本控制,該方法既安全(即人為錯誤的可能性最小)又需要盡可能少的努力。到目前為止,以下似乎是最合乎邏輯的:

  1. 創建一個版本文件(或使用 assemblyinfo.cs)。版本資訊將採用….格式。此文件將檢入我的 VCS。
  2. 執行 TeamCity 建構
  3. TeamCity 從步驟 1 中讀取版本文件,挑選出每個單獨的數字並設置相應的 TeamCity 建構參數(這樣我以後可以將它們用於創建 nuget 包和標記等事情)
  4. TeamCity 自動增加最終的“建構計數”值。
  5. TeamCity 將新版本資訊保存回版本文件(使用更新的“建構計數”)
  6. 然後,TeamCity 會執行我的其餘建構步驟、建構文件、執行單元測試、設置正確的程序集版本等。
  7. TeamCity 最終將文件檢查回 VCS

我們相信這樣做的好處是如果我們需要修復舊版本,那麼版本號將是正確的,TeamCity 可以簡單地使用舊版本文件,並像往常一樣增加建構計數。這確實假設我們正在正確更新我們的主要/次要/更新檔版本。這有望與即將發布的 TeamCity 7.1 功能很好地配合使用,該功能允許您通過自定義建構對話框選擇要建構的分支。

從到目前為止我已經讀過的內容來看,這些操作在 TeamCity 中應該是可能的,但我們正在尋找最簡單的方法來解決這個問題,因為我們只是一個兩人的裝備,而且我們負擔不起大筆投資大量時間成為 Nant 或 powershell 的專家,卻發現它可能無法達到我們想要的效果。

所以我想總結一下我的問題如下:

  1. 我提議的可能嗎?
  2. 如果是,那麼考慮到我在 Nant、powershell 等方面的有限經驗,最好的工具是什麼(即對於命令行和腳本經驗擴展到簡單 DOS 操作和一點 VBScript 的人來說,這是最快的學習工具)

任何幫助是極大的讚賞。

對於您的第一個問題:是的,有可能:

  1. 將 .git(.svn, .hg etc) 目錄添加到 VCS 規則
  2. 使用您最喜歡的腳本語言在 teamcity(命令行執行器)中讀取建構腳本中的版本號並對其進行增量。
  3. 通過互動協議設置內部版本號
  4. 使用您喜歡的腳本語言更新版本文件中的內部版本號
  5. 執行建構步驟
  6. 執行送出和推送,因為您在最後一步的建構目錄中已經有 .git(.svn, .hg etc) 目錄

抱歉,我無法回答您的第二個問題,因為我不知道任何適用於 Windows 的工具。在 linux 上,我會使用 bash。

引用自:https://stackoverflow.com/questions/11850065