You've already forked sap-jenkins-library
							
							
				mirror of
				https://github.com/SAP/jenkins-library.git
				synced 2025-10-30 23:57:50 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			1186 lines
		
	
	
		
			57 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			1186 lines
		
	
	
		
			57 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by piper's step-generator. DO NOT EDIT.
 | |
| 
 | |
| package cmd
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"reflect"
 | |
| 	"strings"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/SAP/jenkins-library/pkg/config"
 | |
| 	"github.com/SAP/jenkins-library/pkg/gcp"
 | |
| 	"github.com/SAP/jenkins-library/pkg/gcs"
 | |
| 	"github.com/SAP/jenkins-library/pkg/log"
 | |
| 	"github.com/SAP/jenkins-library/pkg/piperenv"
 | |
| 	"github.com/SAP/jenkins-library/pkg/splunk"
 | |
| 	"github.com/SAP/jenkins-library/pkg/telemetry"
 | |
| 	"github.com/SAP/jenkins-library/pkg/validation"
 | |
| 	"github.com/bmatcuk/doublestar"
 | |
| 	"github.com/spf13/cobra"
 | |
| )
 | |
| 
 | |
| type whitesourceExecuteScanOptions struct {
 | |
| 	AgentDownloadURL                     string   `json:"agentDownloadUrl,omitempty"`
 | |
| 	AgentFileName                        string   `json:"agentFileName,omitempty"`
 | |
| 	AgentParameters                      []string `json:"agentParameters,omitempty"`
 | |
| 	AgentURL                             string   `json:"agentUrl,omitempty"`
 | |
| 	AggregateVersionWideReport           bool     `json:"aggregateVersionWideReport,omitempty"`
 | |
| 	AssessmentFile                       string   `json:"assessmentFile,omitempty"`
 | |
| 	BuildDescriptorExcludeList           []string `json:"buildDescriptorExcludeList,omitempty"`
 | |
| 	BuildDescriptorFile                  string   `json:"buildDescriptorFile,omitempty"`
 | |
| 	BuildTool                            string   `json:"buildTool,omitempty"`
 | |
| 	ConfigFilePath                       string   `json:"configFilePath,omitempty"`
 | |
| 	UseGlobalConfiguration               bool     `json:"useGlobalConfiguration,omitempty"`
 | |
| 	ContainerRegistryPassword            string   `json:"containerRegistryPassword,omitempty"`
 | |
| 	ContainerRegistryUser                string   `json:"containerRegistryUser,omitempty"`
 | |
| 	CreateProductFromPipeline            bool     `json:"createProductFromPipeline,omitempty"`
 | |
| 	CustomScanVersion                    string   `json:"customScanVersion,omitempty"`
 | |
| 	CvssSeverityLimit                    string   `json:"cvssSeverityLimit,omitempty"`
 | |
| 	ScanPath                             string   `json:"scanPath,omitempty"`
 | |
| 	DockerConfigJSON                     string   `json:"dockerConfigJSON,omitempty"`
 | |
| 	EmailAddressesOfInitialProductAdmins []string `json:"emailAddressesOfInitialProductAdmins,omitempty"`
 | |
| 	Excludes                             []string `json:"excludes,omitempty"`
 | |
| 	FailOnSevereVulnerabilities          bool     `json:"failOnSevereVulnerabilities,omitempty"`
 | |
| 	Includes                             []string `json:"includes,omitempty"`
 | |
| 	InstallCommand                       string   `json:"installCommand,omitempty"`
 | |
| 	JreDownloadURL                       string   `json:"jreDownloadUrl,omitempty"`
 | |
| 	LicensingVulnerabilities             bool     `json:"licensingVulnerabilities,omitempty"`
 | |
| 	OrgToken                             string   `json:"orgToken,omitempty"`
 | |
| 	ProductName                          string   `json:"productName,omitempty"`
 | |
| 	ProductToken                         string   `json:"productToken,omitempty"`
 | |
| 	Version                              string   `json:"version,omitempty"`
 | |
| 	ProjectName                          string   `json:"projectName,omitempty"`
 | |
| 	ProjectToken                         string   `json:"projectToken,omitempty"`
 | |
| 	Reporting                            bool     `json:"reporting,omitempty"`
 | |
| 	ScanImage                            string   `json:"scanImage,omitempty"`
 | |
| 	ScanImages                           []string `json:"scanImages,omitempty"`
 | |
| 	SkipParentProjectResolution          bool     `json:"skipParentProjectResolution,omitempty"`
 | |
| 	ActivateMultipleImagesScan           bool     `json:"activateMultipleImagesScan,omitempty"`
 | |
| 	ScanImageRegistryURL                 string   `json:"scanImageRegistryUrl,omitempty"`
 | |
| 	SecurityVulnerabilities              bool     `json:"securityVulnerabilities,omitempty"`
 | |
| 	ServiceURL                           string   `json:"serviceUrl,omitempty"`
 | |
| 	Timeout                              int      `json:"timeout,omitempty"`
 | |
| 	UserToken                            string   `json:"userToken,omitempty"`
 | |
| 	VersioningModel                      string   `json:"versioningModel,omitempty"`
 | |
| 	VulnerabilityReportFormat            string   `json:"vulnerabilityReportFormat,omitempty" validate:"possible-values=xlsx json xml"`
 | |
| 	VulnerabilityReportTitle             string   `json:"vulnerabilityReportTitle,omitempty"`
 | |
| 	ProjectSettingsFile                  string   `json:"projectSettingsFile,omitempty"`
 | |
| 	GlobalSettingsFile                   string   `json:"globalSettingsFile,omitempty"`
 | |
| 	M2Path                               string   `json:"m2Path,omitempty"`
 | |
| 	InstallArtifacts                     bool     `json:"installArtifacts,omitempty"`
 | |
| 	DefaultNpmRegistry                   string   `json:"defaultNpmRegistry,omitempty"`
 | |
| 	NpmIncludeDevDependencies            bool     `json:"npmIncludeDevDependencies,omitempty"`
 | |
| 	DisableNpmSubmodulesAggregation      bool     `json:"disableNpmSubmodulesAggregation,omitempty"`
 | |
| 	GithubToken                          string   `json:"githubToken,omitempty"`
 | |
| 	CreateResultIssue                    bool     `json:"createResultIssue,omitempty"`
 | |
| 	GithubAPIURL                         string   `json:"githubApiUrl,omitempty"`
 | |
| 	Owner                                string   `json:"owner,omitempty"`
 | |
| 	Repository                           string   `json:"repository,omitempty"`
 | |
| 	Assignees                            []string `json:"assignees,omitempty"`
 | |
| 	CustomTLSCertificateLinks            []string `json:"customTlsCertificateLinks,omitempty"`
 | |
| 	PrivateModules                       string   `json:"privateModules,omitempty"`
 | |
| 	PrivateModulesGitToken               string   `json:"privateModulesGitToken,omitempty"`
 | |
| 	SkipProjectsWithEmptyTokens          bool     `json:"SkipProjectsWithEmptyTokens,omitempty"`
 | |
| }
 | |
