Help us understand the problem. What is going on with this article?

Wercker cacheを使ってGradleのビルドを高速化

More than 3 years have passed since last update.

概要

Werckerでは、Workflowsで繋いだpipeline間で共有出来るディレクトリがあり、キャッシュとして利用できます。キャッシュディレクトリのパスは、環境変数WERCKER_CACHE_DIRを参照することで取得できます。Wercker cacheの詳細はこちらのドキュメントから確認できます。

ビルド速度の改善

WERCKER_CACHE_DIRをGradleのキャッシュディレクトリとして利用することでビルド速度を改善できます。Gradleは実行時に--project-cache-dirを用いることで任意のキャッシュディレクトリを指定できます。詳細は付録D Gradle コマンドラインをご覧ください。したがって、以下のように指定することでWERCKER_CACHE_DIRをキャッシュディレクトリとして利用できます。

$ gradle --project-cache-dir=$WERCKER_CACHE_DIR testDebug

Gradle Wrapperを利用する場合

Wrapperを使用する場合、コマンドは以下のようになります。

$ ./gradlew --project-cache-dir=$WERCKER_CACHE_DIR testDebug

Gradle Wrapperを利用する場合は、Werckerの環境変数としてGRADLE_USER_HOMEを定義し$WERCKER_CACHE_DIR/.gradleを指定します。これによってGradleのユーザディレクトリをWERCKER_CACHE_DIR以下に指定でき、WrapperがダウンロードしたGradleが異なるpipeline間で共有されpipeline毎にGradleがダウンロードされることが無くなります。

環境変数は「Settings」の「Environment variables」から定義できます。

wercker_env_variable.png

また、環境変数を使わず--gradle-user-homeオプションを使用することでGradleのユーザディレクトリを指定することが可能です。

$ ./gradlew --project-cache-dir=$WERCKER_CACHE_DIR --gradle-user-home=$WERCKER_CACHE_DIR/.gradle testDebug

WERCKER_CACHE_DIRの有効期限

WERCKER_CACHE_DIRの有効期限がどうなっているかというと、ドキュメントには以下のように書かれています。

At the start of every pipeline run the cache directory is filled with the cached content from the last successful build, if not older than 14 days (and is < 1GB).

したがって、各pipelineは、スタート時にWERCKER_CACHE_DIRにキャッシュをロードし、ロードされるキャッシュは、14日間以内で最後に成功したビルドのもので、キャッシュの容量は1GBまでとなっています。

キャッシュの消去

キャッシュを消去したい場合、「Settings」の「Options」にある「Clear cache」から削除できます。また、Gradle実行時に--recompile-scriptsを付けることでキャッシュが全て破棄され再度コンパイル、保存されます。詳細は「キャッシング」の項目をご覧ください。

wercker_clear_cache.png

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away