github.com/xgoffin/jenkins-library@v1.154.0/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  		packageJSONFiles, err := npmExecutor.FindPackageJSONFilesWithExcludes(config.BuildDescriptorExcludeList)
    83  		if err != nil {
    84  			return err
    85  		}
    86  
    87  		err = npmExecutor.PublishAllPackages(packageJSONFiles, config.RepositoryURL, config.RepositoryUsername, config.RepositoryPassword, config.PackBeforePublish)
    88  		if err != nil {
    89  			return err
    90  		}
    91  	}
    92  
    93  	return nil
    94  }