| 
 | |
| type whitesourceExecuteScanCommonPipelineEnvironment struct {
 | |
| 	custom struct {
 | |
| 		whitesourceProjectNames []string
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (p *whitesourceExecuteScanCommonPipelineEnvironment) persist(path, resourceName string) {
 | |
| 	content := []struct {
 | |
| 		category string
 | |
| 		name     string
 | |
| 		value    interface{}
 | |
| 	}{
 | |
| 		{category: "custom", name: "whitesourceProjectNames", value: p.custom.whitesourceProjectNames},
 | |
| 	}
 | |
| 
 | |
| 	errCount := 0
 | |
| 	for _, param := range content {
 | |
| 		err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(param.category, param.name), param.value)
 | |
| 		if err != nil {
 | |
| 			log.Entry().WithError(err).Error("Error persisting piper environment.")
 | |
| 			errCount++
 | |
| 		}
 | |
| 	}
 | |
| 	if errCount > 0 {
 | |
| 		log.Entry().Error("failed to persist Piper environment")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type whitesourceExecuteScanInflux struct {
 | |
| 	step_data struct {
 | |
| 		fields struct {
 | |
| 			whitesource bool
 | |
| 		}
 | |
| 		tags struct {
 | |
| 		}
 | |
| 	}
 | |
| 	whitesource_data struct {
 | |
| 		fields struct {
 | |
| 			vulnerabilities       int
 | |
| 			major_vulnerabilities int
 | |
| 			minor_vulnerabilities int
 | |
| 			policy_violations     int
 | |
| 		}
 | |
| 		tags struct {
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (i *whitesourceExecuteScanInflux) persist(path, resourceName string) {
 | |
| 	measurementContent := []struct {
 | |
| 		measurement string
 | |
| 		valType     string
 | |
| 		name        string
 | |
| 		value       interface{}
 | |
| 	}{
 | |
| 		{valType: config.InfluxField, measurement: "step_data", name: "whitesource", value: i.step_data.fields.whitesource},
 | |
| 		{valType: config.InfluxField, measurement: "whitesource_data", name: "vulnerabilities", value: i.whitesource_data.fields.vulnerabilities},
 | |
| 		{valType: config.InfluxField, measurement: "whitesource_data", name: "major_vulnerabilities", value: i.whitesource_data.fields.major_vulnerabilities},
 | |
| 		{valType: config.InfluxField, measurement: "whitesource_data", name: "minor_vulnerabilities", value: i.whitesource_data.fields.minor_vulnerabilities},
 | |
| 		{valType: config.InfluxField, measurement: "whitesource_data", name: "policy_violations", value: i.whitesource_data.fields.policy_violations},
 | |
| 	}
 | |
| 
 | |
| 	errCount := 0
 | |
| 	for _, metric := range measurementContent {
 | |
| 		err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(metric.measurement, fmt.Sprintf("%vs", metric.valType), metric.name), metric.value)
 | |
| 		if err != nil {
 | |
| 			log.Entry().WithError(err).Error("Error persisting influx environment.")
 | |
| 			errCount++
 | |
| 		}
 | |
| 	}
 | |
| 	if errCount > 0 {
 | |
| 		log.Entry().Error("failed to persist Influx environment")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type whitesourceExecuteScanReports struct {
 | |
| }
 | |
| 
 | |
| func (p *whitesourceExecuteScanReports) persist(stepConfig whitesourceExecuteScanOptions, gcpJsonKeyFilePath string, gcsBucketId string, gcsFolderPath string, gcsSubFolder string) {
 | |
| 	if gcsBucketId == "" {
 | |
| 		log.Entry().Info("persisting reports to GCS is disabled, because gcsBucketId is empty")
 | |
| 		return
 | |
| 	}
 | |
| 	log.Entry().Info("Uploading reports to Google Cloud Storage...")
 | |
| 	content := []gcs.ReportOutputParam{
 | |
| 		{FilePattern: "**/whitesource-ip.json", ParamRef: "", StepResultType: "whitesource-ip"},
 | |
| 		{FilePattern: "**/*risk-report.pdf", ParamRef: "", StepResultType: "whitesource-ip"},
 | |
| 		{FilePattern: "**/toolrun_whitesource_*.json", ParamRef: "", StepResultType: "whitesource-ip"},
 | |
| 		{FilePattern: "**/piper_whitesource_vulnerability_report.html", ParamRef: "", StepResultType: "whitesource-security"},
 | |
| 		{FilePattern: "**/*risk-report.pdf", ParamRef: "", StepResultType: "whitesource-security"},
 | |
| 		{FilePattern: "**/toolrun_whitesource_*.json", ParamRef: "", StepResultType: "whitesource-security"},
 | |
| 		{FilePattern: "**/piper_whitesource_vulnerability.sarif", ParamRef: "", StepResultType: "whitesource-security"},
 | |
| 		{FilePattern: "**/piper_whitesource_sbom.xml", ParamRef: "", StepResultType: "whitesource-security"},
 | |
| 	}
 | |
| 
 | |
| 	gcsClient, err := gcs.NewClient(gcpJsonKeyFilePath, "")
 | |
| 	if err != nil {
 | |
| 		log.Entry().Errorf("creation of GCS client failed: %v", err)
 | |
| 		return
 | |
| 	}
 | |
| 	defer gcsClient.Close()
 | |
| 	structVal := reflect.ValueOf(&stepConfig).Elem()
 | |
| 	inputParameters := map[string]string{}
 | |
| 	for i := 0; i < structVal.NumField(); i++ {
 | |
| 		field := structVal.Type().Field(i)
 | |
| 		if field.Type.String() == "string" {
 | |
| 			paramName := strings.Split(field.Tag.Get("json"), ",")
 | |
| 			paramValue, _ := structVal.Field(i).Interface().(string)
 | |
| 			inputParameters[paramName[0]] = paramValue
 | |
| 		}
 | |
| 	}
 | |
| 	if err := gcs.PersistReportsToGCS(gcsClient, content, inputParameters, gcsFolderPath, gcsBucketId, gcsSubFolder, doublestar.Glob, os.Stat); err != nil {
 | |
| 		log.Entry().Errorf("failed to persist reports: %v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // WhitesourceExecuteScanCommand Execute a Mend (formerly known as WhiteSource) scan
 | |
| func WhitesourceExecuteScanCommand() *cobra.Command {
 | |
| 	const STEP_NAME = "whitesourceExecuteScan"
 | |
| 
 | |
| 	metadata := whitesourceExecuteScanMetadata()
 | |
| 	var stepConfig whitesourceExecuteScanOptions
 | |
| 	var startTime time.Time
 | |
| 	var commonPipelineEnvironment whitesourceExecuteScanCommonPipelineEnvironment
 | |
| 	var influx whitesourceExecuteScanInflux
 | |
| 	var reports whitesourceExecuteScanReports
 | |
| 	var logCollector *log.CollectorHook
 | |
| 	var splunkClient *splunk.Splunk
 | |
| 	telemetryClient := &telemetry.Telemetry{}
 | |
| 
 | |
| 	var createWhitesourceExecuteScanCmd = &cobra.Command{
 | |
| 		Use:   STEP_NAME,
 | |
| 		Short: "Execute a Mend (formerly known as WhiteSource) scan",
 | |
| 		Long: `With this step [Mend](https://www.mend.io/) (formerly known as Whitesource) security and license compliance scans can be executed and assessed.
 | |
| Mend is a Software as a Service offering based on a so called unified agent that locally determines the dependency
 | |
| tree of a node.js, Java, Python, Ruby, or Scala based solution and sends it to the WhiteSource server for a policy based license compliance
 | |
| check and additional Free and Open Source Software Publicly Known Vulnerabilities detection.
 | |
| 
 | |
| The step uses the so-called Mend Unified Agent. For details please refer to the [Mend Unified Agent Documentation](https://docs.mend.io/bundle/unified_agent/page/overview_of_the_unified_agent.html).
 | |
| 
 | |
| !!! note "Docker Images"
 | |
|     The underlying Docker images are public and specific to the solution's programming language(s) and therefore may have to be exchanged
 | |
|     to fit to and support the relevant scenario. The default Python environment used is i.e. Python 3 based.`,
 | |
| 		PreRunE: func(cmd *cobra.Command, _ []string) error {
 | |
| 			startTime = time.Now()
 | |
| 			log.SetStepName(STEP_NAME)
 | |
| 			log.SetVerbose(GeneralConfig.Verbose)
 | |
| 
 | |
| 			GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens)
 | |
| 
 | |
| 			path, err := os.Getwd()
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path}
 | |
| 			log.RegisterHook(fatalHook)
 | |
| 
 | |
| 			err = PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile)
 | |
| 			if err != nil {
 | |
| 				log.SetErrorCategory(log.ErrorConfiguration)
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			// Set step error patterns for improved error detection
 | |
| 			stepErrors := make([]log.StepError, len(metadata.Metadata.Errors))
 | |
| 			for i, err := range metadata.Metadata.Errors {
 | |
| 				stepErrors[i] = log.StepError{
 | |
| 					Pattern:  err.Pattern,
 | |
| 					Message:  err.Message,
 | |
| 					Category: err.Category,
 | |
| 				}
 | |
| 			}
 | |
| 			log.SetStepErrors(stepErrors)
 | |
| 			log.RegisterSecret(stepConfig.ContainerRegistryPassword)
 | |
| 			log.RegisterSecret(stepConfig.ContainerRegistryUser)
 | |
| 			log.RegisterSecret(stepConfig.DockerConfigJSON)
 | |
| 			log.RegisterSecret(stepConfig.OrgToken)
 | |
| 			log.RegisterSecret(stepConfig.UserToken)
 | |
| 			log.RegisterSecret(stepConfig.GithubToken)
 | |
| 			log.RegisterSecret(stepConfig.PrivateModulesGitToken)
 | |
| 
 | |
| 			if len(GeneralConfig.HookConfig.SentryConfig.Dsn) > 0 {
 | |
| 				sentryHook := log.NewSentryHook(GeneralConfig.HookConfig.SentryConfig.Dsn, GeneralConfig.CorrelationID)
 | |
| 				log.RegisterHook(&sentryHook)
 | |
| 			}
 | |
| 
 | |
| 			if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 || len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 {
 | |
| 				splunkClient = &splunk.Splunk{}
 | |
| 				logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID}
 | |
| 				log.RegisterHook(logCollector)
 | |
| 			}
 | |
| 
 | |
| 			if err = log.RegisterANSHookIfConfigured(GeneralConfig.CorrelationID); err != nil {
 | |
| 				log.Entry().WithError(err).Warn("failed to set up SAP Alert Notification Service log hook")
 | |
| 			}
 | |
| 
 | |
| 			validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages())
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			if err = validation.ValidateStruct(stepConfig); err != nil {
 | |
| 				log.SetErrorCategory(log.ErrorConfiguration)
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return nil
 | |
| 		},
 | |
| 		Run: func(_ *cobra.Command, _ []string) {
 | |
| 			vaultClient := config.GlobalVaultClient()
 | |
| 			if vaultClient != nil {
 | |
| 				defer vaultClient.MustRevokeToken()
 | |
| 			}
 | |
| 
 | |
| 			stepTelemetryData := telemetry.CustomData{}
 | |
| 			stepTelemetryData.ErrorCode = "1"
 | |
| 			handler := func() {
 | |
| 				commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment")
 | |
| 				influx.persist(GeneralConfig.EnvRootPath, "influx")
 | |
| 				reports.persist(stepConfig, GeneralConfig.GCPJsonKeyFilePath, GeneralConfig.GCSBucketId, GeneralConfig.GCSFolderPath, GeneralConfig.GCSSubFolder)
 | |
| 				config.RemoveVaultSecretFiles()
 | |
| 				stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds())
 | |
| 				stepTelemetryData.ErrorCategory = log.GetErrorCategory().String()
 | |
| 				stepTelemetryData.PiperCommitHash = GitCommit
 | |
| 				telemetryClient.SetData(&stepTelemetryData)
 | |
| 				telemetryClient.LogStepTelemetryData()
 | |
| 				if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
 | |
| 					splunkClient.Initialize(GeneralConfig.CorrelationID,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.Dsn,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.Token,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.Index,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.SendLogs)
 | |
| 					splunkClient.Send(telemetryClient.GetData(), logCollector)
 | |
| 				}
 | |
| 				if len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 {
 | |
| 					splunkClient.Initialize(GeneralConfig.CorrelationID,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.ProdCriblToken,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.ProdCriblIndex,
 | |
| 						GeneralConfig.HookConfig.SplunkConfig.SendLogs)
 | |
| 					splunkClient.Send(telemetryClient.GetData(), logCollector)
 | |
| 				}
 | |
| 				if GeneralConfig.HookConfig.GCPPubSubConfig.Enabled {
 | |
| 					err := gcp.NewGcpPubsubClient(
 | |
| 						vaultClient,
 | |
| 						GeneralConfig.HookConfig.GCPPubSubConfig.ProjectNumber,
 | |
| 						GeneralConfig.HookConfig.GCPPubSubConfig.IdentityPool,
 | |
| 						GeneralConfig.HookConfig.GCPPubSubConfig.IdentityProvider,
 | |
| 						GeneralConfig.CorrelationID,
 | |
| 						GeneralConfig.HookConfig.OIDCConfig.RoleID,
 | |
| 					).Publish(GeneralConfig.HookConfig.GCPPubSubConfig.Topic, telemetryClient.GetDataBytes())
 | |
| 					if err != nil {
 | |
| 						log.Entry().WithError(err).Warn("event publish failed")
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			log.DeferExitHandler(handler)
 | |
| 			defer handler()
 | |
| 			telemetryClient.Initialize(STEP_NAME)
 | |
| 			whitesourceExecuteScan(stepConfig, &stepTelemetryData, &commonPipelineEnvironment, &influx)
 | |
| 			stepTelemetryData.ErrorCode = "0"
 | |
| 			log.Entry().Info("SUCCESS")
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	addWhitesourceExecuteScanFlags(createWhitesourceExecuteScanCmd, &stepConfig)
 | |
| 	return createWhitesourceExecuteScanCmd
 | |
| }
 | |
| 
 | |
| func addWhitesourceExecuteScanFlags(cmd *cobra.Command, stepConfig *whitesourceExecuteScanOptions) {
 | |
| 	cmd.Flags().StringVar(&stepConfig.AgentDownloadURL, "agentDownloadUrl", `https://downloads.mend.io/wss-unified-agent.jar`, "URL used to download the latest version of the WhiteSource Unified Agent.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.AgentFileName, "agentFileName", `wss-unified-agent.jar`, "Locally used name for the Unified Agent jar file after download.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.AgentParameters, "agentParameters", []string{}, "[NOT IMPLEMENTED] List of additional parameters passed to the Unified Agent command line.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.AgentURL, "agentUrl", `https://saas.whitesourcesoftware.com/agent`, "URL to the WhiteSource agent endpoint.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.AggregateVersionWideReport, "aggregateVersionWideReport", false, "This does not run a scan, instead just generated a report for all projects with projectVersion = config.ProductVersion")
 | |
| 	cmd.Flags().StringVar(&stepConfig.AssessmentFile, "assessmentFile", `hs-assessments.yaml`, "Explicit path to the assessment YAML file.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.BuildDescriptorExcludeList, "buildDescriptorExcludeList", []string{`unit-tests/pom.xml`, `integration-tests/pom.xml`}, "List of build descriptors and therefore modules to exclude from the scan and assessment activities.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.BuildDescriptorFile, "buildDescriptorFile", os.Getenv("PIPER_buildDescriptorFile"), "Explicit path to the build descriptor file.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.BuildTool, "buildTool", os.Getenv("PIPER_buildTool"), "Defines the tool which is used for building the artifact.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ConfigFilePath, "configFilePath", `./wss-unified-agent.config`, "Explicit path to the WhiteSource Unified Agent configuration file.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.UseGlobalConfiguration, "useGlobalConfiguration", false, "The parameter is applicable for multi-module mend projects. If set to true, the configuration file will be used for all modules. Otherwise each module will require its own configuration file in the module folder.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ContainerRegistryPassword, "containerRegistryPassword", os.Getenv("PIPER_containerRegistryPassword"), "For `buildTool: docker`: Password for container registry access - typically provided by the CI/CD environment.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ContainerRegistryUser, "containerRegistryUser", os.Getenv("PIPER_containerRegistryUser"), "For `buildTool: docker`: Username for container registry access - typically provided by the CI/CD environment.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.CreateProductFromPipeline, "createProductFromPipeline", true, "Whether to create the related WhiteSource product on the fly based on the supplied pipeline configuration.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.CustomScanVersion, "customScanVersion", os.Getenv("PIPER_customScanVersion"), "Custom version of the WhiteSource project used as source.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.CvssSeverityLimit, "cvssSeverityLimit", `-1`, "Limit of tolerable CVSS v3 score upon assessment and in consequence fails the build. A negative value (like the default of -1) means that the build won't fail.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ScanPath, "scanPath", `.`, "Directory where to start WhiteSource scan.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.DockerConfigJSON, "dockerConfigJSON", os.Getenv("PIPER_dockerConfigJSON"), "Path to the file `.docker/config.json` - this is typically provided by your CI/CD system. You can find more details about the Docker credentials in the [Docker documentation](https://docs.docker.com/engine/reference/commandline/login/).")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.EmailAddressesOfInitialProductAdmins, "emailAddressesOfInitialProductAdmins", []string{}, "The list of email addresses to assign as product admins for newly created WhiteSource products.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.Excludes, "excludes", []string{}, "List of file path patterns to exclude in the scan.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.FailOnSevereVulnerabilities, "failOnSevereVulnerabilities", true, "Whether to fail the step on severe vulnerabilties or not")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.Includes, "includes", []string{}, "List of file path patterns to include in the scan.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.InstallCommand, "installCommand", os.Getenv("PIPER_installCommand"), "Install command that can be used to populate the default docker image for some scenarios.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.JreDownloadURL, "jreDownloadUrl", `https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.13/sapmachine-jre-17.0.13_linux-x64_bin.tar.gz`, "URL used for downloading the Java Runtime Environment (JRE) required to run the WhiteSource Unified Agent.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.LicensingVulnerabilities, "licensingVulnerabilities", true, "[NOT IMPLEMENTED] Whether license compliance is considered and reported as part of the assessment.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.OrgToken, "orgToken", os.Getenv("PIPER_orgToken"), "WhiteSource token identifying your organization.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ProductName, "productName", os.Getenv("PIPER_productName"), "Name of the WhiteSource product used for results aggregation. This parameter is mandatory if the parameter `createProductFromPipeline` is set to `true` and the WhiteSource product does not yet exist. It is also mandatory if the parameter `productToken` is not provided.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ProductToken, "productToken", os.Getenv("PIPER_productToken"), "Token of the WhiteSource product to be created and used for results aggregation, usually determined automatically. Can optionally be provided as an alternative to `productName`.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.Version, "version", os.Getenv("PIPER_version"), "Version of the WhiteSource product to be created and used for results aggregation.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ProjectName, "projectName", os.Getenv("PIPER_projectName"), "The project name used for reporting results in WhiteSource. When provided, all source modules will be scanned into one aggregated WhiteSource project. For scan types `maven`, `mta`, `npm`, the default is to generate one WhiteSource project per module, whereas the project name is derived from the module's build descriptor. For NPM modules, project aggregation is not supported, the last scanned NPM module will override all previously aggregated scan results!")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ProjectToken, "projectToken", os.Getenv("PIPER_projectToken"), "Project token to execute scan on. Ignored for scan types `maven`, `mta` and `npm`. Used for project aggregation when scanning with the Unified Agent and can be provided as an alternative to `projectName`.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.Reporting, "reporting", true, "Whether assessment is being done at all, defaults to `true`")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ScanImage, "scanImage", os.Getenv("PIPER_scanImage"), "For `buildTool: docker`: Defines the docker image which should be scanned.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.ScanImages, "scanImages", []string{}, "For `buildTool: docker`: Allowing to scan multiple docker images. In case parent project will not contain any dependecies, use skipParentProjectResolution parameter")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.SkipParentProjectResolution, "skipParentProjectResolution", false, "Parameter for multi-module, multi-images projects to skip the parent project resolution for reporing purpose. Could be used if parent project is set as just a placeholder for scan and doesn't contain any dependencies.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.ActivateMultipleImagesScan, "activateMultipleImagesScan", false, "Use this parameter to activate the scan of multiple images. Additionally you'll need to provide skipParentProjectResolution and scanImages parameters")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ScanImageRegistryURL, "scanImageRegistryUrl", os.Getenv("PIPER_scanImageRegistryUrl"), "For `buildTool: docker`: Defines the registry where the scanImage is located.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.SecurityVulnerabilities, "securityVulnerabilities", true, "Whether security compliance is considered and reported as part of the assessment.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ServiceURL, "serviceUrl", `https://saas.whitesourcesoftware.com/api`, "URL to the WhiteSource API endpoint.")
 | |
| 	cmd.Flags().IntVar(&stepConfig.Timeout, "timeout", 900, "Timeout in seconds until an HTTP call is forcefully terminated.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.UserToken, "userToken", os.Getenv("PIPER_userToken"), "User token to access WhiteSource. In Jenkins use case this is automatically filled through the credentials.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.VersioningModel, "versioningModel", `major`, "The default project versioning model used in case `projectVersion` parameter is empty for creating the version based on the build descriptor version to report results in Whitesource, can be one of `'major'`, `'major-minor'`, `'semantic'`, `'full'`")
 | |
| 	cmd.Flags().StringVar(&stepConfig.VulnerabilityReportFormat, "vulnerabilityReportFormat", `xlsx`, "Format of the file the vulnerability report is written to.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.VulnerabilityReportTitle, "vulnerabilityReportTitle", `WhiteSource Security Vulnerability Report`, "Title of vulnerability report written during the assessment phase.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.ProjectSettingsFile, "projectSettingsFile", os.Getenv("PIPER_projectSettingsFile"), "Path to the mvn settings file that should be used as project settings file.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.GlobalSettingsFile, "globalSettingsFile", os.Getenv("PIPER_globalSettingsFile"), "Path to the mvn settings file that should be used as global settings file.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.M2Path, "m2Path", os.Getenv("PIPER_m2Path"), "Path to the location of the local repository that should be used.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.InstallArtifacts, "installArtifacts", false, "If enabled, all artifacts will be installed to the local Maven repository to ensure availability before running WhiteSource. Currently, this parameter is not honored in whitesourceExecuteScan step, as it is internally managed by UA with the 'runPreStep'. In the future, this parameter will be honored based on the individual build tool.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.DefaultNpmRegistry, "defaultNpmRegistry", os.Getenv("PIPER_defaultNpmRegistry"), "URL of the npm registry to use. Defaults to https://registry.npmjs.org/")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.NpmIncludeDevDependencies, "npmIncludeDevDependencies", false, "Enable this if you wish to include NPM DEV dependencies in the scan report")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.DisableNpmSubmodulesAggregation, "disableNpmSubmodulesAggregation", false, "The default Mend behavior is to aggregate all submodules of NPM project into one project in Mend. This parameter disables this behavior, thus for each submodule a separate project is created.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.GithubToken, "githubToken", os.Getenv("PIPER_githubToken"), "GitHub personal access token as per https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.CreateResultIssue, "createResultIssue", false, "Activate creation of a result issue in GitHub.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.GithubAPIURL, "githubApiUrl", `https://api.github.com`, "Set the GitHub API URL.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.Owner, "owner", os.Getenv("PIPER_owner"), "Set the GitHub organization.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.Repository, "repository", os.Getenv("PIPER_repository"), "Set the GitHub repository.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.Assignees, "assignees", []string{``}, "Defines the assignees for the Github Issue created/updated with the results of the scan as a list of login names.")
 | |
| 	cmd.Flags().StringSliceVar(&stepConfig.CustomTLSCertificateLinks, "customTlsCertificateLinks", []string{}, "List of download links to custom TLS certificates. This is required to ensure trusted connections to instances with repositories (like nexus) when publish flag is set to true.")
 | |
| 	cmd.Flags().StringVar(&stepConfig.PrivateModules, "privateModules", os.Getenv("PIPER_privateModules"), "Tells go which modules shall be considered to be private (by setting [GOPRIVATE](https://pkg.go.dev/cmd/go#hdr-Configuration_for_downloading_non_public_code)).")
 | |
| 	cmd.Flags().StringVar(&stepConfig.PrivateModulesGitToken, "privateModulesGitToken", os.Getenv("PIPER_privateModulesGitToken"), "GitHub personal access token as per https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line.")
 | |
| 	cmd.Flags().BoolVar(&stepConfig.SkipProjectsWithEmptyTokens, "SkipProjectsWithEmptyTokens", false, "Skips projects with empty tokens after scanning. This is for testing purposes only and should not be used until we roll out the new parameter")
 | |
| 
 | |
| 	cmd.MarkFlagRequired("buildTool")
 | |
| 	cmd.MarkFlagRequired("orgToken")
 | |
| 	cmd.MarkFlagRequired("userToken")
 | |
| }
 | |
| 
 | |
| // retrieve step metadata
 | |
| func whitesourceExecuteScanMetadata() config.StepData {
 | |
| 	var theMetaData = config.StepData{
 | |
| 		Metadata: config.StepMetadata{
 | |
| 			Name:        "whitesourceExecuteScan",
 | |
| 			Aliases:     []config.Alias{},
 | |
| 			Description: "Execute a Mend (formerly known as WhiteSource) scan",
 | |
| 			Errors: []config.StepError{
 | |
| 				{
 | |
| 					Pattern:  "Open Source Software Security vulnerabilities with CVSS score greater or equal to .* detected in project",
 | |
| 					Message:  "Security vulnerabilities with high CVSS scores detected. Review and address the identified vulnerabilities to meet security requirements.",
 | |
| 					Category: "security",
 | |
| 				},
 | |
| 				{
 | |
| 					Pattern:  "policy violation\\(s\\) found",
 | |
| 					Message:  "Policy violations detected in the scan. Review the violations and update dependencies or policies to resolve compliance issues.",
 | |
| 					Category: "compliance",
 | |
| 				},
 | |
| 				{
 | |
| 					Pattern:  "running command 'java' failed",
 | |
| 					Message:  "Java command execution failed during WhiteSource scan. Verify Java installation, memory settings, and agent configuration.",
 | |
| 					Category: "execution",
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 		Spec: config.StepSpec{
 | |
| 			Inputs: config.StepInputs{
 | |
| 				Secrets: []config.StepSecrets{
 | |
| 					{Name: "userTokenCredentialsId", Description: "Jenkins 'Secret text' credentials ID containing Whitesource user token.", Type: "jenkins", Aliases: []config.Alias{{Name: "whitesourceUserTokenCredentialsId", Deprecated: false}, {Name: "whitesource/userTokenCredentialsId", Deprecated: true}}},
 | |
| 					{Name: "orgAdminUserTokenCredentialsId", Description: "Jenkins 'Secret text' credentials ID containing Whitesource org admin token.", Type: "jenkins", Aliases: []config.Alias{{Name: "whitesourceOrgAdminUserTokenCredentialsId", Deprecated: false}, {Name: "whitesource/orgAdminUserTokenCredentialsId", Deprecated: true}}},
 | |
| 					{Name: "dockerConfigJsonCredentialsId", Description: "Jenkins 'Secret file' credentials ID containing Docker config.json (with registry credential(s)). You can find more details about the Docker credentials in the [Docker documentation](https://docs.docker.com/engine/reference/commandline/login/).", Type: "jenkins", Aliases: []config.Alias{{Name: "dockerCredentialsId", Deprecated: true}}},
 | |
| 					{Name: "githubTokenCredentialsId", Description: "Jenkins 'Secret text' credentials ID containing token to authenticate to GitHub.", Type: "jenkins"},
 | |
| 					{Name: "golangPrivateModulesGitTokenCredentialsId", Description: "Jenkins 'Username with password' credentials ID containing username/password for http access to your git repos where your go private modules are stored.", Type: "jenkins"},
 | |
| 				},
 | |
| 				Resources: []config.StepResources{
 | |
| 					{Name: "buildDescriptor", Type: "stash"},
 | |
| 					{Name: "opensourceConfiguration", Type: "stash"},
 | |
| 					{Name: "checkmarx", Type: "stash"},
 | |
| 					{Name: "checkmarxOne", Type: "stash"},
 | |
| 				},
 | |
| 				Parameters: []config.StepParameters{
 | |
| 					{
 | |
| 						Name:        "agentDownloadUrl",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `https://downloads.mend.io/wss-unified-agent.jar`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "agentFileName",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `wss-unified-agent.jar`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "agentParameters",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "agentUrl",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesourceAgentUrl"}},
 | |
| 						Default:     `https://saas.whitesourcesoftware.com/agent`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "aggregateVersionWideReport",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "assessmentFile",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `hs-assessments.yaml`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "buildDescriptorExcludeList",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{`unit-tests/pom.xml`, `integration-tests/pom.xml`},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "buildDescriptorFile",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_buildDescriptorFile"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "buildTool",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "buildTool",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: true,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_buildTool"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "configFilePath",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `./wss-unified-agent.config`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "useGlobalConfiguration",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "GENERAL", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "containerRegistryPassword",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "container/repositoryPassword",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "custom/repositoryPassword",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_containerRegistryPassword"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "containerRegistryUser",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "container/repositoryUsername",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "custom/repositoryUsername",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_containerRegistryUser"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "createProductFromPipeline",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     true,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "customScanVersion",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_customScanVersion"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "cvssSeverityLimit",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `-1`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "scanPath",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `.`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "dockerConfigJSON",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "custom/dockerConfigJSON",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name: "dockerConfigJsonCredentialsId",
 | |
| 								Type: "secret",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:    "dockerConfigFileVaultSecretName",
 | |
| 								Type:    "vaultSecretFile",
 | |
| 								Default: "docker-config",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_dockerConfigJSON"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "emailAddressesOfInitialProductAdmins",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "excludes",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "failOnSevereVulnerabilities",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     true,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "includes",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "installCommand",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_installCommand"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "jreDownloadUrl",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesource/jreDownloadUrl", Deprecated: true}},
 | |
| 						Default:     `https://github.com/SAP/SapMachine/releases/download/sapmachine-17.0.13/sapmachine-jre-17.0.13_linux-x64_bin.tar.gz`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "licensingVulnerabilities",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     true,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "orgToken",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name: "orgAdminUserTokenCredentialsId",
 | |
| 								Type: "secret",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:    "whitesourceVaultSecret",
 | |
| 								Type:    "vaultSecret",
 | |
| 								Default: "whitesource",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: true,
 | |
| 						Aliases:   []config.Alias{{Name: "whitesourceOrgToken"}, {Name: "whitesource/orgToken", Deprecated: true}},
 | |
| 						Default:   os.Getenv("PIPER_orgToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "productName",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesourceProductName"}, {Name: "whitesource/productName", Deprecated: true}},
 | |
| 						Default:     os.Getenv("PIPER_productName"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "productToken",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesourceProductToken"}, {Name: "whitesource/productToken", Deprecated: true}},
 | |
| 						Default:     os.Getenv("PIPER_productToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "version",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "artifactVersion",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{{Name: "productVersion"}, {Name: "whitesourceProductVersion"}, {Name: "whitesource/productVersion", Deprecated: true}},
 | |
| 						Default:   os.Getenv("PIPER_version"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "projectName",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesourceProjectName"}},
 | |
| 						Default:     os.Getenv("PIPER_projectName"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "projectToken",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_projectToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "reporting",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     true,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "scanImage",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "container/imageNameTag",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_scanImage"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "scanImages",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "container/imageNameTags",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "[]string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "skipParentProjectResolution",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "activateMultipleImagesScan",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "scanImageRegistryUrl",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "container/registryUrl",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_scanImageRegistryUrl"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "securityVulnerabilities",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     true,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "serviceUrl",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "whitesourceServiceUrl"}, {Name: "whitesource/serviceUrl", Deprecated: true}},
 | |
| 						Default:     `https://saas.whitesourcesoftware.com/api`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "timeout",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "int",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     900,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "userToken",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name: "userTokenCredentialsId",
 | |
| 								Type: "secret",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:    "whitesourceVaultSecret",
 | |
| 								Type:    "vaultSecret",
 | |
| 								Default: "whitesource",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: true,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_userToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "versioningModel",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "defaultVersioningModel"}},
 | |
| 						Default:     `major`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "vulnerabilityReportFormat",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `xlsx`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "vulnerabilityReportTitle",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `WhiteSource Security Vulnerability Report`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "projectSettingsFile",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "STEPS", "STAGES", "PARAMETERS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "maven/projectSettingsFile"}},
 | |
| 						Default:     os.Getenv("PIPER_projectSettingsFile"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "globalSettingsFile",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "STEPS", "STAGES", "PARAMETERS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "maven/globalSettingsFile"}},
 | |
| 						Default:     os.Getenv("PIPER_globalSettingsFile"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "m2Path",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "STEPS", "STAGES", "PARAMETERS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "maven/m2Path"}},
 | |
| 						Default:     os.Getenv("PIPER_m2Path"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "installArtifacts",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "STEPS", "STAGES", "PARAMETERS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "defaultNpmRegistry",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "GENERAL", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "npm/defaultNpmRegistry"}},
 | |
| 						Default:     os.Getenv("PIPER_defaultNpmRegistry"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "npmIncludeDevDependencies",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "GENERAL", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{{Name: "npm/includeDevDependencies"}},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "disableNpmSubmodulesAggregation",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "GENERAL", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "githubToken",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name: "githubTokenCredentialsId",
 | |
| 								Type: "secret",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:    "githubVaultSecretName",
 | |
| 								Type:    "vaultSecret",
 | |
| 								Default: "github",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{{Name: "access_token"}},
 | |
| 						Default:   os.Getenv("PIPER_githubToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "createResultIssue",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "custom/isOptimizedAndScheduled",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "bool",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   false,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "githubApiUrl",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `https://api.github.com`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "owner",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "github/owner",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{{Name: "githubOrg"}},
 | |
| 						Default:   os.Getenv("PIPER_owner"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "repository",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "github/repository",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{{Name: "githubRepo"}},
 | |
| 						Default:   os.Getenv("PIPER_repository"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "assignees",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{``},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "customTlsCertificateLinks",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "[]string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     []string{},
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "privateModules",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "STEPS", "STAGES", "PARAMETERS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_privateModules"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "privateModulesGitToken",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "golangPrivateModulesGitTokenCredentialsId",
 | |
| 								Param: "password",
 | |
| 								Type:  "secret",
 | |
| 							},
 | |
| 
 | |
| 							{
 | |
| 								Name:    "golangPrivateModulesGitTokenVaultSecret",
 | |
| 								Type:    "vaultSecret",
 | |
| 								Default: "golang",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_privateModulesGitToken"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "SkipProjectsWithEmptyTokens",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "bool",
 | |
| 						Mandatory:   false,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     false,
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			Containers: []config.Container{
 | |
| 				{Image: "buildpack-deps:stretch-curl", WorkingDir: "/tmp", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "dub"}, {Name: "buildTool", Value: "docker"}}}}},
 | |
| 				{Image: "devxci/mbtci-java11-node14", WorkingDir: "/home/mta", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "mta"}}}}},
 | |
| 				{Image: "golang:1", WorkingDir: "/go", Options: []config.Option{{Name: "-u", Value: "0"}}, Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "golang"}}}}},
 | |
| 				{Image: "gradle", WorkingDir: "/home/gradle", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "gradle"}}}}},
 | |
| 				{Image: "hseeberger/scala-sbt:8u181_2.12.8_1.2.8", WorkingDir: "/tmp", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "sbt"}}}}},
 | |
| 				{Image: "maven:3.5-jdk-8", WorkingDir: "/tmp", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "maven"}}}}},
 | |
