github.com/jaylevin/jenkins-library@v1.230.4/cmd/helmExecute.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 6 "github.com/SAP/jenkins-library/pkg/kubernetes" 7 "github.com/SAP/jenkins-library/pkg/log" 8 "github.com/SAP/jenkins-library/pkg/telemetry" 9 "github.com/SAP/jenkins-library/pkg/versioning" 10 ) 11 12 func helmExecute(config helmExecuteOptions, telemetryData *telemetry.CustomData) { 13 helmConfig := kubernetes.HelmExecuteOptions{ 14 ChartPath: config.ChartPath, 15 Image: config.Image, 16 Namespace: config.Namespace, 17 KubeContext: config.KubeContext, 18 KubeConfig: config.KubeConfig, 19 HelmDeployWaitSeconds: config.HelmDeployWaitSeconds, 20 AppVersion: config.AppVersion, 21 Dependency: config.Dependency, 22 PackageDependencyUpdate: config.PackageDependencyUpdate, 23 HelmValues: config.HelmValues, 24 FilterTest: config.FilterTest, 25 DumpLogs: config.DumpLogs, 26 TargetRepositoryURL: config.TargetRepositoryURL, 27 TargetRepositoryName: config.TargetRepositoryName, 28 TargetRepositoryUser: config.TargetRepositoryUser, 29 TargetRepositoryPassword: config.TargetRepositoryPassword, 30 HelmCommand: config.HelmCommand, 31 CustomTLSCertificateLinks: config.CustomTLSCertificateLinks, 32 Version: config.Version, 33 PublishVersion: config.Version, 34 } 35 36 utils := kubernetes.NewDeployUtilsBundle(helmConfig.CustomTLSCertificateLinks) 37 38 artifactOpts := versioning.Options{ 39 VersioningScheme: "library", 40 } 41 42 artifact, err := versioning.GetArtifact("helm", "", &artifactOpts, utils) 43 if err != nil { 44 log.Entry().WithError(err).Fatalf("getting artifact information failed: %v", err) 45 } 46 artifactInfo, err := artifact.GetCoordinates() 47 48 helmConfig.DeploymentName = artifactInfo.ArtifactID 49 50 if len(helmConfig.PublishVersion) == 0 { 51 helmConfig.PublishVersion = artifactInfo.Version 52 } 53 54 helmExecutor := kubernetes.NewHelmExecutor(helmConfig, utils, GeneralConfig.Verbose, log.Writer()) 55 56 // error situations should stop execution through log.Entry().Fatal() call which leads to an os.Exit(1) in the end 57 if err := runHelmExecute(config, helmExecutor); err != nil { 58 log.Entry().WithError(err).Fatalf("step execution failed: %v", err) 59 } 60 } 61 62 func runHelmExecute(config helmExecuteOptions, helmExecutor kubernetes.HelmExecutor) error { 63 switch config.HelmCommand { 64 case "upgrade": 65 if err := helmExecutor.RunHelmUpgrade(); err != nil { 66 return fmt.Errorf("failed to execute upgrade: %v", err) 67 } 68 case "lint": 69 if err := helmExecutor.RunHelmLint(); err != nil { 70 return fmt.Errorf("failed to execute helm lint: %v", err) 71 } 72 case "install": 73 if err := helmExecutor.RunHelmInstall(); err != nil { 74 return fmt.Errorf("failed to execute helm install: %v", err) 75 } 76 case "test": 77 if err := helmExecutor.RunHelmTest(); err != nil { 78 return fmt.Errorf("failed to execute helm test: %v", err) 79 } 80 case "uninstall": 81 if err := helmExecutor.RunHelmUninstall(); err != nil { 82 return fmt.Errorf("failed to execute helm uninstall: %v", err) 83 } 84 case "dependency": 85 if err := helmExecutor.RunHelmDependency(); err != nil { 86 return fmt.Errorf("failed to execute helm dependency: %v", err) 87 } 88 case "publish": 89 if err := helmExecutor.RunHelmPublish(); err != nil { 90 return fmt.Errorf("failed to execute helm publish: %v", err) 91 } 92 default: 93 if err := runHelmExecuteDefault(config, helmExecutor); err != nil { 94 return err 95 } 96 } 97 98 return nil 99 } 100 101 func runHelmExecuteDefault(config helmExecuteOptions, helmExecutor kubernetes.HelmExecutor) error { 102 if err := helmExecutor.RunHelmLint(); err != nil { 103 return fmt.Errorf("failed to execute helm lint: %v", err) 104 } 105 106 if len(config.Dependency) > 0 { 107 if err := helmExecutor.RunHelmDependency(); err != nil { 108 return fmt.Errorf("failed to execute helm dependency: %v", err) 109 } 110 } 111 112 if config.Publish { 113 if err := helmExecutor.RunHelmPublish(); err != nil { 114 return fmt.Errorf("failed to execute helm publish: %v", err) 115 } 116 } 117 118 return nil 119 }