github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/npmExecuteScripts.go (about) 1 package cmd 2 3 import ( 4 "github.com/SAP/jenkins-library/pkg/buildsettings" 5 "github.com/SAP/jenkins-library/pkg/log" 6 "github.com/SAP/jenkins-library/pkg/npm" 7 "github.com/SAP/jenkins-library/pkg/telemetry" 8 ) 9 10 func npmExecuteScripts(config npmExecuteScriptsOptions, telemetryData *telemetry.CustomData, commonPipelineEnvironment *npmExecuteScriptsCommonPipelineEnvironment) { 11 npmExecutorOptions := npm.ExecutorOptions{DefaultNpmRegistry: config.DefaultNpmRegistry} 12 npmExecutor := npm.NewExecutor(npmExecutorOptions) 13 14 err := runNpmExecuteScripts(npmExecutor, &config, commonPipelineEnvironment) 15 if err != nil { 16 log.SetErrorCategory(log.ErrorBuild) 17 log.Entry().WithError(err).Fatal("step execution failed") 18 } 19 } 20 21 func runNpmExecuteScripts(npmExecutor npm.Executor, config *npmExecuteScriptsOptions, commonPipelineEnvironment *npmExecuteScriptsCommonPipelineEnvironment) error { 22 if config.Install { 23 if len(config.BuildDescriptorList) > 0 { 24 if err := npmExecutor.InstallAllDependencies(config.BuildDescriptorList); err != nil { 25 return err 26 } 27 } else { 28 packageJSONFiles, err := npmExecutor.FindPackageJSONFilesWithExcludes(config.BuildDescriptorExcludeList) 29 if err != nil { 30 return err 31 } 32 33 if err := npmExecutor.InstallAllDependencies(packageJSONFiles); err != nil { 34 return err 35 } 36 } 37 } 38 39 if config.CreateBOM { 40 if len(config.BuildDescriptorList) > 0 { 41 if err := npmExecutor.CreateBOM(config.BuildDescriptorList); err != nil { 42 return err 43 } 44 } else { 45 packageJSONFiles, err := npmExecutor.FindPackageJSONFilesWithExcludes(config.BuildDescriptorExcludeList) 46 if err != nil { 47 return err 48 } 49 50 if err := npmExecutor.CreateBOM(packageJSONFiles); err != nil { 51 return err 52 } 53 } 54 } 55 56 err := npmExecutor.RunScriptsInAllPackages(config.RunScripts, nil, config.ScriptOptions, config.VirtualFrameBuffer, config.BuildDescriptorExcludeList, config.BuildDescriptorList) 57 if err != nil { 58 return err 59 } 60 61 log.Entry().Debugf("creating build settings information...") 62 stepName := "npmExecuteScripts" 63 dockerImage, err := GetDockerImageValue(stepName) 64 if err != nil { 65 return err 66 } 67 68 npmConfig := buildsettings.BuildOptions{ 69 Publish: config.Publish, 70 CreateBOM: config.CreateBOM, 71 DefaultNpmRegistry: config.DefaultNpmRegistry, 72 BuildSettingsInfo: config.BuildSettingsInfo, 73 DockerImage: dockerImage, 74 } 75 buildSettingsInfo, err := buildsettings.CreateBuildSettingsInfo(&npmConfig, stepName) 76 if err != nil { 77 log.Entry().Warnf("failed to create build settings info: %v", err) 78 } 79 commonPipelineEnvironment.custom.buildSettingsInfo = buildSettingsInfo 80 81 if config.Publish { 82 if len(config.BuildDescriptorList) > 0 { 83 err = npmExecutor.PublishAllPackages(config.BuildDescriptorList, config.RepositoryURL, config.RepositoryUsername, config.RepositoryPassword, config.PackBeforePublish) 84 if err != nil { 85 return err 86 } 87 } else { 88 packageJSONFiles, err := npmExecutor.FindPackageJSONFilesWithExcludes(config.BuildDescriptorExcludeList) 89 if err != nil { 90 return err 91 } 92 93 err = npmExecutor.PublishAllPackages(packageJSONFiles, config.RepositoryURL, config.RepositoryUsername, config.RepositoryPassword, config.PackBeforePublish) 94 if err != nil { 95 return err 96 } 97 } 98 } 99 100 return nil 101 }