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 
			
		
		
		
	* Add Splunk Prod * Update test data * Update naming * Unit-test: update naming * Fix * Fix typo * Fix test * go generate
		
			
				
	
	
		
			255 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			255 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by piper's step-generator. DO NOT EDIT.
 | |
| 
 | |
| package cmd
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/SAP/jenkins-library/pkg/config"
 | |
| 	"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/spf13/cobra"
 | |
| )
 | |
| 
 | |
| type abapAddonAssemblyKitCheckCVsOptions struct {
 | |
| 	AbapAddonAssemblyKitEndpoint string `json:"abapAddonAssemblyKitEndpoint,omitempty"`
 | |
| 	Username                     string `json:"username,omitempty"`
 | |
| 	Password                     string `json:"password,omitempty"`
 | |
| 	AddonDescriptorFileName      string `json:"addonDescriptorFileName,omitempty"`
 | |
| 	AddonDescriptor              string `json:"addonDescriptor,omitempty"`
 | |
| }
 | |
| 
 | |
| type abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment struct {
 | |
| 	abap struct {
 | |
| 		addonDescriptor string
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (p *abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment) persist(path, resourceName string) {
 | |
| 	content := []struct {
 | |
| 		category string
 | |
| 		name     string
 | |
| 		value    interface{}
 | |
| 	}{
 | |
| 		{category: "abap", name: "addonDescriptor", value: p.abap.addonDescriptor},
 | |
| 	}
 | |
| 
 | |
| 	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")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // AbapAddonAssemblyKitCheckCVsCommand This step checks the validity of ABAP Software Component Versions.
 | |
| func AbapAddonAssemblyKitCheckCVsCommand() *cobra.Command {
 | |
| 	const STEP_NAME = "abapAddonAssemblyKitCheckCVs"
 | |
| 
 | |
| 	metadata := abapAddonAssemblyKitCheckCVsMetadata()
 | |
| 	var stepConfig abapAddonAssemblyKitCheckCVsOptions
 | |
| 	var startTime time.Time
 | |
| 	var commonPipelineEnvironment abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment
 | |
| 	var logCollector *log.CollectorHook
 | |
| 	var splunkClient *splunk.Splunk
 | |
| 	telemetryClient := &telemetry.Telemetry{}
 | |
| 
 | |
| 	var createAbapAddonAssemblyKitCheckCVsCmd = &cobra.Command{
 | |
| 		Use:   STEP_NAME,
 | |
| 		Short: "This step checks the validity of ABAP Software Component Versions.",
 | |
| 		Long: `This steps takes the list of ABAP Software Component Versions(repositories) from the addonDescriptor configuration file specified via addonDescriptorFileName (e.g. addon.yml) and checks by calling AAKaaS whether they exist or are a valid successor of an existing Software Component Version.
 | |
| It resolves the dotted version string into version, support package level and patch level and writes it to the addonDescriptor structure in the Piper commonPipelineEnvironment for usage of subsequent pipeline steps.
 | |
| <br />
 | |
| For Terminology refer to the [Scenario Description](https://www.project-piper.io/scenarios/abapEnvironmentAddons/).`,
 | |
| 		PreRunE: func(cmd *cobra.Command, _ []string) error {
 | |
| 			startTime = time.Now()
 | |
| 			log.SetStepName(STEP_NAME)
 | |
| 			log.SetVerbose(GeneralConfig.Verbose)
 | |
| 
 | |
| 			GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens)
 | |
| 
 | |
| 			path, _ := os.Getwd()
 | |
| 			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
 | |
| 			}
 | |
| 			log.RegisterSecret(stepConfig.Username)
 | |
| 			log.RegisterSecret(stepConfig.Password)
 | |
| 
 | |
| 			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 {
 | |
| 				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) {
 | |
| 			stepTelemetryData := telemetry.CustomData{}
 | |
| 			stepTelemetryData.ErrorCode = "1"
 | |
| 			handler := func() {
 | |
| 				commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment")
 | |
| 				config.RemoveVaultSecretFiles()
 | |
| 				stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds())
 | |
| 				stepTelemetryData.ErrorCategory = log.GetErrorCategory().String()
 | |
| 				stepTelemetryData.PiperCommitHash = GitCommit
 | |
| 				telemetryClient.SetData(&stepTelemetryData)
 | |
| 				telemetryClient.Send()
 | |
| 				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)
 | |
| 				}
 | |
| 			}
 | |
| 			log.DeferExitHandler(handler)
 | |
| 			defer handler()
 | |
| 			telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME)
 | |
| 			abapAddonAssemblyKitCheckCVs(stepConfig, &stepTelemetryData, &commonPipelineEnvironment)
 | |
| 			stepTelemetryData.ErrorCode = "0"
 | |
| 			log.Entry().Info("SUCCESS")
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	addAbapAddonAssemblyKitCheckCVsFlags(createAbapAddonAssemblyKitCheckCVsCmd, &stepConfig)
 | |
| 	return createAbapAddonAssemblyKitCheckCVsCmd
 | |
| }
 | |