| 				{Image: "node:22-bookworm", WorkingDir: "/home/node", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "npm"}}}}},
 | |
| 				{Image: "python:3.6-stretch", WorkingDir: "/tmp", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "pip"}}}}},
 | |
| 				{Image: "node:22-bookworm", WorkingDir: "/home/node", Conditions: []config.Condition{{ConditionRef: "strings-equal", Params: []config.Param{{Name: "buildTool", Value: "yarn"}}}}},
 | |
| 			},
 | |
| 			Outputs: config.StepOutputs{
 | |
| 				Resources: []config.StepResources{
 | |
| 					{
 | |
| 						Name: "commonPipelineEnvironment",
 | |
| 						Type: "piperEnvironment",
 | |
| 						Parameters: []map[string]interface{}{
 | |
| 							{"name": "custom/whitesourceProjectNames", "type": "[]string"},
 | |
| 						},
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "influx",
 | |
| 						Type: "influx",
 | |
| 						Parameters: []map[string]interface{}{
 | |
| 							{"name": "step_data", "fields": []map[string]string{{"name": "whitesource"}}},
 | |
| 							{"name": "whitesource_data", "fields": []map[string]string{{"name": "vulnerabilities"}, {"name": "major_vulnerabilities"}, {"name": "minor_vulnerabilities"}, {"name": "policy_violations"}}},
 | |
| 						},
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "reports",
 | |
| 						Type: "reports",
 | |
| 						Parameters: []map[string]interface{}{
 | |
| 							{"filePattern": "**/whitesource-ip.json", "type": "whitesource-ip"},
 | |
| 							{"filePattern": "**/*risk-report.pdf", "type": "whitesource-ip"},
 | |
| 							{"filePattern": "**/toolrun_whitesource_*.json", "type": "whitesource-ip"},
 | |
| 							{"filePattern": "**/piper_whitesource_vulnerability_report.html", "type": "whitesource-security"},
 | |
| 							{"filePattern": "**/*risk-report.pdf", "type": "whitesource-security"},
 | |
| 							{"filePattern": "**/toolrun_whitesource_*.json", "type": "whitesource-security"},
 | |
| 							{"filePattern": "**/piper_whitesource_vulnerability.sarif", "type": "whitesource-security"},
 | |
| 							{"filePattern": "**/piper_whitesource_sbom.xml", "type": "whitesource-security"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 	return theMetaData
 | |
| }
 |