Skip to content

Commit ee7ee8a

Browse files
committed
refactor: wait for common dependency to finish
1 parent 3dd7d30 commit ee7ee8a

41 files changed

Lines changed: 235 additions & 75 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/list/deployments.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (cmd *deploymentsCmd) RunDeploymentsStatus(f factory.Factory, cobraCmd *cob
121121
continue
122122
}
123123

124-
deployClient, err = deployHelm.New(ctx, helmClient, deployConfig)
124+
deployClient, err = deployHelm.New(helmClient, deployConfig)
125125
if err != nil {
126126
logger.Warnf("Unable to create helm deploy config for %s: %v", deployConfig.Name, err)
127127
continue

cmd/run_pipeline.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ type RunPipelineCmd struct {
6969
// used for testing to allow interruption
7070
Ctx context.Context
7171
RenderWriter io.Writer
72-
73-
configLoader loader.ConfigLoader
7472
log log.Logger
7573
}
7674

e2e/tests/dependencies/dependencies.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,36 @@ var _ = DevSpaceDescribe("dependencies", func() {
4242
kubeClient, err = kube.NewKubeHelper()
4343
})
4444

45+
ginkgo.It("should wait for dependencies", func() {
46+
tempDir, err := framework.CopyToTempDir("tests/dependencies/testdata/wait")
47+
framework.ExpectNoError(err)
48+
defer framework.CleanupTempDir(initialDir, tempDir)
49+
50+
ns, err := kubeClient.CreateNamespace("dependencies")
51+
framework.ExpectNoError(err)
52+
defer func() {
53+
err := kubeClient.DeleteNamespace(ns)
54+
framework.ExpectNoError(err)
55+
}()
56+
57+
// create a new dev command and start it
58+
devCmd := &cmd.RunPipelineCmd{
59+
GlobalFlags: &flags.GlobalFlags{
60+
NoWarn: true,
61+
Namespace: ns,
62+
ConfigPath: "devspace.yaml",
63+
},
64+
Pipeline: "dev",
65+
}
66+
err = devCmd.RunDefault(f)
67+
framework.ExpectNoError(err)
68+
framework.ExpectLocalFileContentsImmediately(filepath.Join(tempDir, "out.txt"), `dep3
69+
dep2
70+
dep2
71+
wait
72+
`)
73+
})
74+
4575
ginkgo.It("should not purge common dependency", func() {
4676
tempDir, err := framework.CopyToTempDir("tests/dependencies/testdata/purge")
4777
framework.ExpectNoError(err)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: v2beta1
2+
name: dep1
3+
4+
dependencies:
5+
dep3:
6+
path: dep3.yaml
7+
8+
pipelines:
9+
deploy: |-
10+
run_dependency_pipelines --all
11+
# We use dep2 here because we don't know if dep1 or dep2 finishs first
12+
echo "dep2" >> out.txt
13+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: v2beta1
2+
name: dep2
3+
4+
dependencies:
5+
dep3:
6+
path: dep3.yaml
7+
8+
pipelines:
9+
deploy: |-
10+
run_dependency_pipelines --all
11+
echo "dep2" >> out.txt
12+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: v2beta1
2+
name: dep3
3+
4+
pipelines:
5+
deploy: |-
6+
sleep 1
7+
echo "dep3" >> out.txt
8+
9+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
version: v2beta1
2+
name: wait
3+
4+
dependencies:
5+
dep1:
6+
path: dep1.yaml
7+
dep2:
8+
path: dep2.yaml
9+
10+
pipelines:
11+
dev: |-
12+
run_dependency_pipelines --all
13+
echo "wait" >> out.txt
14+

pkg/devspace/build/builder/buildkit/buildkit.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func (b *Builder) ShouldRebuild(ctx devspacecontext.Context, forceRebuild bool)
6767

6868
// Check if image is present in local repository
6969
if !rebuild && err == nil && b.helper.ImageConf.BuildKit.InCluster == nil {
70-
if b.skipPushOnLocalKubernetes && ctx.KubeClient != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
70+
if b.skipPushOnLocalKubernetes && ctx.KubeClient() != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
7171
dockerClient, err := dockerpkg.NewClientWithMinikube(ctx.Context(), ctx.KubeClient().CurrentContext(), b.helper.ImageConf.BuildKit.PreferMinikube == nil || *b.helper.ImageConf.BuildKit.PreferMinikube, ctx.Log())
7272
if err != nil {
7373
return false, err
@@ -117,13 +117,13 @@ func (b *Builder) BuildImage(ctx devspacecontext.Context, contextPath, dockerfil
117117
}
118118

119119
// We skip pushing when it is the minikube client
120-
if b.skipPushOnLocalKubernetes && ctx.KubeClient != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
120+
if b.skipPushOnLocalKubernetes && ctx.KubeClient() != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
121121
b.skipPush = true
122122
}
123123

124124
// Should we use the minikube docker daemon?
125125
useMinikubeDocker := false
126-
if ctx.KubeClient != nil && ctx.KubeClient().CurrentContext() == "minikube" && (buildKitConfig.PreferMinikube == nil || *buildKitConfig.PreferMinikube) {
126+
if ctx.KubeClient() != nil && ctx.KubeClient().CurrentContext() == "minikube" && (buildKitConfig.PreferMinikube == nil || *buildKitConfig.PreferMinikube) {
127127
useMinikubeDocker = true
128128
}
129129

pkg/devspace/build/builder/docker/docker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (b *Builder) ShouldRebuild(ctx devspacecontext.Context, forceRebuild bool)
7474

7575
// Check if image is present in local repository
7676
if !rebuild && err == nil {
77-
if b.skipPushOnLocalKubernetes && ctx.KubeClient != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
77+
if b.skipPushOnLocalKubernetes && ctx.KubeClient() != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
7878
found, err := b.helper.IsImageAvailableLocally(ctx, b.client)
7979
if !found && err == nil {
8080
imageCache, _ := ctx.Config().LocalCache().GetImageCache(b.helper.ImageConfigName)
@@ -105,7 +105,7 @@ func (b *Builder) BuildImage(ctx devspacecontext.Context, contextPath, dockerfil
105105
}
106106

107107
// We skip pushing when it is the minikube client
108-
if b.skipPushOnLocalKubernetes && ctx.KubeClient != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
108+
if b.skipPushOnLocalKubernetes && ctx.KubeClient() != nil && kubectl.IsLocalKubernetes(ctx.KubeClient().CurrentContext()) {
109109
b.skipPush = true
110110
}
111111

pkg/devspace/build/builder/helper/helper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (b *BuildHelper) ShouldRebuild(ctx devspacecontext.Context, forceRebuild bo
143143

144144
// Okay this check verifies if the previous deploy context was local kubernetes context where we didn't push the image and now have a kubernetes context where we probably push
145145
// or use another docker client (e.g. minikube <-> docker-desktop)
146-
if !mustRebuild && ctx.KubeClient != nil && ctx.Config().LocalCache().GetLastContext() != nil && ctx.Config().LocalCache().GetLastContext().Context != ctx.KubeClient().CurrentContext() && kubectl.IsLocalKubernetes(ctx.Config().LocalCache().GetLastContext().Context) {
146+
if !mustRebuild && ctx.KubeClient() != nil && ctx.Config().LocalCache().GetLastContext() != nil && ctx.Config().LocalCache().GetLastContext().Context != ctx.KubeClient().CurrentContext() && kubectl.IsLocalKubernetes(ctx.Config().LocalCache().GetLastContext().Context) {
147147
mustRebuild = true
148148
ctx.Log().Infof("Rebuild image %s because previous build was local kubernetes", imageCache.ImageName)
149149
}

0 commit comments

Comments
 (0)