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

  1. gitlab-runner register --docker-volumes 'c:\\cache:c:\\Users\\ContainerAdministrator\\cache'
  2. 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 Jun 03, 2019 by Steve Xuereb
Assignee Loading
Time tracking Loading