3 回答

TA貢獻1804條經驗 獲得超3個贊
在源代碼中保留一個版本號是一種常見的做法,這沒有錯。
您需要將 CI 過程與常規構建、發布發布和發布部署分開。
定期構建:每天甚至在每次提交后運行,可以包括靜態代碼分析和自動測試,檢查代碼是否可以構建。常規構建不應更改版本號。
發布發布:只能由發布經理的顯式手動操作觸發。
觸發操作可以是用新版本號標記提交,新合并到發布分支,或者只是更改保存在特殊文件(例如pom.xml
)中的版本號的提交。例如,請參考 git flow。
發布發布分配新版本號(自動或手動),必要時將其提交到源代碼中,使用新版本構建二進制包并將其上傳到二進制包存儲庫(例如 Nexus、devpi、本地 APT 存儲庫、Docker注冊表等)。
發布部署:另一個手動觸發的操作,從包存儲庫中獲取準備好的二進制包并將其安裝到目標環境(開發、QA/UAT/暫存、金絲雀部署的生產部分或整個生產環境)。

TA貢獻1816條經驗 獲得超6個贊
前提:
我假設這些是討論解決方案的前提。
當前版本號保存在 git-tracked 源文件中,但您可以擺脫它。
沒有人手動管理版本號,也沒有觸發發布程序,其中包括:(a)增加版本號,(b)從源構建和(c)將構建結果存儲在某處。這些由 CI 處理,并且應該保持這種狀態。
解決方案:
CI 不是寫入源文件并創建新提交,而是簡單地標記通過 CI 檢查的特定提交,然后將標記推送到遠程倉庫。
構建腳本應該讀取當前 HEAD 提交的標簽,并將其用作發布版本的版本號。
或者,您可能希望使用
git filter-branch
重寫現有的 git repo 歷史記錄,標記以前的版本提交以保持一致性,刪除并停止跟蹤版本號源 cile,然后擺脫那些 CI 提交。

TA貢獻1831條經驗 獲得超4個贊
我認為你應該使用 git flow。并創建一個master分支和一個develop分支。每次 CI 檢查開發時,版本號保持不變。每次你創建一個版本,例如將開發合并到主,你可以通過 CI 增加版本號。
或者我遺漏了什么,但在我看來,沒有理由每次 ci 運行時都會增加版本號。
因此,總而言之,您最好考慮何時“發布”對新版本的更改!!
添加回答
舉報