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