@@ -2,17 +2,19 @@ package deploy
22
33import (
44 "context"
5- "github.com/onsi/ginkgo/v2"
65 "os"
76 "path/filepath"
87 "strings"
98
9+ "github.com/onsi/ginkgo/v2"
10+
1011 "github.com/loft-sh/devspace/cmd"
1112 "github.com/loft-sh/devspace/cmd/flags"
1213 "github.com/loft-sh/devspace/e2e/framework"
1314 "github.com/loft-sh/devspace/e2e/kube"
1415 "github.com/loft-sh/devspace/pkg/devspace/kubectl"
1516 "github.com/loft-sh/devspace/pkg/util/factory"
17+ v1 "k8s.io/api/core/v1"
1618 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1719)
1820
@@ -438,6 +440,109 @@ var _ = DevSpaceDescribe("deploy", func() {
438440 framework .ExpectEqual (out , "test" )
439441 })
440442
443+ //nolint:dupl
444+ ginkgo .It ("should deploy kubectl application with patches" , func () {
445+ tempDir , err := framework .CopyToTempDir ("tests/deploy/testdata/kubectl_patches" )
446+ framework .ExpectNoError (err )
447+ defer framework .CleanupTempDir (initialDir , tempDir )
448+
449+ ns , err := kubeClient .CreateNamespace ("deploy" )
450+ framework .ExpectNoError (err )
451+ defer func () {
452+ err := kubeClient .DeleteNamespace (ns )
453+ framework .ExpectNoError (err )
454+ }()
455+
456+ // create a new dev command
457+ deployCmd := & cmd.RunPipelineCmd {
458+ GlobalFlags : & flags.GlobalFlags {
459+ NoWarn : true ,
460+ Namespace : ns ,
461+ },
462+ Pipeline : "deploy" ,
463+ }
464+
465+ // run the command
466+ err = deployCmd .RunDefault (f )
467+ framework .ExpectNoError (err )
468+
469+ // check if services are there
470+ service , err := kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "nginx-deployment" , metav1.GetOptions {})
471+ framework .ExpectNoError (err )
472+ // check if patches are correctly applied to service
473+ framework .ExpectEqual (service .Labels ["test" ], "test234" )
474+ framework .ExpectEqual (service .Spec .Ports [0 ].Port , int32 (8080 ))
475+
476+ // check that container is correctly deployed
477+ out , err := kubeClient .ExecByImageSelector ("nginx" , ns , []string {"echo" , "-n" , "test" })
478+ framework .ExpectNoError (err )
479+ framework .ExpectEqual (out , "test" )
480+
481+ deployment , err := kubeClient .RawClient ().AppsV1 ().Deployments (ns ).Get (context .TODO (), "nginx-deployment" , metav1.GetOptions {})
482+ framework .ExpectNoError (err )
483+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Name , "nginx" )
484+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Image , "nginx:1.23.3" )
485+ framework .ExpectEqual (deployment .Spec .Template .GetObjectMeta ().GetLabels (), map [string ]string {"app" : "nginx" , "test" : "test123" })
486+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [1 ].Name , "busybox" )
487+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [2 ].Name , "alpine" )
488+ // Ensure the wildcard works
489+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
490+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [1 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
491+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [2 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
492+ })
493+
494+ //nolint:dupl
495+ ginkgo .It ("should deploy kubectl inline manifest application with patches" , func () {
496+ tempDir , err := framework .CopyToTempDir ("tests/deploy/testdata/kubectl_inline_manifest_patches" )
497+ framework .ExpectNoError (err )
498+ defer framework .CleanupTempDir (initialDir , tempDir )
499+
500+ ns , err := kubeClient .CreateNamespace ("deploy" )
501+ framework .ExpectNoError (err )
502+ defer func () {
503+ err := kubeClient .DeleteNamespace (ns )
504+ framework .ExpectNoError (err )
505+ }()
506+
507+ // create a new dev command
508+ deployCmd := & cmd.RunPipelineCmd {
509+ GlobalFlags : & flags.GlobalFlags {
510+ NoWarn : true ,
511+ Namespace : ns ,
512+ },
513+ Pipeline : "deploy" ,
514+ }
515+
516+ // run the command
517+ err = deployCmd .RunDefault (f )
518+ framework .ExpectNoError (err )
519+
520+ // check if services are there
521+ service , err := kubeClient .RawClient ().CoreV1 ().Services (ns ).Get (context .TODO (), "nginx-inline-deployment" , metav1.GetOptions {})
522+ framework .ExpectNoError (err )
523+ // check if patches are correctly applied to service
524+ framework .ExpectEqual (service .Labels ["test" ], "test234" )
525+ framework .ExpectEqual (service .Spec .Ports [0 ].Port , int32 (8080 ))
526+
527+ // check that container is correctly deployed
528+ out , err := kubeClient .ExecByImageSelector ("nginx" , ns , []string {"echo" , "-n" , "test" })
529+ framework .ExpectNoError (err )
530+ framework .ExpectEqual (out , "test" )
531+
532+ deployment , err := kubeClient .RawClient ().AppsV1 ().Deployments (ns ).Get (context .TODO (), "nginx-inline-deployment" , metav1.GetOptions {})
533+ framework .ExpectNoError (err )
534+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Name , "nginx" )
535+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Image , "nginx:1.23.3" )
536+ framework .ExpectEqual (deployment .Spec .Template .GetObjectMeta ().GetLabels (), map [string ]string {"app" : "nginx" , "test" : "test123" })
537+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [1 ].Name , "busybox" )
538+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [2 ].Name , "alpine" )
539+ // Ensure the wildcard works
540+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [0 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
541+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [1 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
542+ framework .ExpectEqual (deployment .Spec .Template .Spec .Containers [2 ].Env [0 ], v1.EnvVar {Name : "test" , Value : "test123" })
543+ })
544+
545+
441546 ginkgo .It ("should deploy helm chart from specific branch in git repo" , func () {
442547 tempDir , err := framework .CopyToTempDir ("tests/deploy/testdata/helm_git_branch" )
443548 framework .ExpectNoError (err )
0 commit comments