パイプラインが完了した後、Gitlab CIでパイプラインキャッシュを無効化またはクリアすることは可能ですか?
俺の .gitlab-ci.yml
ファイルには次のグローバルキャッシュ定義があります
cache:
key: "%CI_PIPELINE_ID%"
paths:
- './msvc/Project1`/bin/Debug'
- './msvc/Project2`/bin/Debug'
- './msvc/Project3`/bin/Debug'
cache-key
値は、各パイプラインが自身のキャッシュを維持する必要があることを指定します。これは正常に動作していますが、キャッシュファイルはパイプラインの完了後も存在し続けます。数百のパイプラインが実行されているため、サイズが増え始め、マシン上のキャッシュフォルダーを手動で削除することは、優れたソリューションではありません。
パイプラインの最後にクリーンアップジョブを追加してみました
cleanup:
stage: cleanup
script:
- rm -rf './msvc/Project1/bin'
- rm -rf './msvc/Project2/bin'
- rm -rf './msvc/Project3/bin'
when: always
ローカルファイルは削除されますが、キャッシュからは削除されません。
ここで何か不足していますか?
現在Gitlab-EE 10.3.3を実行している
これは完璧な解決策ではありませんが、.gitlab-ci.yaml
ファイルの最後に、ファイルシステムからキャッシュディレクトリを削除するクリーンアップジョブを作成することになりました。
このようにして、各パイプラインは、時間の経過とともにファイルシステムを混乱させることなく、独自の固有のキャッシュを取得します。
cleanup_job:
stage: cleanup
script:
- echo "Cleaning up"
- rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
when: always
どこ
CACHE_PATH: "C:/gitlab-runner/cache/group/project/repo/"
Gitlabのプロジェクトマスターの1人である@ayufanからの引用:
キャッシュは
/home/gitlab-runner/cache
に格納されるか、Dockerコンテナーdocker ps | grep -cache-
として格納されます。
そこで、ディレクトリを削除して、返されたすべてのDockerコンテナを削除することができます。