63
打打打打打 JAVA 打打打打打打打打 打打打

打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

  • Upload
    -

  • View
    2.068

  • Download
    6

Embed Size (px)

DESCRIPTION

由講者李書豪Abola Lee提供

Citation preview

Page 1: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

打造免費的JAVA 專案持續整合環境

李書豪

Page 2: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

大綱Introduction - 簡介

Requirement – 環境需求

Build Jobs – 部署專案

Management – 管理實務

Page 3: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Introduction - 簡介

Page 4: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

CI ? 持續集成? 可以稍微說明一下嗎?

Introduction

Page 5: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

目的:軟體品質提昇

方式:自動化作業

Continuous Integration •持續整合

期望:主動偵測錯誤

Compile

Deploy

Testing

Publish

Introduction

Page 6: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

聽起來可不簡單!?但,我需要嗎?

Introduction

Page 7: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

何時需要 Jenkins規模 時程 成員 框架 品質

小程式 極小 極短 單人 無 隨便做都很好

功能模組 小 短 單人 少 個人經驗成就品質

整合型系統 中 / 大 中 / 長 單人 / 多人

少 軟體工程

大型專案 大 長 多人 多 科學管理方法 or 崩壞規模越大:進行測試的時間成本高

時程越長:隱含的衝突與錯誤將會級數成長

成員越多:專案運作管理越趨困難

框架越多:升級風險難以評估

使用測試工具縮小範圍

自動化工具偵測衝突

減少成員不必要的作業

自動化工具偵測衝突

Introduction

Page 8: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

你提到不少次品質軟體品質不佳時…

會發生什麼事?

分享一個不好的例子

Introduction

Page 9: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

快救救我,系統出錯,不能用啦

改一個,錯三個。這是怎麼回事

不用擔心,立馬修復臭蟲

我不知道會影響到其它… ..在我的電腦是正常的……… .

Introduction

Page 10: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Introduction

欠佳的品質造成的影響

好事不出門,壞事傳千里

名聲

客戶信心

客戶信任度

內部信心

Page 11: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

你可以開始介紹Jenkins 了嗎 ?

Introduction

Page 12: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

官網: http://jenkins-ci.org

授權: MIT License

Jenkins 簡介

Introduction

Page 13: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Jenkins 特色• 安裝簡易• 設定容易• 整合 Email/RSS 通知• 多種測試表報• 套件豐富

600+

Introduction

Page 14: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Requirement - 環境需求

Page 15: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

我準備好要使用Jenkins

準備工作有那些?

Requirement

Page 16: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Jenkins Install

1. 官網下載最新版本

2. JDK3. Source Code Management

4. Build Tools

.war Native packageOR

Requirement

Page 17: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Build Jobs – 部署專案

Build Jobs

Page 18: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Build Jobs

建立第一個專案

Page 19: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

由 SCM 取回資料

Build Jobs

Page 20: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

設定 Build Tools 動作

Build Jobs

Page 21: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

建置過程

Build Jobs

建置觸發程序 建置 建置後

動作

安裝模組

更多實用的設定

Page 22: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

設定 Build Tools 動作

Build Jobs

Page 23: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

我沒有打算進行測試到此為對我有幫助嗎?

我們來看幾種情況吧

Build Jobs

Page 24: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
Page 25: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

誤將工程版本發佈

Build Jobs

Page 26: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

發佈的時間

發佈的版本

呼略更新動作即發佈

Build Jobs

Page 27: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

15%

Build Jobs

Page 28: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
Page 29: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

30%

Build Jobs

Page 30: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
Page 31: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

30%60%

Build Jobs

Page 32: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
Page 33: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

30%99%

BUILD FAILED

Build Jobs

Page 34: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

不能避免嗎?

給別人做就好了 !!

規律的、簡單的、重覆的、需長時間等待的事務就交給我處理吧

早晚都會碰到

Build Jobs

Page 35: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

附錄 SCM with SVN

Build Jobs

Page 36: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Testing – 進行測試Linus's Lawgiven enough eyeballs, all bugs are shallow

足夠多的眼睛,就可讓所有問題浮現

Page 37: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Run Test

Testing

Page 38: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

發佈測試報告

*

target/surefire-reports/*.xml

Testing

Page 39: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Testing

Page 40: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

我了,只要再加上排程就是自動化測試對吧!?但分支太多時怎麼辦?

是滴,自動化測試完工囉我們稍微提一下分支策略

Testing

Page 41: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

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 李書豪

測試覆蓋度What ?

SourceCode Test Code

Testing

Code Coverage

Page 43: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

測試覆蓋度Why ?

• 量化品質指標• 檢視尚未測試片段

Testing

Page 44: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

測試覆蓋度When ?

• 要有足夠的單元測試• 由 CI Server 執行

• 不要太早投入

Testing

Page 45: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

使用 Cobertura

Testing

How ?

Page 46: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

在專案中加入 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 李書豪

執行 cobertura

cobertura:cobertura

coverage.xml

Testing

Page 48: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

cobertura plugin

**/target/site/cobertura/coverage.xml

Testing

Page 49: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Coverage report

Testing

Page 50: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Coverage report

Testing

Page 51: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Coverage report

Page 52: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

附錄 Ant build.xml

• 使用 Ant 執行 junit + cobertura https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

Page 53: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Management – 管理實務

Page 54: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Management

CI 執行重點• SCM 是唯一的資料的來源• 自動化作業 build / self testing• 讓大家知道專案的現況 – 快速反應

累積的實力

Page 55: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Build 數量控管• 適量的建置數量控管,讓運行順暢

Management

Page 56: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Javadoc

Management

Page 57: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

權限控管• 設用啟用全域安全性

Management

Page 58: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

權限控管

Management

Page 59: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

權限控管

Management

Page 60: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

權限控管

Management

Page 61: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

設定 Email 通知

Management

Page 62: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

備份 Jenkins

• 利用 ThinBackup 備份你的設定檔

只備份設定檔,夠嗎?

當然不夠!你應該尋求更好的方式例如 crontab

Page 63: 打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪

Thank You

那麼大的一個軟體,幫你做到最精準的管理所有的優點它全部集中

使用者對 Jenkins ,心裏的撼動度一定是非常強烈的

Jenkins 的好,將來的專案品質會說話

( 誤 )