假設正在進行部署管道。 SVN標籤和開發版本正在改變。那時開發人員正在進行他的改變。所以CI服務器有可能發佈新的提交未經測試的生產更改或其他衝突發生。我該如何處理這種情況。我是否需要鎖定整個主幹,直到構建管道完成。有沒有其他的工作。連續交付 - 處理中間svn提交
回答
如果我理解正確的話,您認爲以下步驟
-
後提交,生成服務器會檢查當前Trunk(假設修訂版A)
- ,
- 進行構建,
- 執行一些測試,
- 標籤的行李箱,如果試驗成功
- 並將其部署到生產(仍然只如果測試成功)
「瘋狂」的開發人員在第3步和第4步之間提交,因此創建了修訂版B.現在假設構建服務器將再次檢出最新修訂版(這將是修訂版B)。這種行爲確實會造成一些麻煩。
但是,構建服務器應該根據特定修訂執行所有步驟,這在常見設置中不是問題。例如。詹金斯通常在工作開始時有一個退房步驟。如果最後有一個標記步驟,您通常不會希望Jenkins盲目地標記當前主幹(導致您描述的問題),而是標記Jenkins工作區中籤出的修訂。
此外,請考慮在任何部署自動部署到生產之前,應至少有一些手動審批步驟。據我所知,這通常是在連續交付的情況下提及的。
持續交付的關鍵是恕我直言,你可以在任何時候按下按鈕來部署當前版本的源代碼。恕我直言,這並不意味着每個提交應該自動部署。
我們可以用兩種方式進行標記。 1.複製樹幹:例如:svn copy http://mydomain.com/myproject/trunk http://mydomain.com/myproject/tags/1.0.0。 2.複製 – user2903314
我們可以用兩種方式標記。 1.副本主幹:例如:svn副本http://mydomain.com/myproject/trunk http://mydomain.com/myproject/tags/1.0.0 2.複製本地工作副本,例如:svn副本。 http://mydomain.com/myproject/tags/1.0.0 因此,在CI服務器內部,我們應該始終使用用於構建和測試的檢出副本進行標記。我對嗎? – user2903314
是的,這將是去恕我直言的方式。 –
- 1. SVN提交的批處理
- 2. 連續部署和交付
- 3. SVN - 處理正在提交的文件
- 4. SOA中的持續交付
- 5. 使用木偶實現連續交付
- 6. 通用連續交付管道
- 7. 連續部署/交付和安全
- 8. 連續提交libcURL(C/C++)
- 9. 處理POST提交
- 10. Jenkins提交SVN
- 11. 交付與交付之間的差異!
- 12. 彈出批處理提交間隔外的事務提交
- 13. 如何設置連續建立在svn提交上?
- 14. Openstack + Chef + Jenkins持續交付
- 15. Gitlab持續交付選項
- 16. Jenkins + Virtualbox持續交付
- 17. 持續交付使用Grails
- 18. Fastlane的持續交付
- 19. svn分支提交 - 實驗提交
- 20. 提交svn unstages最後一次提交?
- 21. 問題SVN提交
- 22. SVN提交問題
- 23. Svn提交在PHP
- 24. svn提交錯誤
- 25. SVN提交與Eclipse
- 26. svn提交消息
- 27. 提交項目SVN
- 28. SVN提交問題
- 29. SVN提交錯誤
- 30. Svn提交問題
「CI服務器發佈新的提交未經測試的生產更改」 - 呃,什麼? –
假設CI服務器將開始部署管道的最後一步,這是將trunk中的源代碼標記爲特定版本,然後提交trunk以將當前開發版本更改爲下一個快照版本的過程。就在這一步之前,一個瘋狂的開發人員將他的更改提交給主幹。因此,如果ci服務器在提交後立即標記trunk,它也會標記這些更改,這在發佈的二進制文件中不存在。我是否成功解釋了這種情況? – user2903314
在我看來,CI服務器不應該部署到生產環境。 –