Gitlab runnerでapkをビルドしてみます
APKをビルドするときに、すべてのビルドパッケージを毎回ダウンロードしたくない
だから私は.gradle/cachesと.gradle/wrappersをキャッシュしようとします
以下は私のgitlab-ci.ymlです
sdk_build_job
image: myimage:latest
stage: sdk-build
script:
...
cache:
key: gradle-cache
- /root/.gradle/caches
- /root/.gradle/wrapper
しかしgradle-cacheを作成すると常に警告が出ます
Creating cache gradle-cache...
WARNING: /root/.gradle/caches: no matching files
WARNING: /root/.gradle/wrapper: no matching files
Archive is up to date!
キャッシュとラッパーディレクトリが見つからない理由がわかりません
Dockerコンテナーに移動してフォルダーを見つけると、適切に配置されていました
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# pwd
/root/.gradle
root@runner-3d9fa57b-project-4-concurrent-0:~/.gradle# ls -al
total 28
drwxr-xr-x 7 root root 4096 Dec 28 02:21 .
drwx------ 1 root root 4096 Dec 28 02:19 ..
drwxr-xr-x 6 root root 4096 Dec 28 02:20 caches
drwxr-xr-x 3 root root 4096 Dec 28 02:19 daemon
drwxr-xr-x 4 root root 4096 Dec 28 02:19 native
drwxr-xr-x 2 root root 4096 Dec 28 02:21 workers
drwxr-xr-x 3 root root 4096 Dec 28 02:19 wrapper
私を助けてください.......
これは、cache
はプロジェクト内のファイルとフォルダーに対してのみ機能するためです。これは、GitLabのWebサイトIMHOに十分に文書化されていません。
そう:
cache:
key: gradle-cache
paths:
- /root/.gradle/caches
- /root/.gradle/wrapper
それでも検索するのは:
/home/user/yourproject/root/.gradle/caches
/home/user/yourproject/root/.gradle/wrapper
Rについては、R_LIBS_SITE
をプロジェクト内のローカルフォルダーに追加します。これにより、インストール済みのパッケージを再利用できました。 こちらをご覧ください 。
同じ問題で頭を打ちました。
MSベレンズは部分的に正しい。キャッシュは、プロジェクトディレクトリ内のファイルとフォルダーに対してのみ機能することになっています。以下を参照してください。 https://gitlab.com/gitlab-org/gitlab-ce/issues/4431
のようなボリュームとしてキャッシュフォルダをマウントするオプションがあるはずでした
[[runners]]
name = ""
url = ""
token = ""
executor = "docker"
[runners.docker]
tls_verify = false
image = "Alpine:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/root/.gradle:/root/.gradle"]
shm_size = 0
しかし、それは機能しませんも機能しません。
私がやったことは次のとおりです:
私の.gitlab-ci.yamlで、GRADLE_USER_HOMEを、すでにマップされているキャッシュボリュームを指すように設定しました。
GRADLE_USER_HOME: "/cache/.gradle"
次に、そのgradleホーム変数を./gradlewに渡しました
./gradlew $ GRADLE_ARGS_CI -g $ GRADLE_USER_HOME testDebugUnitTest
$ GRADLE_ARGS_CIという名前の引数に注意してください。次の値に設定されています
GRADLE_ARGS_CI: "--no-build-cache --no-daemon --stacktrace"
以前のビルドのビルド出力を再利用しない場合は、-no-build-cacheが必要です。ビルドごとにdockerビルド環境が生成されるため、--no-daemonは簡単です。
これらの変更により、ビルド時間を2.5分節約できました。