版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、【精品文檔】如有侵權,請聯(lián)系網(wǎng)站刪除,僅供學習與交流jenkins介紹ppt初稿.精品文檔.持續(xù)集成Continuous integration簡介(持續(xù)集成是什么).持續(xù)集成源于極限編程(XP),是一種軟件實踐,軟件開發(fā)過程中集成步驟是一個漫長并且無法預測的過程。集成過程中可能會爆發(fā)大量的問題,因此集成過程需要盡可能小而多,實際上持續(xù)集成講的是不斷的去做軟件的集成工作。持續(xù)集成作用(使用持續(xù)集成和不適用持續(xù)集成的區(qū)別)l 場景一、某項目最后做模塊集成的時候,發(fā)現(xiàn)很多接口都不通,甚至有的模塊連安裝包都沒有。l 場景二、沒有可用的軟件包,需要人手動去編譯打包最新的代碼。l 場景三、搭建測試環(huán)境的
2、時候需要手動去解壓包然后一系列拷貝修改配置等等。l 場景四、團隊成員或者teamleader想了解當前項目的狀態(tài),該如何去展示這些信息。持續(xù)集成就是用來解決以上問題,它的價值主要在于減少重復的步驟,降低項目的風險,任何時間任何地點生成可用的軟件,增強項目的可見性等。持續(xù)集成實踐(持續(xù)集成怎么做)持續(xù)集成,最簡單的形式是包括一個監(jiān)控版本控制系統(tǒng)(SVN等等)變化的工具。當變化被發(fā)覺時,這個工具可以自動的編譯并測試你的應用。下面是持續(xù)集成中一些良好的實踐l 維護一個單一的代碼庫l 使構建自動化l 使構建自測試l 每人每天都向主線提交代碼l 每次提交都應在集成機上進行構建l 快速構建l 使任何人都能
3、輕易獲得可執(zhí)行文件l 人人都能看到正在發(fā)生什么l 自動化部署(上面是持續(xù)集成介紹,下面引出jenkins)jenkins簡介持續(xù)集成是一種實踐,而jenkins可以幫助團隊去盡量好的去完成這種實踐l Jenkins是基于java語言的開源持續(xù)集成工具,提供了一套非常易用的用戶界面l jenkins類似于eclipse,基于插件化的架構,方便功能的擴展,目前有幾百個現(xiàn)成插件可以使用,這些插件涵蓋從版本控制、構建工具、代碼質量、構建通知、集成外部系統(tǒng)、UI定制、游戲等等各個方面安裝jenkinsjenkins默認提供了三種安裝方式1.最簡單的方式是通過java web的啟動方式,訪問2.下載可執(zhí)行
4、的war包啟動jenkins3.部署到tomcat中(推薦)一個最簡單的jenkins應用在介紹該應用前,先提及兩個非常重要的概念l job一個完整的構建可能需要很多步驟,每個步驟都稱作是一個job。一個 job是一個專一做某事的步驟,比如編譯,測試,打包,部署等等。jenkins中默認提供了四種不同類型的jobl Jenkins家目錄jenkins為每個項目都會建立一個workspace目錄,源碼會下載到這個目錄下,然后編譯等動作都在該目錄中進行。下面是一個jenkins的家目錄結構jobs下面按照項目的維度進行劃分,每個項目下有builds和workspace目錄,其中源碼會保存在各個項目
5、的workspace中,builds目錄包含構建的歷史記錄。假設項目基于svn控制系統(tǒng),并且有簡單的編譯打包腳本。該應用要實現(xiàn)的功能是檢測到代碼提交后觸發(fā)構建動作,調用已有的編譯打包腳本生成可用的軟件包。(上面的配置步驟就不列出來了,想講的話可以大概講講也可以截圖)這個最簡單的jenkins應用執(zhí)行的原理是應用svn的插件,當有代碼提交的時候被插件檢測到,jenkins將源碼下載到本地的workspace(包括編譯打包腳本),此時jenkins調用本地項目源碼中的編譯打包腳本(在配置job的時候指定)。這就是最簡單的一個流程,復雜的流水線構建都是基于此而完善的。觸發(fā)構建的條件除了上面提到的提交
6、構建,能夠觸發(fā)構建的方式還有以下幾種l 隔某段時間構建一次,比如隔一小時自動構建一次。l 定時輪詢SCM的改變去觸發(fā)構建,比如隔一小時去輪詢一次svn是否有更改,有的話觸發(fā)構建,否則不做處理。l 手動構建自動化測試Jenkins不僅僅能做源碼編譯打包的動作,Jenkins中有很多插件可以方便的實現(xiàn)自動化測試。l 單元測試l 功能測試l 集成測試l 性能測試l 驗收測試進行自動化測試僅僅是一部分功能,關于測試結果的收集和展示jenkins也能夠做到,并且是以圖形化的方式展示出來。只需要告訴jenkins測試結果在哪里,它會自動去取,并生成可視化的圖形。另外一種關于自動化測試的是代碼的覆蓋率,je
7、nkins同樣支持對代碼覆蓋率的統(tǒng)計。上圖中的自動化測試給出詳細的失敗列表通知持續(xù)集成講究的是快速的發(fā)現(xiàn)問題,盡早的發(fā)現(xiàn)問題,因此當出現(xiàn)問題(編譯失敗,用例通過率不足等)時需要有通知的手段讓相關的人員了解情況。Jenkins提供了豐富的通知插件,最常用的是Email通知,當然除此之外還有l(wèi) 即時通訊軟件l IRCl 桌面通知代碼質量代碼質量的度量同樣也非常重要,比如圈復雜度,checkstyle,findbugs等等的靜態(tài)檢查。這些檢查都可以使用jenkins的插件完成,jenkins負責收集質量結果,做圖形展示,很方便開發(fā)人員根據(jù)質量結果進行代碼重構。自動化部署自動化部署目的就是減少不必要的
8、時間。最簡單的是自己實現(xiàn)部署的腳本然后供jenkins去調用,但是對于復雜的部署需求,自己實現(xiàn)腳本恐怕有些力不從心,我們可以借助插件完成Puppet或者Chef。對于數(shù)據(jù)庫的自動化部署同樣有插件供我們選擇比如Liquibase。Jenkins的高級功能l 高級構建參數(shù)構建類似普通的構建任務,但是功能更強大。可以為本次構建指定一些參數(shù),這些參數(shù)可能會在某幾個構建中被使用到,參數(shù)的傳遞由jenkins去維護。由此一個普通的構建通過獲取不同的參數(shù)能夠表現(xiàn)的更多樣化。更強大的是多配置構建,類似參數(shù)構建,提供一個配置列表,比如針對不同的數(shù)據(jù)庫或者瀏覽器的列表,jenkins會自動的執(zhí)行不同場景下的測試,
9、這些測試可以并行的執(zhí)行,從而大大的減少了測試的時間。l 分布式構建jenkins也支持master/slave的分布式方式,master主要用來分發(fā)構建任務給slave,實際的執(zhí)行在slave中。Master監(jiān)控slave的狀態(tài),并收集展示構建的結果。但是在實際情況中master同樣可以執(zhí)行構建任務。可以通過master指定某個項目總是運行在特定的slave或者某類slave或者簡單的任何一臺slave中。分布式構建中,jenkins提供了對代理節(jié)點的監(jiān)控,如果發(fā)現(xiàn)某臺slave不可用,則會主動將其下線,避免后續(xù)的任務被分配到該節(jié)點上。l 流水線所謂的流水線很容易理解,就是整個構建流程按照一定
10、的流程去構建。當你的構建步驟變得復雜的時候,并且并行和串行都有的時候,通常就不太容易管理了。流水線能夠方便的定義某個構建后要觸發(fā)的下一個構建,或者同時觸發(fā)的后面幾個構建。當然也能夠等待某幾個構建執(zhí)行完畢后去執(zhí)行某一個構建。其中TheDependency Graph View插件能夠幫助你分析構建任務之間的關系。并且如果涉及到構建的資源競爭,也提供了鎖的功能。l jenkins安全管理jenkins中有多個維度來管理安全,一個是安全域,一個是授權。安全域能夠識別出合法的用戶,授權則是針對合法的用戶給出不同的權限。最簡單的授權是允許所有的合法用戶做任何事情。最簡單的管理用戶賬號的方式是使用jenk
11、ins內建的數(shù)據(jù)庫,但是也能夠和其他的用戶管理系統(tǒng)做集成。針對授權有好多種不同的策略,比如基于項目,基于角色。另外一種重要的功能是審計,也就是記錄用戶的操作日志。有兩種插件能夠實現(xiàn)該功能。Audit Trail插件能夠記錄用戶的操作動作。JobConfigHistory插件能夠存儲前一個版本系統(tǒng)的變化和job的配置文件。后面的內容是可選的,可以講也可以不講??偨Y:持續(xù)集成一般會經(jīng)歷一下幾個階段l 階段一沒有構建服務器最初的階段,團隊沒有任何一種構建服務器。軟件由開發(fā)人員手動的去構建,盡管使用的是Ant腳本或者類似的東西。源碼可能存儲在一個中央源碼倉庫中,但是開發(fā)者未必要定期的提交更改后的代碼。
12、有時候在一個版本要發(fā)布的時候,開發(fā)人員手動的去集成這些變化,這是一個非常痛苦的過程。l 階段二夜間的構建在這個階段,團隊有一臺構建服務器,并且定時的去執(zhí)行構建任務(通常在夜里)。因為并沒有一個可靠的可重復的單元測試,所以這里的構建通常只是代碼編譯。如果有自動化測試,也并沒有強制集成到構建階段,也許根本不會正確的運行。但是現(xiàn)在開發(fā)人員已經(jīng)能夠有規(guī)律的定期提交代碼了,至少在每天下班前。如果一個開發(fā)人員提交的代碼和另外一個人有沖突,構建服務器會在第二天的早上將告警通過郵件發(fā)出來。然而,整個團隊只是將構建服務器作為一個參考如果構建掛了,他們并沒有意識去立即把它修復好,因此構建可能會在一段時間內不可用。
13、l 階段三夜間構建和基本的自動化測試團隊現(xiàn)在已經(jīng)更加嚴格的使用持續(xù)集成和自動化測試了。構建服務器被配置為當有代碼提交的時候便會執(zhí)行構建,團隊的成員也可以很方便的看到是哪些代碼中的變化引起了構建,這些變化引發(fā)了什么問題。除此之外,構建腳本編譯應用并且自動的執(zhí)行一些單元和集成測試。對于郵件,構建服務器能夠更加積極主動的去呈現(xiàn)構建中出現(xiàn)的問題。失敗的構建也能夠被快速的修復。l 階段四進入度量自動化的代碼質量和覆蓋率度量也能夠執(zhí)行了,并且可以幫助評估代碼的質量和測試的相關性和有效性。代碼質量的構建也能夠為應用生成API文檔。所有的這些幫助團隊去維護高質量的代碼。團隊中可以設置一個醒目的屏幕去時刻展現(xiàn)項
14、目的狀態(tài)。l 階段五更嚴格的測試持續(xù)集成的好處是非常接近立體的測試?,F(xiàn)在,測試驅動開發(fā)(TDD)被廣泛的應用,對于自動構建的結果更加的有信心。對于應用程序不再是簡單的編譯和測試,而是會繼續(xù)更復雜的端到端測試和性能測試。l 階段六自動化驗收測試和自動化部署驗收測試驅動開發(fā)(Acceptance-Test Driven Development)在這個階段被應用,引導開發(fā)的工作并且提針對項目的狀態(tài)提供一個高層次的報告。這些自動化測試使用行為驅動測試(Behavior-Driven Development)和驗收測試驅動開發(fā)工具,并且從商業(yè)的角度生成開發(fā)人員不理解的報告。因為這些高層次的測試在項目的早期開展,因此能夠清晰的指出,哪些特性已經(jīng)完成了,哪些需要后面去完成。每當代碼有改變或者夜里,應用程序被自動的部署到QA的測試環(huán)境來完成測試。當測試人員完成了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度污水運輸車輛駕駛培訓及考核合同
- 二零二五年度電商直播主播跨行業(yè)合作合同
- 2025年度二零二五年度炊事員團隊協(xié)作聘用合同書
- 二零二五年度貨車司機貨運業(yè)務代理合同
- 幼兒園飛機基礎知識培訓
- 帶狀孢疹繼發(fā)面神經(jīng)炎的護理
- 新開的網(wǎng)吧活動方案
- 2025承包土地使用權合同
- 水產(chǎn)公司章程范本
- 2025新疆棉花買賣合同范本
- 2025新北師大版英語七年級下單詞表
- 《智慧城市概述》課件
- 2024年北京市家庭教育需求及發(fā)展趨勢白皮書
- GB/T 45089-20240~3歲嬰幼兒居家照護服務規(guī)范
- 中建道路排水工程施工方案
- 拆機移機合同范例
- 智能停車充電一體化解決方案
- 化學驗室安全培訓
- 天書奇譚美術課件
- GB/T 18916.15-2024工業(yè)用水定額第15部分:白酒
- 部編四年級道德與法治下冊全冊教案(含反思)
評論
0/150
提交評論