github.com/secure-build/gitlab-runner@v12.5.0+incompatible/executors/docker/volume_manager_adapter.go (about) 1 package docker 2 3 import ( 4 "context" 5 6 "github.com/docker/docker/api/types/container" 7 8 "gitlab.com/gitlab-org/gitlab-runner/executors/docker/internal/volumes" 9 docker_helpers "gitlab.com/gitlab-org/gitlab-runner/helpers/docker" 10 ) 11 12 type volumesManagerAdapter struct { 13 docker_helpers.Client 14 15 e *executor 16 } 17 18 func (a *volumesManagerAdapter) LabelContainer(container *container.Config, containerType string, otherLabels ...string) { 19 container.Labels = a.e.getLabels(containerType, otherLabels...) 20 } 21 22 func (a *volumesManagerAdapter) WaitForContainer(id string) error { 23 return a.e.waitForContainer(a.e.Context, id) 24 } 25 26 func (a *volumesManagerAdapter) RemoveContainer(ctx context.Context, id string) error { 27 return a.e.removeContainer(ctx, id) 28 } 29 30 var createVolumesManager = func(e *executor) (volumes.Manager, error) { 31 adapter := &volumesManagerAdapter{ 32 Client: e.client, 33 e: e, 34 } 35 36 helperImage, err := e.getPrebuiltImage() 37 if err != nil { 38 return nil, err 39 } 40 41 ccManager := volumes.NewCacheContainerManager( 42 e.Context, 43 &e.BuildLogger, 44 adapter, 45 helperImage, 46 ) 47 48 config := volumes.ManagerConfig{ 49 CacheDir: e.Config.Docker.CacheDir, 50 BaseContainerPath: e.Build.FullProjectDir(), 51 UniqueName: e.Build.ProjectUniqueName(), 52 DisableCache: e.Config.Docker.DisableCache, 53 } 54 55 volumesManager := volumes.NewManager(&e.BuildLogger, e.volumeParser, ccManager, config) 56 57 return volumesManager, nil 58 } 59 60 func (e *executor) createVolumesManager() error { 61 vm, err := createVolumesManager(e) 62 if err != nil { 63 return err 64 } 65 66 e.volumesManager = vm 67 68 return nil 69 }