Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
給忙碌開發者的Android開發流程自動化簡介
Search
Elvis Lin
October 15, 2016
Programming
18
3.1k
給忙碌開發者的Android開發流程自動化簡介
簡介開發者為什麼需要 Continuous Integration,以及在 Android 開發上需要實踐 Continuous Integration 的基本步驟 #JCConf2016
Elvis Lin
October 15, 2016
Tweet
Share
More Decks by Elvis Lin
See All by Elvis Lin
Protect Users' Privacy in iOS 14
elvismetaphor
0
46
Dubugging Tips and Tricks for iOS development
elvismetaphor
0
49
Strategies of Facebook LightSpeed project
elvismetaphor
0
64
Background Execution And WorkManager
elvismetaphor
2
480
作為一個跨平台的 Mobile App 開發者,從入門到放棄!?
elvismetaphor
2
490
Dependency Injection for testability of iOS app
elvismetaphor
1
1.4k
Briefly Introduction of Kotlin coroutines
elvismetaphor
1
280
MotionLayout Brief Introduction
elvismetaphor
1
320
Chapter 10. Pattern Matching with Regular Expressions
elvismetaphor
0
38
Other Decks in Programming
See All in Programming
Immutable ActiveRecord
megane42
0
130
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
5.1k
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
360
動作確認やテストで漏れがちな観点3選
starfish719
6
1k
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
550
Amazon S3 TablesとAmazon S3 Metadataを触ってみた / 20250201-jawsug-tochigi-s3tables-s3metadata
kasacchiful
0
100
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
チームリードになって変わったこと
isaka1022
0
190
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
1
170
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
120
Formの複雑さに立ち向かう
bmthd
1
720
Introduction to kotlinx.rpc
arawn
0
630
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
510
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
A Philosophy of Restraint
colly
203
16k
Bash Introduction
62gerente
610
210k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Unsuck your backbone
ammeep
669
57k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Transcript
妔盜繓樄咳ᘏጱ Android樄咳窕纷ᛔ㵕玕墋Օ Elvis Lin 2016/10/15
Agenda • 樄咳ᘏૡ֢碻䨝蝽کጱࢯ櫞 • 瞱媲褸౮ҁContinuous Integration҂101 • 禊蝄ℂ樄咳牏翥捌牏介手牏۱ጱ螂纷Ӿ牧ݱ圵ݢ 犥ֵአጱૡٍ蚤ᒽኼ •
ٌ犢ፘ橕ጱૡٍ
About Me Elvis Lin Mobile Application Developer • Github: https://github.com/elvismetaphor
• Blog: http://blog.elvismetaphor.me
盜繓樄咳ᘏጱӞॠ • 狕硬纷ୗҁࢩ傶憒໒݈虋ԧ҂ • 翥捌०硻ҁࢩ傶֦㴄㴄狕硬ԧ纷ୗ҂ • ತ BUGҁࢩ傶֦㴄㴄狕硬ԧ纷ୗ҂ • ᯿蕦Ӥ蝄㵕֢
• 奰ෝݢ犥樄ত䌃碝ۑ胼ԧ • ۑ胼䌃کӞ聲樿统簁ᥝ姴盪ڊӞ㮆粚 • ꔇꔇ
䌃嘨综ӣդ牧瞟恝藮Ӟኞ!?
樄咳ᘏጱ෭ଉ 憒㴟 樄咳 ୌᗝ 介手 咳㬙 粚ᓕቘ Issue Tracking 翥捌
戔ਧ
樄咳ᘏጱࢯह • ℂڡত䯤మک叨ߝ۱咳㬙ጱ窕纷盄裾 • Ԫ眐ፘ吚ጱ耆卓 • 樄咳ᘏጱԆᥝ犨率䛑扗ฎ樄咳碝ۑ胼
But, 蝡ฎӞ㮆 Bot ጱ碻դ
䛑扗珿አૡٍ 褔犵樄咳ᘏጱ揗砾
https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/
Every time they got a problem they found that they
were still repeating what they were doing. They would write a tool for it, automate it. — Edmond Lau
瞱媲碉ݳҁCI҂
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
樄咳
ૡཿ珿ٌԪ牧ضڥٌ瑊
珿አ Android Studio • ԧ薹ଉአጱ盠ഠ棎 • 狕硬戔ਧ䲆䔶玕樄咳絑ह • 㶓ڊ戔ਧ䲆 •
疥戔ਧ䲆硯獈粚ᓕቘ羬翄
None
㶓獈膏㶓ڊSettings
粚矒ګ
Git • 獤碂ୗጱ粚矒ګ羬翄 • Gitlab — ࣁᛔ૩ጱԆ秚Ӥ礍戔 Git Server •
GitHub — 娄Ӥጱܻত嘨դᓕ๐率
GitHub • 纷ୗ嘨ጱ粚ᓕቘ • կ物۱ೡᛔ㵕ኞ౮ጱ牏䟖አ觊Markdown承ጱREADME 䲆礯 • 㺔氂蝍擽羬翄ҁݶ碻ݢአෝۑ胼襑穩҂ • Wiki
• 犨率ڜ蔭 • ኚ粬瑽
Zenhub 疥 Github Issues 犥̿፡礂̀ොୗ ᓕቘ
None
None
None
瞱媲碉ݳ๐率
ଉ憎ጱ瞱媲碉ݳ๐率 • Jenkins — ࣁᛔ૩ጱԆ秚Ӥ礍戔瞱媲碉ݳ֑๐瑊 • Travis CI — 娄Ӥጱ瞱媲碉ݳ֑๐瑊ҁ犖磪㻌秚粚҂
Jenkins • ݢ犥ਧ碻礬硁粬ਧ礿կጱ藉咳㬵䁆ᤈ粬ਧጱ犨率 • ᛔ㵕玕翥捌膏介手ጱ㵕֢ • 磪战ग़ plugins ݢ犥蚤ٌ犢๐率Ӟݶֵአ •
磪 Web ጱ瑽୵玕戔ਧՕᶎ
Travis CI
ࣁ Travis CI 翥捌 Android
ୌᗝ/翥捌
Gradle • ℂ Command Line ک IDE ک CI Server
᮷磪ඪൔ • Groovy Script (चෝ Groovy 戔懯ጱ DSL) • Product Flavour • Powerful Dependencies Management
ࣁ犤ڜ翥捌 Android • Windows > gradlew.bat assembleDebug • Mac $
chmod +x gradlew $ ./gradlew assembleDebug • 䁆ᤈᛔ懪ጱ犨率 $ ./gradlew tasks
介手
FIRST • Fast • Independant • Repeatable • Self Validation
• Timely
The AAA Pattern • Arrange • Act • Assert
ଉአጱ介手 Library • JUnit 4 • Android Test Support Library
• Robolectric • Espresso • Mockito
JUnit • 㻌ز介手 • ݝ胼朼䌘奈 Java ጱ API
Android Testing Support Library • ׀ Android API ጱ介手 •
襑ᥝࣁ䋿誢秚瑊秇硈瑊Ӥ䁆ᤈ
Robolectric • 䁆ᤈ Android API ፘ橕ጱ㻌ز介手ࣁ襎脲Ӥ • 䁆ᤈ蝧ଶ斃盠
Espresso • UI 介手ጱૡٍ • ݢ犥奾ݳ Cucumber 䁆ᤈ涢硩介手
Mockito • Mock Framework
Clean Architecture https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
CleanӞ膢ฎ瞲牧դ嘨犥၇莡ጱ୵制狅硁 Ӟਧጱ狅蚅憒㳷ᤩ㴟獤傶ग़䍅物獉䍅䌘ෝ क़䍅Ӟ篷ಅᎣ牐蝡疰ޱ茐狅蚅ݝ胼ኧक़ ݻ獉牐
咳㬙
Grade Play Publisher Plugin • Ӟ㮆 Gradle ጱ plugin牧翥捌螂纷碉ݳ臑অ •
虏 APK Ӥ㯽ک Google Play ጱ螂纷ݢ犥㷢碍玕
Crashlytic • 痀ෝ Fabric Mobile Development Kits ጱӞ蟂犩 • 蝍擽ֵአᘏ咳ኞጱ梊藮
• 叨ኞ梊藮䁭ޞ • 朼䌘犋ݶጱ秚ࣳ牏碻樌牏纷ୗ嘨֖ᗝ֢ڊ獤觊
None
者奾 • Ӟ㮆叨ߝکᥝݢ犥咳㬙妔ֵአᘏԏ獮牧ᛗ۱珀樄咳牏 ୌᗝ/翥捌牏介手ጱ㵕֢ • ᛔ㵕玕覍໐ஞጱૡ֢牧䌕ဳ樄咳ۑ胼 • 脻玕ྯ㮆㵕֢牧虏犋ݶጱ樄咳Ո㹓ݢ犥وՁፘݶጱ 戔ਧ
㷢ᘍ䨗罕
氎ܻێ纷ୗԏᐟ 膏֦ݶࣁ