it 企業中ci/cd的應用愈加廣泛,成為推動軟體研發活動的重要基礎設施服務,同時推動 devops 模式的實際落地。一般傳統或者狹義、普遍的 ci/cd,是指持續整合(continuous integration,ci)和持續交付(continuous delivery,cd)。而更加廣義、全面的理解,是指持續整合(continuous integration,ci)、持續測試(continuous testing,ct)、持續交付(continuous delivery,cd)和持續部署(continuous deployment,cd)四個方面。
持續整合是指每日頻繁地(比如一天多次)將**整合到主幹分支中。強調通過整合和測試的速度,快速給出乙個整合的結果(是失敗還是成功),在**整合之前,必須先通過自動化測試驗證,只要有乙個測試用例失敗,就不能整合。
敏捷開發的核心是指整個軟體開發活動被劃分成一系列短的迭代過程,每個迭代完成一定數量的功能,迭代週期應該盡量短。在軟體開發需求已經確定的情況下,迭代應該由測試驅動開發(tdd)和整合反饋來驅動。只有這樣,才能為質量持續改進奠定乙個良好的基礎。
持續整合是和單元測試結合在一起的,也就意味著,持續整合和單元測試需要並行工作。持續整合一般由**每次 git push/review 觸發。先簽入**就先看到構建結果,後簽入,則要排在後面。這就要求構建時間不能太長,否則在構建時容易引起混亂,很難知道是誰的**破壞了整合,導致很難定位問題。
持續整合的工作階段比較明確,主要有三個大的階段:持續整合準備階段、持續整合使用階段和持續整合測試階段。
1)持續整合準備階段的工作主要包括:
2)持續整合使用階段的工作主要包括:
3)持續整合測試階段的工作主要是,ci 系統根據整合結果進行不同操作,如果成功,則將**合併到主分支;如果失敗,則反饋給開發人員修改重新提交。
從中我們可以看到,持續整合涉及的主要工具類別包括:
ci優勢:
易於定位錯誤。比如當持續整合失敗時,說明新提交的**引起了錯誤,這樣也很容易知道是誰犯了錯誤,可以找誰來討論。
提高團隊的開發信心。雖然整個系統還不是那麼可用,但至少可以看到功能已經在一點點被整合了。
提高對進度的控制和把握。這點非常明顯,如果每天都在整合,當然每天都可以看到哪些功能可以使用,哪些功能還沒有實現。如果你是開發人員,則不用為在每日 scrum 晨會時說自己完成了多少開發而煩惱;而如果你是 scrum master,那麼也不用再煩惱開發人員說完成了**的40%到底是個什麼概念。
有助於**開發的質量評估。比如從開發質量的評估圖表中,找出經常出錯的測試和原始碼等。
與測試工具結合,做到每次提交都進行測試。
快速發現錯誤。每完成一點開發,就提交評測、**審查,可以快速發現錯誤,及時修復,越盡早解決,成本越低。
持續整合 CI
引子 記得剛加入趨勢開始開發工作 的時候曾被告知,趨勢有一套auto build的系統,會每天夜裡自動把當天check in的 進行構建,生成qa可測試 的build。每個rd都得小心提交code,因為專案結束的時候會看auto build的失敗率。可是構建失敗總是在所難免,尤其是每次要提交cand...
持續整合CI
持續整合是什麼?持續整合 continuous integration,簡稱ci 指的是,頻繁地 一天多次 將 整合到主幹。讓產品可以快速迭代,同時還能保持高質量。持續交付 continuous delivery 指的是,頻繁地將軟體的新版本,交付給質量團隊或者使用者,以供評審。它強調的是,不管怎麼...
ci 持續整合系列
持續整合一直很蛋疼,感覺沒底.幾個方面來寫 1,搭建gitlab 配郵箱 網域名稱等使之好用 2,搭建jenkins yum,安裝常見外掛程式 3,搭建sonar,漢化 4,安裝sonar scanner 0,實現sonar scanner能手動掃瞄,在sonar介面可以看到評測結果 1,實現jen...