Continuous 
Integration
iOS developer 
http://about.me/gliyao 
Liyao Chen
Why we sluggish? 
Manual 
Unnecessary 
Opaque 
Feedback in slowly 
Mistake 
Integration hell
Review
功能做到哪了? 
什麼時候可以測? 
最新版在哪下載? 
這⼀一版哪些功能可以測? 
這10個Ticket哪些可以測?
你問的是哪⼀一個功能? 
還沒有做完就在測 
不是都有寄email嗎? 
你可以看ticket阿 
怎麼⼜又要加⼈人了?
Gap 
發佈不明確產⽣生誤會 
功能, 時間, 地點, 範圍 
10個issue中哪些可以測? 持續被中斷
Gap 
發佈不明確產⽣生誤會 
功能, 時間, 地點, 範圍 
10個issue中哪些可以測? 持續被中斷 
看不件進度很不安 花很多時間在 
Content switch
TestFlight 
Beta Testing On The Fly 
Release note 
Access 
Test team manage
Release Note? 
新建⽴立實作中已解決已關閉 
#13 
#12 
#11 
#14 
#5
新建⽴立實作中已解決已關閉 
#13 
#12 
#11 
#14 
#5 
Release Note?
新建⽴立實作中已解決已關閉 
#13 
#12 
#11 
#14 
#5 
Release Note?
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#14 
#5 #13 #11 
我要驗收哪些?
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#14 
#5 #13 #11 
v1 Release Note 
#11 bug fixed - 
#13 bug fixed -
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#14 
#5 #13 #11 
先關了驗過的 
v1 Release Note 
#11 bug fixed - 
#13 bug fixed -
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#14 
#5 
怎麼還有⼀一個? 可能是 
1. RD忘了加在Release Note 
2. PM驗收忘記關 
3. RD沒做完就丟給PM 
4. … etc.
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#14 
#5 
把#5踢回給RD
Release Note? 
新建⽴立實作中已解決已關閉 
#12 
#5 
#14 
把#5踢回給RD 
繼續下⼀一回合
Dev 
Without CI 
commit pull 
check issue 
report issue 
Dev 
code analysis 
unit test 
build 
release note
Jenkins 
Pull code from repository 
Code analysis 
Coding style check 
Unit test 
Automate the build 
Generate release note 
Deployment
Why Jenkins 
RSS/Email notification 
⽀支援分散式架構 
⼤大量豐富的套件 
iOS & Android support
Dev 
With CI (Jenkins) 
commit pull 
check issue 
report issue 
code analysis 
unit test 
build 
release note
Dev 
Jenkins job for iOS 
commit pull 
report issue 
check 
code analysis 
unit test 
build 
release note
Pull from repository
Unit test 
Build & Archive
Upload to TestFlight
Dev 
Jenkins job for iOS 
commit pull 
report issue 
check 
code analysis 
unit test 
build 
release note
Testing is spec
Testing is memory 
If you can’t remember how you die(crash) last time. 
How to evolute your software?
About testing is spec 
Everyone can read test. 
Change spec with pull request. 
Fix issue with new test. 
If API testing works means all private methods works too. 
Database should be the part of testing. 
Back-End API Testing Front-End
See you 
next round
Reference 
http://kevjenkins.blogspot.tw 
http://www.dotblogs.com.tw/hatelove/archive/2011/12/25/ 
introducing-continuous-integration.aspx 
http://ithelp.ithome.com.tw/question/10102931 
http://gliyao.logdown.com/posts/2014/01/18/software-talk-about- 
test-driven-development-test-driven-development-i

Continuous Integration