- What are you seeing, and how does that differ from what you expect to see?
TLDR of my goal, have a single (or as few as possible) local caches for the configuration.
I have been on a small adventure figuring out how the docker runner caching works.
I am now in the situation where I have a single runner configured, with concurrency of 4 and a “global” pipeline cache configured, with a fixed key, but I’m still slightly confused around the volumes in use.
On the host for the runner when looking at the docker volumes after running the pipeline detailed below I see a whole bunch of volumes.
DRIVER VOLUME NAME
local runner-6kaxapsy-project-16-concurrent-0-cache-3c3f060a0374fc8bc39395164f415a70
local runner-6kaxapsy-project-16-concurrent-0-cache-904f6ed42e0fa2b14c1d7a2ed6f1875e
local runner-6kaxapsy-project-16-concurrent-0-cache-c33bcaa1fd2c77edfc3893b41966cea8
local runner-6kaxapsy-project-16-concurrent-1-cache-3c3f060a0374fc8bc39395164f415a70
local runner-6kaxapsy-project-16-concurrent-1-cache-904f6ed42e0fa2b14c1d7a2ed6f1875e
local runner-6kaxapsy-project-16-concurrent-1-cache-c33bcaa1fd2c77edfc3893b41966cea8
local runner-6kaxapsy-project-16-concurrent-2-cache-3c3f060a0374fc8bc39395164f415a70
local runner-6kaxapsy-project-16-concurrent-2-cache-904f6ed42e0fa2b14c1d7a2ed6f1875e
local runner-6kaxapsy-project-16-concurrent-2-cache-c33bcaa1fd2c77edfc3893b41966cea8
local runner-6kaxapsy-project-16-concurrent-3-cache-3c3f060a0374fc8bc39395164f415a70
local runner-6kaxapsy-project-16-concurrent-3-cache-904f6ed42e0fa2b14c1d7a2ed6f1875e
local runner-6kaxapsy-project-16-concurrent-3-cache-c33bcaa1fd2c77edfc3893b41966cea8
I discovered in some docs that these volume names are in the following format:
runner-<short-token>-project-<id>-concurrent-<concurrency-id>-cache-<md5-of-path>
I was expecting to have difference caches per concurrent job as I have already read about that in other gitlab tickets.
However I do not understand why the md5-of-path
is differing and I end up with 12 volumes, when the same path of mediawiki
is defined, with the same cache key.
This is on GitLab Community Edition 13.12.9
This is a TLDR version of my config.
The full work in progress file can be found here
image: docker:19.03.12
cache:
- key: mediawiki
paths:
- mediawiki
services:
- name: docker:19.03.12-dind
# Use a registry mirror to avoid hitting docker hub too much as there is a rate limit of 100 pulls per 6 hours
command: ["--registry-mirror", "https://mirror.gcr.io"]
integration:
parallel:
matrix:
- TEST: docker-mw-extra-commands.sh
- TEST: docker-mw-install-all-the-dbs.sh
- TEST: docker-mw-mysql-suspend-resume-destroy.sh
before_script:
- ./tests/cache-mediawiki.sh
- ./tests/setup.sh
script:
- ./tests/$TEST
Some general questions I have some up with that despite much googling I think I havn’t found certain answers:
- Do these 12 volumes actually mean that separate caches are used? (testing indicates maybe)?
- Is the hash at the end of the volume name actually the path? (I only found this reference in 1 doc page so far)