對於很多做嵌入式軟體的朋友來說,可能從來都沒有聽說過持續整合這個詞,也就無從接觸過jenkins這個工具軟體。自去年轉調部門後,除了解了設計模式外,還有幸接觸到了jenkins。
那什麼是持續整合?jenkins具體用來做什麼,對軟體開發有什麼益處呢?總得來說,這兩者主要是涉及乙個軟體質量的主題,特別是團隊開發軟體專案。下面就來介紹介紹下這兩者。
持續整合的概念
持續整合,continuous integration ,簡稱ci。
隨著軟體開發複雜度的不斷提高,團隊開發成員間如何更好地協同工作以確保軟體開發的質量已經慢慢成為開發過程中不可迴避的問題。尤其是近些年來,敏捷(agile) 在軟體工程領域越來越紅火,如何能再不斷變化的需求中快速適應和保證軟體的質量也顯得尤其的重要。
持續整合正是針對這一類問題的一種軟體開發實踐。它倡導團隊開發成員必須經常整合他們的工作,甚至每天都可能發生多次整合。而每次的整合都是通過自動化的構建來驗證,包括自動編譯、發布和測試,從而盡快地發現整合錯誤,讓團隊能夠更快的開發內聚的軟體。
以我經過的專案(假設為a專案)為例進行描述。
首先,解釋下整合。我們所有專案的**都是託管在svn伺服器上。每個專案都要有若干個單元測試,並有乙個所謂整合測試。所謂整合測試就是把所有的單元測試跑一遍以及其它一些能自動完成的測試。只有在本地電腦上通過了整合測試的**才能上傳到svn伺服器上,保證上傳的**沒有問題。所以,整合指整合測試。
再說持續。不言而喻,就是指長期的對專案**進行整合測試。既然是長期,那肯定是自動執行的,否則,人工執行則沒***,而且耗人力。對此,我們有一台伺服器,它會定期的從svn中檢出**,並編譯,然後跑整合測試。每次整合測試結果都會記錄在案。完成這方面工作的就是下面要介紹的jenkins軟體。當然,它的功能遠不止這些。在我們的專案中,執行這個工作的週期是1天。也就是,伺服器每1天都會準時地對svn伺服器上的最新**自動進行一次整合測試。
持續整合的特點
持續整合的作用
上面我們了解了持續整合的知識。既然有這麼多的好處,那我們怎麼樣實現它呢?這就是接下來要介紹的名角:jenkins軟體。
jenkins介紹
jenkins,原名hudson,2023年改為現在的名字,它 是乙個開源的實現持續整合的軟體工具。官方**:
jenkins 能實施監控整合中存在的錯誤,提供詳細的日誌檔案和提醒功能,還能用圖表的形式形象地展示專案構建的趨勢和穩定性。
jenkins特點
易配置:提供友好的gui配置介面;
變更支援:jenkins能從**倉庫(subversion/cvs)中獲取並產生**更新列表並輸出到編譯輸出資訊中;
整合e-mail/rss/im:當完成一次整合時,可通過這些工具實時告訴你整合結果(據我所知,構建一次整合需要花費一定時間,有了這個功能,你就可以在等待結果過程中,幹別的事情);
junit/testng測試報告:也就是用以圖表等形式提供詳細的測試報表功能;
支援分布式構建:jenkins可以把整合構建等工作分發到多台計算機中完成;
檔案指紋資訊:jenkins會儲存哪次整合構建產生了哪些jars檔案,哪一次整合構建使用了哪個版本的jars檔案等構建記錄;
支援第三方外掛程式:使得 jenkins 變得越來越強大;
其它整合工具
其它比較著名的持續整合工具有:cruisecontrol,teamcity,continuum等。
嵌入式軟體整合
據我了解,在嵌入式軟體開發中,很少人有用到持續整合工具。個人覺得最主要的原因是:嵌入試軟體與硬體聯絡比較緊密,很多時候難以滿足持續整合的條件——構建自動化測試。
但我們還是可以有所作為。在設計應用軟體時,把邏輯業務與硬體相關功能區分開來,對邏輯業務部分編寫單元測試,然後做整合測試。
當然,對於小型的嵌入式應用軟體就沒必要做這個整合工作了。
持續整合介紹Jenkins入門
25.1 ci cd介紹 網際網路軟體的開發和發布,已經形成了一套標準流程,假如把開發工作流程分為以下幾個階段 編碼 構建 整合 測試 交付 部署 正如你在上圖中看到,持續整合 continuous integration 持續交付 continuous delivery 和持續部署 continu...
jenkins持續整合
1.部署 wget o etc yum.repos.d jenkins.repo no check certificate wget o etc yum.repos.d jenkins.repo rpm import 2.vi etc sysconfig jenkins 修改埠號為10080 3.v...
Jenkins 持續整合
1 手動構建 jenkins構建成功後的包存放在 var lib jenkins workspace 專案名 target下 2 自動化構建 這裡選擇push事件觸發 前面步驟一樣 區別在於觸發器不同 選擇 build when a change is pushed to gitlab.gitlab...