Fix cache dir detection for docker-windows executor on register
Summary
When user runs gitlab-runner register --docker-volumes 'c:\\cache:c:\\Users\\ContainerAdministrator'
Steps to reproduce
gitlab-runner register --docker-volumes 'c:\\cache:c:\\Users\\ContainerAdministrator\\cache'
- Choose
docker-windows
as an exector
Actual Config
[[runners]]
name = "windows-2019"
url = "xxxxx"
token = "xxxxx"
executor = "docker-windows"
[runners.custom_build_dir]
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["c:\\cache:c:\\Users\\ContainerAdministrator\\cache"]
shm_size = 0
helper_image = "gitlab/gitlab-runner-helper:x86_64-latest"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
Expected Config
[[runners]]
name = "windows-2019"
url = "xxxxx"
token = "xxxxx"
executor = "docker-windows"
[runners.custom_build_dir]
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["c:\\cache:c:\\Users\\ContainerAdministrator\\cache", "c:\\cache"]
shm_size = 0
helper_image = "gitlab/gitlab-runner-helper:x86_64-latest"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
Details
For context please read !1391 (merged), specifically !1391 (comment 177199179). This is because we are not parsing the user specified volumes with src/dst like Linux but doing a simple string match.
We need to figure out a way to parse the user volume same as we do inside of docker but without exposing anything from the docker package.
Edited by Steve Xuereb