Upload
-
View
2.068
Download
6
Embed Size (px)
DESCRIPTION
由講者李書豪Abola Lee提供
Citation preview
打造免費的JAVA 專案持續整合環境
李書豪
大綱Introduction - 簡介
Requirement – 環境需求
Build Jobs – 部署專案
Management – 管理實務
Introduction - 簡介
CI ? 持續集成? 可以稍微說明一下嗎?
Introduction
目的:軟體品質提昇
方式:自動化作業
Continuous Integration •持續整合
期望:主動偵測錯誤
Compile
Deploy
Testing
Publish
Introduction
聽起來可不簡單!?但,我需要嗎?
Introduction
何時需要 Jenkins規模 時程 成員 框架 品質
小程式 極小 極短 單人 無 隨便做都很好
功能模組 小 短 單人 少 個人經驗成就品質
整合型系統 中 / 大 中 / 長 單人 / 多人
少 軟體工程
大型專案 大 長 多人 多 科學管理方法 or 崩壞規模越大:進行測試的時間成本高
時程越長:隱含的衝突與錯誤將會級數成長
成員越多:專案運作管理越趨困難
框架越多:升級風險難以評估
使用測試工具縮小範圍
自動化工具偵測衝突
減少成員不必要的作業
自動化工具偵測衝突
Introduction
你提到不少次品質軟體品質不佳時…
會發生什麼事?
分享一個不好的例子
Introduction
快救救我,系統出錯,不能用啦
改一個,錯三個。這是怎麼回事
不用擔心,立馬修復臭蟲
我不知道會影響到其它… ..在我的電腦是正常的……… .
Introduction
Introduction
欠佳的品質造成的影響
好事不出門,壞事傳千里
名聲
客戶信心
客戶信任度
內部信心
你可以開始介紹Jenkins 了嗎 ?
Introduction
官網: http://jenkins-ci.org
授權: MIT License
Jenkins 簡介
Introduction
Jenkins 特色• 安裝簡易• 設定容易• 整合 Email/RSS 通知• 多種測試表報• 套件豐富
600+
Introduction
Requirement - 環境需求
我準備好要使用Jenkins
準備工作有那些?
Requirement
Jenkins Install
1. 官網下載最新版本
2. JDK3. Source Code Management
4. Build Tools
.war Native packageOR
Requirement
Build Jobs – 部署專案
Build Jobs
Build Jobs
建立第一個專案
由 SCM 取回資料
Build Jobs
設定 Build Tools 動作
Build Jobs
建置過程
Build Jobs
建置觸發程序 建置 建置後
動作
安裝模組
更多實用的設定
設定 Build Tools 動作
Build Jobs
我沒有打算進行測試到此為對我有幫助嗎?
我們來看幾種情況吧
Build Jobs
誤將工程版本發佈
Build Jobs
發佈的時間
發佈的版本
呼略更新動作即發佈
Build Jobs
15%
Build Jobs
30%
Build Jobs
30%60%
Build Jobs
30%99%
BUILD FAILED
Build Jobs
不能避免嗎?
給別人做就好了 !!
規律的、簡單的、重覆的、需長時間等待的事務就交給我處理吧
早晚都會碰到
Build Jobs
附錄 SCM with SVN
Build Jobs
Testing – 進行測試Linus's Lawgiven enough eyeballs, all bugs are shallow
足夠多的眼睛,就可讓所有問題浮現
Run Test
Testing
發佈測試報告
*
target/surefire-reports/*.xml
Testing
Testing
我了,只要再加上排程就是自動化測試對吧!?但分支太多時怎麼辦?
是滴,自動化測試完工囉我們稍微提一下分支策略
Testing
Testing
REF:A successful Git branching model http://nvie.com/posts/a-successful-git-branching-model/
masterrelease branches
develop
分支內容測試 完整專案測試
測試覆蓋度What ?
SourceCode Test Code
Testing
Code Coverage
測試覆蓋度Why ?
• 量化品質指標• 檢視尚未測試片段
Testing
測試覆蓋度When ?
• 要有足夠的單元測試• 由 CI Server 執行
• 不要太早投入
Testing
使用 Cobertura
Testing
How ?
在專案中加入 cobertura
http://mojo.codehaus.org/cobertura-maven-plugin/plugin-info.html
Maven: pom.xml 中增加 cobertura plugin
Testing
執行 cobertura
cobertura:cobertura
coverage.xml
Testing
cobertura plugin
**/target/site/cobertura/coverage.xml
Testing
Coverage report
Testing
Coverage report
Testing
Coverage report
附錄 Ant build.xml
• 使用 Ant 執行 junit + cobertura https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference
Management – 管理實務
Management
CI 執行重點• SCM 是唯一的資料的來源• 自動化作業 build / self testing• 讓大家知道專案的現況 – 快速反應
累積的實力
Build 數量控管• 適量的建置數量控管,讓運行順暢
Management
Javadoc
Management
權限控管• 設用啟用全域安全性
Management
權限控管
Management
權限控管
Management
權限控管
Management
設定 Email 通知
Management
備份 Jenkins
• 利用 ThinBackup 備份你的設定檔
只備份設定檔,夠嗎?
當然不夠!你應該尋求更好的方式例如 crontab
Thank You
那麼大的一個軟體,幫你做到最精準的管理所有的優點它全部集中
使用者對 Jenkins ,心裏的撼動度一定是非常強烈的
Jenkins 的好,將來的專案品質會說話
( 誤 )