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