課題
Github Actionsでgradleの依存関係がキャッシュできてなかった。
結論
キャッシュの対象パスを修正
~/.gradle
-> /root/.gradle
build.yml
- name: restore gradle cache
uses: actions/cache@v2
with:
path: |
/root/.gradle/caches
/root/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle.properties') }}
restore-keys: ${{ runner.os }}-gradle-
読まなくていい経緯
kotlin(Ktor)で開発していてある日気付いた。
みんな大好きactions/cache@v2のログを見ると
/usr/bin/docker exec b7771335899ab39d1bc44c8b5221cfdebab45035280aaa687d8917fbf5077e12 sh -c "cat /etc/*release | grep ^ID"
Received 45 of 45 (100.0%), 0.0 MBs/sec
Cache Size: ~0 MB (45 B)
/usr/bin/tar -z -xf /__w/_temp/733b17c6-8e14-42c6-ab27-ecaeece6533a/cache.tgz -P -C /__w/myrepo/myrepo
Cache restored successfully
Cache restored from key: Linux-gradle-26c5ed26e1ebe58f9a52ea23e3929153c09a76cf006e85a78796812b1df7b81a
あれ、これキャッシュ効いてなくない・・・?45バイトって何・・・
今まで確認してなかったので「ある日突然できなくなった」わけではなく最初からできてなかったのかもしれない。
こんな時はtmateでSSHデバッグだー
リナックススゴクワカラナイのでいちいちコマンドを調べながら実行。
root@05b6a8359c14:/__w/myrepo/myrepo# ls ~/.gradle
ls: cannot access '/github/home/.gradle': No such file or directory
キャッシュ対象のディレクトリがないやんけ。じゃあどこにあるの?
root@05b6a8359c14:/__w/myrepo/myrepo# find / -name ".gradle" -type d
find: '/proc/1163/task/1163/net': Invalid argument
find: '/proc/1163/net': Invalid argument
/root/.gradle
/__w/myrepo/myrepo/.gradle
そこかー
下二つそれぞれのディレクトリの中を見ると/root/.gradle
のほうにcaches
を発見。
ということで「結論」に書いた内容で修正して2回実行。(1回目でキャッシュ保存させるため)
/usr/bin/docker exec 6d0feb87a8d2361be8be2dd84a988a43b1827c893690f818edc81f36a32135ff sh -c "cat /etc/*release | grep ^ID"
Received 176160768 of 473646535 (37.2%), 168.0 MBs/sec
Received 402653184 of 473646535 (85.0%), 191.9 MBs/sec
Received 473646535 of 473646535 (100.0%), 167.1 MBs/sec
Cache Size: ~452 MB (473646535 B)
/usr/bin/tar -z -xf /__w/_temp/a628ba9d-5267-4c2d-a4ea-4e7fe1446d84/cache.tgz -P -C /__w/myrepo/myrepo
Cache restored successfully
Cache restored from key: Linux-gradle-41ed537c6a2f3fc1176d54174a68732b9d666649a40e13c2b1c25ee53a778e2c
キャッシュからリストアできたよー
公式には~/.gradle
って書いてあるのになんでだ。