Documentation
¶
Index ¶
- Constants
- Variables
- func CreateClientOpts(ctx context.Context, env Env) ([]client.Opt, error)
- func IsExitError(err error) bool
- func NewFakeDockerResponse(contents string) fakeDockerResponse
- func ProvideSwitchCli(clusterCli ClusterClient, localCli LocalClient) *switchCli
- func SupportedVersion(v types.Version) bool
- func SupportsBuildkit(v types.Version, env Env) bool
- type BuildOptions
- type Cli
- func (c *Cli) BuilderVersion() types.BuilderVersion
- func (c *Cli) CheckConnected() error
- func (c *Cli) ContainerRestartNoWait(ctx context.Context, containerID string) error
- func (c *Cli) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
- func (c *Cli) Env() Env
- func (c *Cli) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
- func (c *Cli) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
- func (c *Cli) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)
- func (c *Cli) ServerVersion() types.Version
- func (c *Cli) SetOrchestrator(orc model.Orchestrator)
- type Client
- type ClusterClient
- type ClusterEnv
- type Env
- type ExecCall
- type ExitError
- type FakeClient
- func (c *FakeClient) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error)
- func (c *FakeClient) BuilderVersion() types.BuilderVersion
- func (c *FakeClient) CheckConnected() error
- func (c *FakeClient) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
- func (c *FakeClient) ContainerRestartNoWait(ctx context.Context, containerID string) error
- func (c *FakeClient) ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error)
- func (c *FakeClient) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
- func (c *FakeClient) Env() Env
- func (c *FakeClient) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
- func (c *FakeClient) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
- func (c *FakeClient) ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)
- func (c *FakeClient) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
- func (c *FakeClient) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)
- func (c *FakeClient) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
- func (c *FakeClient) ImageTag(ctx context.Context, source, target string) error
- func (c *FakeClient) NewVersionError(APIrequired, feature string) error
- func (c *FakeClient) ServerVersion() types.Version
- func (c *FakeClient) SetContainerListOutput(output map[string][]types.Container)
- func (c *FakeClient) SetDefaultContainerListOutput()
- func (c *FakeClient) SetExecError(err error)
- func (c *FakeClient) SetOrchestrator(orc model.Orchestrator)
- func (c *FakeClient) VersionError(APIrequired, feature string) error
- type ImgNameAndTag
- type LocalClient
- type LocalEnv
Constants ¶
const (
BuiltByLabel = "builtby"
BuiltByValue = "tilt"
)
Label that we attach to all of the images we build.
const (
TestPod = "test_pod"
TestContainer = "test_container"
)
const ExampleBuildOutput1 = `` /* 276-byte string literal not displayed */
const ExampleBuildOutput2 = `` /* 276-byte string literal not displayed */
same as ExampleBuildOutput1 but with a different digest
const ExampleBuildOutputV1_23 = `` /* 186-byte string literal not displayed */
const ExampleBuildSHA1 = "sha256:11cd0b38bc3ceb958ffb2f9bd70be3fb317ce7d255c8a4c3f4af30e298aa1aab"
const ExamplePushSHA1 = "sha256:cc5f4c463f81c55183d8d737ba2f0d30b3e6f3670dbe2da68f0aac168e93fbb1"
const TagLatest = "latest"
Variables ¶
var (
BuiltByTiltLabel = map[string]string{BuiltByLabel: BuiltByValue}
BuiltByTiltLabelStr = fmt.Sprintf("%s=%s", BuiltByLabel, BuiltByValue)
)
var ClusterWireSet = wire.NewSet(
ProvideClusterCli,
ProvideLocalCli,
ProvideLocalEnv,
ProvideClusterEnv,
ProvideClusterAsDefault)
Bind a docker client that talks to the in-cluster Docker daemon.
var DefaultContainerListOutput = map[string][]types.Container{
TestPod: []types.Container{
types.Container{ID: TestContainer, ImageID: ExampleBuildSHA1, Command: "./stuff"},
},
"two-containers": []types.Container{
types.Container{ID: "not a match", ImageID: ExamplePushSHA1, Command: "/pause"},
types.Container{ID: "the right container", ImageID: ExampleBuildSHA1, Command: "./stuff"},
},
}
var ExamplePushOutput1 = `` /* 1660-byte string literal not displayed */
var LocalWireSet = wire.NewSet(
ProvideLocalCli,
ProvideLocalEnv,
ProvideEmptyClusterEnv,
ProvideLocalAsDefault)
Bind a docker client that can only talk to the local Docker daemon.
var SwitchWireSet = wire.NewSet(
ProvideClusterCli,
ProvideLocalCli,
ProvideSwitchCli,
ProvideLocalEnv,
ProvideClusterEnv,
wire.Bind(new(Client), new(*switchCli)))
Bind a docker client that can either talk to the in-cluster Docker daemon or to the local Docker daemon.
Functions ¶
func CreateClientOpts ¶
func CreateClientOpts(ctx context.Context, env Env) ([]client.Opt, error)
Adapted from client.FromEnv
Supported environment variables: DOCKER_HOST to set the url to the docker server. DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. DOCKER_CERT_PATH to load the TLS certificates from. DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default.
func IsExitError ¶
func IsExitError(err error) bool
func NewFakeDockerResponse ¶
func NewFakeDockerResponse(contents string) fakeDockerResponse
func ProvideSwitchCli ¶ added in v0.9.1
func ProvideSwitchCli(clusterCli ClusterClient, localCli LocalClient) *switchCli
func SupportedVersion ¶ added in v0.4.1
func SupportedVersion(v types.Version) bool
func SupportsBuildkit ¶ added in v0.4.1
func SupportsBuildkit(v types.Version, env Env) bool
Sadly, certain versions of docker return an error if the client requests buildkit. We have to infer whether it supports buildkit from version numbers.
Inferred from release notes https://docs.docker.com/engine/release-notes/
Types ¶
type BuildOptions ¶ added in v0.7.1
type BuildOptions struct {
Context io.Reader
Dockerfile string
Remove bool
BuildArgs map[string]*string
Tags []string
Target string
}
type Cli ¶ added in v0.5.0
type Cli struct {
*client.Client
// contains filtered or unexported fields
}
func (*Cli) BuilderVersion ¶ added in v0.9.1
func (c *Cli) BuilderVersion() types.BuilderVersion
func (*Cli) CheckConnected ¶ added in v0.10.8
func (c *Cli) CheckConnected() error
func (*Cli) ContainerRestartNoWait ¶ added in v0.5.0
func (c *Cli) ContainerRestartNoWait(ctx context.Context, containerID string) error
func (*Cli) CopyToContainerRoot ¶ added in v0.5.0
func (c *Cli) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
func (*Cli) ExecInContainer ¶ added in v0.5.0
func (c *Cli) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
func (*Cli) ImageBuild ¶ added in v0.5.0
func (c *Cli) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
func (*Cli) ImagePush ¶ added in v0.10.8
func (c *Cli) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)
func (*Cli) ServerVersion ¶ added in v0.9.1
func (c *Cli) ServerVersion() types.Version
func (*Cli) SetOrchestrator ¶ added in v0.9.1
func (c *Cli) SetOrchestrator(orc model.Orchestrator)
type Client ¶ added in v0.5.0
type Client interface {
CheckConnected() error
// If you'd like to call this Docker instance in a separate process, these
// are the environment variables you'll need to do so.
Env() Env
// If you'd like to call this Docker instance in a separate process, this
// is the default builder version you want (buildkit or legacy)
BuilderVersion() types.BuilderVersion
ServerVersion() types.Version
// Set the orchestrator we're talking to. This is only relevant to switchClient,
// which can talk to either the Local or in-cluster docker daemon.
SetOrchestrator(orc model.Orchestrator)
ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
ContainerRestartNoWait(ctx context.Context, containerID string) error
CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
// Execute a command in a container, streaming the command output to `out`.
// Returns an ExitError if the command exits with a non-zero exit code.
ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
ImagePush(ctx context.Context, image reference.NamedTagged) (io.ReadCloser, error)
ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
ImageTag(ctx context.Context, source, target string) error
ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)
ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
NewVersionError(APIrequired, feature string) error
BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error)
ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error)
}
Create an interface so this can be mocked out.
func NewDockerClient ¶ added in v0.9.1
func NewDockerClient(ctx context.Context, env Env) Client
func ProvideClusterAsDefault ¶ added in v0.9.1
func ProvideClusterAsDefault(cli ClusterClient) Client
func ProvideLocalAsDefault ¶ added in v0.9.1
func ProvideLocalAsDefault(cli LocalClient) Client
type ClusterClient ¶ added in v0.9.1
type ClusterClient Client
func ProvideClusterCli ¶ added in v0.9.1
func ProvideClusterCli(ctx context.Context, lEnv LocalEnv, cEnv ClusterEnv, lClient LocalClient) (ClusterClient, error)
type ClusterEnv ¶ added in v0.9.1
type ClusterEnv Env
Tell wire to create two docker envs: one for the local CLI and one for the in-cluster CLI.
func ProvideClusterEnv ¶ added in v0.9.1
func ProvideClusterEnv(ctx context.Context, env k8s.Env, runtime container.Runtime, minikubeClient minikube.Client) (ClusterEnv, error)
func ProvideEmptyClusterEnv ¶ added in v0.9.5
func ProvideEmptyClusterEnv() ClusterEnv
type Env ¶ added in v0.7.11
type Env struct {
Host string
APIVersion string
TLSVerify string
CertPath string
// Minikube's docker client has a bug where it can't use buildkit. See:
// https://github.com/kubernetes/minikube/issues/4143
IsMinikube bool
}
See notes on CreateClientOpts. These environment variables are standard docker env configs.
type FakeClient ¶ added in v0.5.0
type FakeClient struct {
PushCount int
PushImage string
PushOptions types.ImagePushOptions
PushOutput string
BuildCount int
BuildOptions BuildOptions
BuildOutput string
BuildErrorToThrow error // next call to Build will throw this err (after which we clear the error)
ImageListCount int
ImageListOpts []types.ImageListOptions
TagCount int
TagSource string
TagTarget string
ContainerListOutput map[string][]types.Container
CopyCount int
CopyContainer string
CopyContent io.Reader
ExecCalls []ExecCall
ExecErrorsToThrow []error // next call to exec will throw ExecError[0] (which we then pop)
RestartsByContainer map[string]int
RemovedImageIDs []string
Images map[string]types.ImageInspect
Orchestrator model.Orchestrator
CheckConnectedErr error
ThrowNewVersionError bool
BuildCachePruneErr error
BuildCachePruneOpts types.BuildCachePruneOptions
BuildCachesPruned []string
ContainersPruneErr error
ContainersPruneFilters filters.Args
ContainersPruned []string
}
func NewFakeClient ¶ added in v0.5.0
func NewFakeClient() *FakeClient
func (*FakeClient) BuildCachePrune ¶ added in v0.10.14
func (c *FakeClient) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error)
func (*FakeClient) BuilderVersion ¶ added in v0.9.1
func (c *FakeClient) BuilderVersion() types.BuilderVersion
func (*FakeClient) CheckConnected ¶ added in v0.10.8
func (c *FakeClient) CheckConnected() error
func (*FakeClient) ContainerList ¶ added in v0.5.0
func (c *FakeClient) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error)
func (*FakeClient) ContainerRestartNoWait ¶ added in v0.5.0
func (c *FakeClient) ContainerRestartNoWait(ctx context.Context, containerID string) error
func (*FakeClient) ContainersPrune ¶ added in v0.10.14
func (c *FakeClient) ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error)
func (*FakeClient) CopyToContainerRoot ¶ added in v0.5.0
func (c *FakeClient) CopyToContainerRoot(ctx context.Context, container string, content io.Reader) error
func (*FakeClient) ExecInContainer ¶ added in v0.5.0
func (c *FakeClient) ExecInContainer(ctx context.Context, cID container.ID, cmd model.Cmd, out io.Writer) error
func (*FakeClient) ImageBuild ¶ added in v0.5.0
func (c *FakeClient) ImageBuild(ctx context.Context, buildContext io.Reader, options BuildOptions) (types.ImageBuildResponse, error)
func (*FakeClient) ImageInspectWithRaw ¶ added in v0.5.0
func (c *FakeClient) ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error)
func (*FakeClient) ImageList ¶ added in v0.5.0
func (c *FakeClient) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error)
func (*FakeClient) ImagePush ¶ added in v0.5.0
func (c *FakeClient) ImagePush(ctx context.Context, ref reference.NamedTagged) (io.ReadCloser, error)
func (*FakeClient) ImageRemove ¶ added in v0.5.0
func (c *FakeClient) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDeleteResponseItem, error)
func (*FakeClient) ImageTag ¶ added in v0.5.0
func (c *FakeClient) ImageTag(ctx context.Context, source, target string) error
func (*FakeClient) NewVersionError ¶ added in v0.10.14
func (c *FakeClient) NewVersionError(APIrequired, feature string) error
func (*FakeClient) ServerVersion ¶ added in v0.9.1
func (c *FakeClient) ServerVersion() types.Version
func (*FakeClient) SetContainerListOutput ¶ added in v0.5.0
func (c *FakeClient) SetContainerListOutput(output map[string][]types.Container)
func (*FakeClient) SetDefaultContainerListOutput ¶ added in v0.5.0
func (c *FakeClient) SetDefaultContainerListOutput()
func (*FakeClient) SetExecError ¶ added in v0.10.0
func (c *FakeClient) SetExecError(err error)
func (*FakeClient) SetOrchestrator ¶ added in v0.9.1
func (c *FakeClient) SetOrchestrator(orc model.Orchestrator)
func (*FakeClient) VersionError ¶ added in v0.10.14
func (c *FakeClient) VersionError(APIrequired, feature string) error
type ImgNameAndTag ¶
type ImgNameAndTag struct {
Name string
Tag string
}
For use storing reference.NamedTagged as a map key, since we can't rely on the two different underlying representations the same name+tag combo being equivalent.
func ToImgNameAndTag ¶
func ToImgNameAndTag(nt reference.NamedTagged) ImgNameAndTag
type LocalClient ¶ added in v0.9.1
type LocalClient Client
func ProvideLocalCli ¶ added in v0.9.1
func ProvideLocalCli(ctx context.Context, lEnv LocalEnv) LocalClient
type LocalEnv ¶ added in v0.9.1
type LocalEnv Env
func ProvideLocalEnv ¶ added in v0.9.1
func ProvideLocalEnv(ctx context.Context, cEnv ClusterEnv) (LocalEnv, error)