持續整合ci(continuous integration)是一種軟體開發實踐,團隊成員頻繁地將他們的工作成果整合在一起。通常是每人每天至少提交一次,這樣每天就有多次整合。每次提交後,自動觸發一次包含自動化測試的構建任務,以便能盡早發現整合問題。
通過這種方式,許多團隊大大減少了整合階段的問題。由此可以看出,持續整合是一種質量反饋的機制,能夠盡早地發現**中的問題,並提前解決問題。持續整合這個術語最早是在2023年由grady booch提出的,目前能看到的關於持續整合最多的描述,**於martin flower發表的一系列**。martin flower為持續整合總結了以下一些原則:
維護乙個統一的**庫;
每天都必須向主幹提交**;
每次提交都應立刻在整合環境進行構建;
自動化構建;
自動化測試;
自動化部署;
快速、持續構建;
構建環境務必於生產環境保持一致;
訪問許可權對團隊成員保持公開透明;
總結:
持續整合中的持續的意思並不是「始終,一直」,它的意思是「隨時」。比較恰當的頻率是:每當有人提交**,同時整合一次。
持續整合包括:自動編譯+自動**檢查+自動打包+自動化測試+自動部署。
本質:解決專案中常見的問題
理解了持續整合,持續交付(cd:continuous delivery)就很容易掌握了。持續交付在持續整合的基礎上,將整合後的**部署到更貼近真實執行環境的類生產環境中。如果測試沒有問題,可以繼續手動部署到生產環境中。注意:這裡的測試重點是指測試人員進行的產品級別的測試!往往在這個測試過程中普遍都會引入測試指令碼進行自動化回歸測試,主要是進行介面測試和ui測試(業界公認做法是重介面輕ui),當然部分公司也會引入安全測試和效能測試。持續交付能夠以較短地週期完成需求的小粒度頻繁交付。頻繁的交付週期帶來了更迅速的對軟體的反饋,並且在這個過程中,各個角色密切協作,相比於傳統的瀑布式軟體團隊,更少浪費。
持續部署(cd:continuous deployment)則是在持續交付的基礎上,把部署到生產環境的過程自動化(如上圖)。整個過程無需人工參與!
持續整合、持續交付、持續部署是需要大量的工具作為支撐的!整個核心工具鏈如下圖所示:
持續整合(一)
一 提出 整合軟體 的過程不是新問題,如果專案開發的規模比較小,比如乙個人的專案,如果它對 外部系統 的依賴很小,那麼軟體整合不是問題,但是隨著軟體專案複雜度的增加 即使增加乙個人 就會對整合和確保 軟體元件 能夠在一起工作提出了更多的要求 要早整合,常整合 早整合,頻繁的整合幫助專案在早期發現專案...
持續整合(一)思想篇
持續整合 continuousintegration,簡稱ci 又被稱為持續構建 continuousbuild 最初是以一種研發管理的思想被提出來。1996年,持續整合的思想首先在kent beck的極限程式設計中被提了出來。kentbeck在他的書中是這樣描寫敘述的 團隊程式設計就是先分而治之地...
持續整合基礎 Jenkins 一
什麼是jenkins jenkins是持續整合的乙個系統,它是一種軟體開發實踐活動 經常執行整合,可能每天 持續整合的價值 1 減少風險 能夠盡早的發生問題 2 減少重複過程 把重複的東西都自動化起來 3 任何時間 任何地點生成可部署的軟體 4 增強專案的可見性 5 建立團隊對開發產品的信心 持續整...