| 
 | |
| func addAbapAddonAssemblyKitCheckCVsFlags(cmd *cobra.Command, stepConfig *abapAddonAssemblyKitCheckCVsOptions) {
 | |
| 	cmd.Flags().StringVar(&stepConfig.AbapAddonAssemblyKitEndpoint, "abapAddonAssemblyKitEndpoint", `https://apps.support.sap.com`, "Base URL to the Addon Assembly Kit as a Service (AAKaaS) system")
 | |
| 	cmd.Flags().StringVar(&stepConfig.Username, "username", os.Getenv("PIPER_username"), "User for the Addon Assembly Kit as a Service (AAKaaS) system")
 | |
| 	cmd.Flags().StringVar(&stepConfig.Password, "password", os.Getenv("PIPER_password"), "Password for the Addon Assembly Kit as a Service (AAKaaS) system")
 | |
| 	cmd.Flags().StringVar(&stepConfig.AddonDescriptorFileName, "addonDescriptorFileName", `addon.yml`, "File name of the YAML file which describes the Product Version and corresponding Software Component Versions")
 | |
| 	cmd.Flags().StringVar(&stepConfig.AddonDescriptor, "addonDescriptor", os.Getenv("PIPER_addonDescriptor"), "Structure in the commonPipelineEnvironment containing information about the Product Version and corresponding Software Component Versions")
 | |
| 
 | |
| 	cmd.MarkFlagRequired("abapAddonAssemblyKitEndpoint")
 | |
| 	cmd.MarkFlagRequired("username")
 | |
| 	cmd.MarkFlagRequired("password")
 | |
| 	cmd.MarkFlagRequired("addonDescriptorFileName")
 | |
| }
 | |
| 
 | |
| // retrieve step metadata
 | |
| func abapAddonAssemblyKitCheckCVsMetadata() config.StepData {
 | |
| 	var theMetaData = config.StepData{
 | |
| 		Metadata: config.StepMetadata{
 | |
| 			Name:        "abapAddonAssemblyKitCheckCVs",
 | |
| 			Aliases:     []config.Alias{},
 | |
| 			Description: "This step checks the validity of ABAP Software Component Versions.",
 | |
| 		},
 | |
| 		Spec: config.StepSpec{
 | |
| 			Inputs: config.StepInputs{
 | |
| 				Secrets: []config.StepSecrets{
 | |
| 					{Name: "abapAddonAssemblyKitCredentialsId", Description: "CredentialsId stored in Jenkins for the Addon Assembly Kit as a Service (AAKaaS) system", Type: "jenkins"},
 | |
| 				},
 | |
| 				Parameters: []config.StepParameters{
 | |
| 					{
 | |
| 						Name:        "abapAddonAssemblyKitEndpoint",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   true,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `https://apps.support.sap.com`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "username",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   true,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_username"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "password",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   true,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     os.Getenv("PIPER_password"),
 | |
| 					},
 | |
| 					{
 | |
| 						Name:        "addonDescriptorFileName",
 | |
| 						ResourceRef: []config.ResourceReference{},
 | |
| 						Scope:       []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"},
 | |
| 						Type:        "string",
 | |
| 						Mandatory:   true,
 | |
| 						Aliases:     []config.Alias{},
 | |
| 						Default:     `addon.yml`,
 | |
| 					},
 | |
| 					{
 | |
| 						Name: "addonDescriptor",
 | |
| 						ResourceRef: []config.ResourceReference{
 | |
| 							{
 | |
| 								Name:  "commonPipelineEnvironment",
 | |
| 								Param: "abap/addonDescriptor",
 | |
| 							},
 | |
| 						},
 | |
| 						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
 | |
| 						Type:      "string",
 | |
| 						Mandatory: false,
 | |
| 						Aliases:   []config.Alias{},
 | |
| 						Default:   os.Getenv("PIPER_addonDescriptor"),
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			Outputs: config.StepOutputs{
 | |
| 				Resources: []config.StepResources{
 | |
| 					{
 | |
| 						Name: "commonPipelineEnvironment",
 | |
| 						Type: "piperEnvironment",
 | |
| 						Parameters: []map[string]interface{}{
 | |
| 							{"name": "abap/addonDescriptor"},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 	return theMetaData
 | |
| }
 |