-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
types.go
87 lines (71 loc) · 2.27 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
Copyright 2019 The Skaffold Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cluster
import (
"context"
"fmt"
"io"
"time"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/build"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/config"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/docker"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/kubectl"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/platform"
"github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/schema/latest"
)
// Builder builds docker artifacts on Kubernetes.
type Builder struct {
*latest.ClusterDetails
cfg Config
kubectlcli *kubectl.CLI
mode config.RunMode
timeout time.Duration
artifactStore build.ArtifactStore
teardownFunc []func()
skipTests bool
}
type Config interface {
kubectl.Config
docker.Config
GetKubeContext() string
Muted() config.Muted
Mode() config.RunMode
SkipTests() bool
}
type BuilderContext interface {
Config
ArtifactStore() build.ArtifactStore
}
// NewBuilder creates a new Builder that builds artifacts on cluster.
func NewBuilder(bCtx BuilderContext, buildCfg *latest.ClusterDetails) (*Builder, error) {
timeout, err := time.ParseDuration(buildCfg.Timeout)
if err != nil {
return nil, fmt.Errorf("parsing timeout: %w", err)
}
return &Builder{
ClusterDetails: buildCfg,
cfg: bCtx,
kubectlcli: kubectl.NewCLI(bCtx, ""),
mode: bCtx.Mode(),
timeout: timeout,
artifactStore: bCtx.ArtifactStore(),
skipTests: bCtx.SkipTests(),
}, nil
}
func (b *Builder) Prune(ctx context.Context, out io.Writer) error {
return nil
}
func (b *Builder) PushImages() bool { return true }
func (b *Builder) SupportedPlatforms() platform.Matcher {
return platform.All
}