系列文章整理 「聽」喬梁講述持續整合的故事

2022-01-11 05:29:52 字數 1918 閱讀 2089

持續整合之戲說check-in dance

每當開發人員提交**時,就是其與其他開發人員工作成果的一次整合。如果每個人都能夠頻繁提交**,那麼**整合的頻率就會提高,在持續整合的有力支援下,**中潛在的問題就會更早地暴露出來,以便團隊盡早解決之。當然,持續整合所鼓勵的頻繁提交並不是指那種僅將版本控制庫當成備份工具,無約束的「隨意」提交,還需要團隊開發流程約束的。下面我們來一同**「持續整合環境中的團隊開發流程是什麼樣的」。

持續整合之「測試三角形與分段構建策略原則」

隨著軟體產品新特性的不斷增加,軟體自動化測試用例的數量也會成倍增長。對於一些歷史「悠久」的遺留系統來說,甚至會積累數以萬計的自動化測試用例。如果對這樣的系統進行持續整合,還要求每個開發人員都要進行本地驗證的話,困難的確不小。讓我們還是看看joe的團隊是如何解決類似問題的吧。

持續整合之「分支策略」

現代版本控制系統(scm)的作用已不僅僅是儲存歷史版本,它還是各軟體開發組織利用其分支功能實現多人並行開發,提高生產效率的一種工具。對於稍有歷史的軟體產品來說,一般都會有**分支的出現,也常常見到一些歷史悠久的產品其錯綜複雜的分支版本樹甚至將產品交付團隊拖入「無盡維護」的泥潭。分支的目的是希望「分而治之」,而持續整合的目的是「頻繁整合」,這二者之間又有哪些聯絡呢?

持續整合之「分支策略」(續)

現在,joe的團隊中,開發人員快速增加,已接近30人了。由於首次發布後的市場壓力,大家一直在趕進度,持續整合的失敗頻率越來越高,修復構建的時間也越來越長,排隊等待提交的**也越積越多。「這種狀況不能再持續下去了,需要想個辦法解決它。」

持續整合之「依賴管理」

在前文《分支策略(續)》中,我們討論了多元件應用程式的持續整合策略,即:為相對獨立的元件建立自己專屬的**庫,然後通過現代持續整合工具進行元件間的持續整合。joe的團隊在首次發布之後,開始使用這種方式。然而,沒有多久,他們就遇到了乙個問題:一次提交構建所花費的時間太長。

持續整合之「自動化部署」

將部署操作指令碼化,並進行部署驗證測試;各類環境盡可能相似,並使部署指令碼通用化;對環境管理進行版本控制,杜絕對生產環境的手工直接修改。

持續整合之「軟體自我識別」

你是否遇到過這樣的情形,即使手裡拿著乙個jar檔案或dll檔案,也無法知道它到底是哪個版本。也許你可能認為,這算不了什麼,到某個管理平台上查一查部署記錄就行了。可是,如果發現在生產環境的集群伺服器上,不同機器上部署的同乙個程式檔案(比如.war檔案)的大小卻不相同,哪乙個的大小是正確的呢?

持續整合之「everything is code」 

隨著網際網路的飛速發展,以及基礎設施的改進,越來越多的業務被放在了「雲」端。管理數千台伺服器和各種應用程式的不同版本已經是一種常規事務了。那麼如果管理好這些機器和**嗎?本文將介紹一些最佳實踐,來幫助大家更好的完成相關的事務。

人臉合成系列近期文章整理

重要,單開一篇筆記。cvpr 2018 重要,單開一篇筆記。prcv 2018 使用vae cgan 三個創新點 判別器同時做real fake分類和id分類,在判別器的最後三層特徵圖上做fm 特徵匹配 loss,又用乙個旁觀的識別模型做感知loss,與fm類似。vae生成的是兩張圖,一是不加噪生成...

snort文章整理

很久沒有接觸snort了,由於工作的原因,和它打了兩年多的交道,雖然有不少的認識,但缺少深入的研究。閒來時翻的幾篇手冊,原來放在163上,偷懶放個總的上來。snort2.6 usage 中文 snort2.6 problems 中文 snort2.6 wisnlist 中文 snort.spade ...

Leetcode文章整理

leetcode的題目種模擬較多,感覺應該將自己聯絡過的題目進行分類,這個就是根據自己做過的題目進行劃分,並做一定的總結,會持續更新 sort two pointer 單鏈表 這裡用的很直接的方法就是找到鍊錶的中點,然後將鍊錶分為兩部分,後半截翻轉後兩個鍊錶進行融合。我在想,如果能之間把後面半截放入...