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  }