はじめに
Google純正ライブラリやOSSライブラリのバージョンアップを逐一追いかけるのが大変だなと思ってたところ、以下の記事を見つけたので実際にやってみました。
CIを使って、定期的にバージョンをチェックしてSlackに通知できるようになれば楽になるはず。
Gradle PluginとCIと俺
必要なもの
セットアップ手順
Gradle Versions Plugin
Gradleの設定は以下を参照。
gradle-versions-plugin Usage
./gradlew dependencyUpdates
これで上記のコマンドで、タスク実行することは可能だが、alpha版のライブラリとも比較されます。
なので、Component Selection Rules. でフィルタをかける。
app/build.gradle
dependencyUpdates.resolutionStrategy = {
componentSelection { rules ->
rules.all { ComponentSelection selection ->
boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm'].any { qualifier ->
selection.candidate.version =~ /(?i).*[.-]${qualifier}[.\d-]*/
}
if (rejected) {
selection.reject('Release candidate')
}
}
}
}
Gradle Slack Plugin
Gradleの設定は以下を参照。
gradle-versions-plugin Usage
バージョンチェックのタスク(dependencyUpdates)が実行されたときに、Slack通知するようにする。
app/build.gradle
slack {
url 'slack WebHook URL'
dependsOnTasks 'dependencyUpdates'
title 'my app name'
enabled = isCi
}
CI環境のみでSlack通知を行いたかったので、isCi
の部分は以下のようにします。
app/build.gradle
def isCi = "true" == System.getenv("CI")
大抵のCIサーバーはこの環境変数が入っているらしいです。
今回、Jenkinsを使ったのですが、この環境変数がなかったため新たに追加しました。
あとは、Jenkinsでジョブを作って実行。
./gradlew assembleRelease
./gradlew dependencyUpdates