in executors/docker/executor_docker.go [289:336]
func (s *executor) createCacheVolume(containerName, containerPath string) (string, error) {
// get busybox image
cacheImage, err := s.getPrebuiltImage()
if err != nil {
return "", err
}
config := &container.Config{
Image: cacheImage.ID,
Cmd: []string{
"gitlab-runner-cache", containerPath,
},
Volumes: map[string]struct{}{
containerPath: {},
},
Labels: s.getLabels("cache", "cache.dir="+containerPath),
}
hostConfig := &container.HostConfig{
LogConfig: container.LogConfig{
Type: "json-file",
},
}
resp, err := s.client.ContainerCreate(s.Context, config, hostConfig, nil, containerName)
if err != nil {
if resp.ID != "" {
s.failures = append(s.failures, resp.ID)
}
return "", err
}
s.Debugln("Starting cache container", resp.ID, "...")
err = s.client.ContainerStart(s.Context, resp.ID, types.ContainerStartOptions{})
if err != nil {
s.failures = append(s.failures, resp.ID)
return "", err
}
s.Debugln("Waiting for cache container", resp.ID, "...")
err = s.waitForContainer(resp.ID)
if err != nil {
s.failures = append(s.failures, resp.ID)
return "", err
}
return resp.ID, nil
}