Gradle PluginとCIと俺

44
Gradle PluginCIと俺 kyobashi.dex #3

Transcript of Gradle PluginとCIと俺

Page 1: Gradle PluginとCIと俺

Gradle PluginとCIと俺

kyobashi.dex #3

Page 2: Gradle PluginとCIと俺

About Me

Shinobu Okano

@operandoOS

Mercari, Inc.

Page 3: Gradle PluginとCIと俺

CIしてますか??

Page 4: Gradle PluginとCIと俺

CIで継続的に

テストを回す??

Page 5: Gradle PluginとCIと俺

そんな意識高い

話じゃない!!

Page 6: Gradle PluginとCIと俺

Travis CI

https://travis-ci.org/

Page 7: Gradle PluginとCIと俺

俺が知ってるCIサービスの微妙なところ

• 記述してる処理が正常に終わったか or 失敗したかの通知しかこない

• ゴニョゴニョすれば細かいことはできるだろうけど難しそう...

Page 8: Gradle PluginとCIと俺

何がしたかったか

• GradleのTask単位での出力結果がほしい

• その結果をSlackとかに通知してほしい

• 人力でやるのは辛いのでCIでよしなな間隔でやってほしい

Page 9: Gradle PluginとCIと俺

GradleからSlackに通知したい!

• できます!

• gradle-slack-pluginならね!

Page 10: Gradle PluginとCIと俺

gradle-slack-plugin(original)

https://github.com/Mindera/gradle-slack-plugin

Page 11: Gradle PluginとCIと俺

gradle-slack-plugin (魔改造)

https://github.com/operando/gradle-slack-plugin

Page 12: Gradle PluginとCIと俺

gradle-slack-plugin setting

slack { url "slack web hock url" // 出力を通知したいtaskを書く

dependsOnTasks 'dependencyUpdates' title 'gradle slack plugin title' enabled true or false }

Page 13: Gradle PluginとCIと俺

じゃ何を通知するか

• 定期的にSlackに通知して意味あるもの

• 定期的に見ておいたほうがいいもの

• 和むもの

Page 14: Gradle PluginとCIと俺

gradle-versions-plugin

https://github.com/ben-manes/gradle-versions-plugin

Page 15: Gradle PluginとCIと俺

gradle-versions-plugin

“Gradle plugin to discover dependency updates”

Page 16: Gradle PluginとCIと俺

gradle-versions-plugin

gradle dependencyUpdates

Page 17: Gradle PluginとCIと俺

gradle-versions-plugin

Page 18: Gradle PluginとCIと俺

gradle-versions-plugin

Page 19: Gradle PluginとCIと俺

gradle-slack-plugin + gradle-versions-plugin + CI• CI上でdependencyUpdates taskを実行

• dependencyUpdates taskの出力結果をSlackに通知する

• 簡単!!

Page 20: Gradle PluginとCIと俺

• 実行するタイミングは細かく設定可能

• Pull RequestをMerge or masterにPushされた時のみ実行とか…

• これはCIサービス側の設定で楽にできる

• Travis CIの場合

• - if [ “$TRAVISPULL_REQUEST" == "false" ]; then ./gradlew dependencyUpdates; fi

gradle-slack-plugin + gradle-versions-plugin + CI

Page 21: Gradle PluginとCIと俺

Sample

https://github.com/operando/AndroidGradleCiSample

Android Gradle Ci Sample

Page 22: Gradle PluginとCIと俺

Demo

Page 23: Gradle PluginとCIと俺

こんな感じで通知くるよー

Page 24: Gradle PluginとCIと俺

Productionで

使ってるぞ!!

Page 25: Gradle PluginとCIと俺

継続的

Version Check!!

Page 26: Gradle PluginとCIと俺

• dexcount-gradle-pluginでメソッド数カウントして通知する

• gradle-android-apk-size-pluginでapkのサイズ調べて通知する

などなど…

その他に…

Page 27: Gradle PluginとCIと俺

可能性は無限大

Page 28: Gradle PluginとCIと俺

応用編

Page 29: Gradle PluginとCIと俺

これ覚えてますか?

Page 30: Gradle PluginとCIと俺

Gradle Plugin と

Twitter と

ズン ドコ キ・ヨ・シ!shibuya.apk #6

http://www.slideshare.net/shinobuokano7/gradle-plugintwitter-59637926

Page 31: Gradle PluginとCIと俺

ズンドコ キ・ヨ・シ!

Page 32: Gradle PluginとCIと俺

gradle-zundokokiyoshi-plugin

https://github.com/operando/gradle-zundokokiyoshi-plugin

Page 33: Gradle PluginとCIと俺

gradle-zundokokiyoshi-plugin

gradle zungokokiyoshi

Page 34: Gradle PluginとCIと俺

gradle-zundokokiyoshi-plugin

Page 35: Gradle PluginとCIと俺

どうするか

• CI上でzungokokiyoshi taskを実行

• zungokokiyoshi taskの出力結果をSlackに通知する

• 簡単!!

Page 36: Gradle PluginとCIと俺

Demo

Page 37: Gradle PluginとCIと俺

こんな感じで通知くるよー

Page 38: Gradle PluginとCIと俺

さらにらに...

Page 39: Gradle PluginとCIと俺

gradle-twitter-plugin

https://github.com/operando/gradle-twitter-plugin

Page 40: Gradle PluginとCIと俺

gradle-twitter-plugin

Gradleからツイートできる

素晴らしいPlugin!!

Page 41: Gradle PluginとCIと俺

どうするか

• CI上で....

Page 42: Gradle PluginとCIと俺

と思ったけど...

• なんかPluginの作りがあれであれなのでできなそう

• 作ったやつのセンスが疑われる

Page 43: Gradle PluginとCIと俺

色んなGradle Plugin

Android Dev Tools Knowledge DroidKaigi 2016

http://www.slideshare.net/shinobuokano7/android-dev-tools-knowledge#33

Page 44: Gradle PluginとCIと俺

Thanks!