github.com/jaylevin/jenkins-library@v1.230.4/cmd/abapAddonAssemblyKitRegisterPackages_generated.go (about)

     1  // Code generated by piper's step-generator. DO NOT EDIT.
     2  
     3  package cmd
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"path/filepath"
     9  	"time"
    10  
    11  	"github.com/SAP/jenkins-library/pkg/config"
    12  	"github.com/SAP/jenkins-library/pkg/log"
    13  	"github.com/SAP/jenkins-library/pkg/piperenv"
    14  	"github.com/SAP/jenkins-library/pkg/splunk"
    15  	"github.com/SAP/jenkins-library/pkg/telemetry"
    16  	"github.com/SAP/jenkins-library/pkg/validation"
    17  	"github.com/spf13/cobra"
    18  )
    19  
    20  type abapAddonAssemblyKitRegisterPackagesOptions struct {
    21  	AbapAddonAssemblyKitEndpoint string `json:"abapAddonAssemblyKitEndpoint,omitempty"`
    22  	Username                     string `json:"username,omitempty"`
    23  	Password                     string `json:"password,omitempty"`
    24  	AddonDescriptor              string `json:"addonDescriptor,omitempty"`
    25  }
    26  
    27  type abapAddonAssemblyKitRegisterPackagesCommonPipelineEnvironment struct {
    28  	abap struct {
    29  		addonDescriptor string
    30  	}
    31  }
    32  
    33  func (p *abapAddonAssemblyKitRegisterPackagesCommonPipelineEnvironment) persist(path, resourceName string) {
    34  	content := []struct {
    35  		category string
    36  		name     string
    37  		value    interface{}
    38  	}{
    39  		{category: "abap", name: "addonDescriptor", value: p.abap.addonDescriptor},
    40  	}
    41  
    42  	errCount := 0
    43  	for _, param := range content {
    44  		err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(param.category, param.name), param.value)
    45  		if err != nil {
    46  			log.Entry().WithError(err).Error("Error persisting piper environment.")
    47  			errCount++
    48  		}
    49  	}
    50  	if errCount > 0 {
    51  		log.Entry().Error("failed to persist Piper environment")
    52  	}
    53  }
    54  
    55  // AbapAddonAssemblyKitRegisterPackagesCommand This step uploads the SAR archives and creates physical Delivery Packages to AAKaaS.
    56  func AbapAddonAssemblyKitRegisterPackagesCommand() *cobra.Command {
    57  	const STEP_NAME = "abapAddonAssemblyKitRegisterPackages"
    58  
    59  	metadata := abapAddonAssemblyKitRegisterPackagesMetadata()
    60  	var stepConfig abapAddonAssemblyKitRegisterPackagesOptions
    61  	var startTime time.Time
    62  	var commonPipelineEnvironment abapAddonAssemblyKitRegisterPackagesCommonPipelineEnvironment
    63  	var logCollector *log.CollectorHook
    64  	var splunkClient *splunk.Splunk
    65  	telemetryClient := &telemetry.Telemetry{}
    66  
    67  	var createAbapAddonAssemblyKitRegisterPackagesCmd = &cobra.Command{
    68  		Use:   STEP_NAME,
    69  		Short: "This step uploads the SAR archives and creates physical Delivery Packages to AAKaaS.",
    70  		Long: `This step takes the list of Software Component Versions from the addonDescriptor in the commonPipelineEnvironment.
    71  For Packages in status "P" = planned it uploads the SAR archive with the data file and metadata XML of the Delivery Packages composed and exported in the build system
    72  and creates physical Delivery Package in AAKaaS.
    73  The new status "L" = locked is written back to the addonDescriptor in the commonPipelineEnvironment.
    74  <br />
    75  For Terminology refer to the [Scenario Description](https://www.project-piper.io/scenarios/abapEnvironmentAddons/).`,
    76  		PreRunE: func(cmd *cobra.Command, _ []string) error {
    77  			startTime = time.Now()
    78  			log.SetStepName(STEP_NAME)
    79  			log.SetVerbose(GeneralConfig.Verbose)
    80  
    81  			GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens)
    82  
    83  			path, _ := os.Getwd()
    84  			fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path}
    85  			log.RegisterHook(fatalHook)
    86  
    87  			err := PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile)
    88  			if err != nil {
    89  				log.SetErrorCategory(log.ErrorConfiguration)
    90  				return err
    91  			}
    92  			log.RegisterSecret(stepConfig.Username)
    93  			log.RegisterSecret(stepConfig.Password)
    94  
    95  			if len(GeneralConfig.HookConfig.SentryConfig.Dsn) > 0 {
    96  				sentryHook := log.NewSentryHook(GeneralConfig.HookConfig.SentryConfig.Dsn, GeneralConfig.CorrelationID)
    97  				log.RegisterHook(&sentryHook)
    98  			}
    99  
   100  			if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
   101  				splunkClient = &splunk.Splunk{}
   102  				logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID}
   103  				log.RegisterHook(logCollector)
   104  			}
   105  
   106  			validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages())
   107  			if err != nil {
   108  				return err
   109  			}
   110  			if err = validation.ValidateStruct(stepConfig); err != nil {
   111  				log.SetErrorCategory(log.ErrorConfiguration)
   112  				return err
   113  			}
   114  
   115  			return nil
   116  		},
   117  		Run: func(_ *cobra.Command, _ []string) {
   118  			stepTelemetryData := telemetry.CustomData{}
   119  			stepTelemetryData.ErrorCode = "1"
   120  			handler := func() {
   121  				commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment")
   122  				config.RemoveVaultSecretFiles()
   123  				stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds())
   124  				stepTelemetryData.ErrorCategory = log.GetErrorCategory().String()
   125  				stepTelemetryData.PiperCommitHash = GitCommit
   126  				telemetryClient.SetData(&stepTelemetryData)
   127  				telemetryClient.Send()
   128  				if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
   129  					splunkClient.Send(telemetryClient.GetData(), logCollector)
   130  				}
   131  			}
   132  			log.DeferExitHandler(handler)
   133  			defer handler()
   134  			telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME)
   135  			if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
   136  				splunkClient.Initialize(GeneralConfig.CorrelationID,
   137  					GeneralConfig.HookConfig.SplunkConfig.Dsn,
   138  					GeneralConfig.HookConfig.SplunkConfig.Token,
   139  					GeneralConfig.HookConfig.SplunkConfig.Index,
   140  					GeneralConfig.HookConfig.SplunkConfig.SendLogs)
   141  			}
   142  			abapAddonAssemblyKitRegisterPackages(stepConfig, &stepTelemetryData, &commonPipelineEnvironment)
   143  			stepTelemetryData.ErrorCode = "0"
   144  			log.Entry().Info("SUCCESS")
   145  		},
   146  	}
   147  
   148  	addAbapAddonAssemblyKitRegisterPackagesFlags(createAbapAddonAssemblyKitRegisterPackagesCmd, &stepConfig)
   149  	return createAbapAddonAssemblyKitRegisterPackagesCmd
   150  }
   151  
   152  func addAbapAddonAssemblyKitRegisterPackagesFlags(cmd *cobra.Command, stepConfig *abapAddonAssemblyKitRegisterPackagesOptions) {
   153  	cmd.Flags().StringVar(&stepConfig.AbapAddonAssemblyKitEndpoint, "abapAddonAssemblyKitEndpoint", `https://apps.support.sap.com`, "Base URL to the Addon Assembly Kit as a Service (AAKaaS) system")
   154  	cmd.Flags().StringVar(&stepConfig.Username, "username", os.Getenv("PIPER_username"), "User for the Addon Assembly Kit as a Service (AAKaaS) system")
   155  	cmd.Flags().StringVar(&stepConfig.Password, "password", os.Getenv("PIPER_password"), "Password for the Addon Assembly Kit as a Service (AAKaaS) system")
   156  	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")
   157  
   158  	cmd.MarkFlagRequired("abapAddonAssemblyKitEndpoint")
   159  	cmd.MarkFlagRequired("username")
   160  	cmd.MarkFlagRequired("password")
   161  	cmd.MarkFlagRequired("addonDescriptor")
   162  }
   163  
   164  // retrieve step metadata
   165  func abapAddonAssemblyKitRegisterPackagesMetadata() config.StepData {
   166  	var theMetaData = config.StepData{
   167  		Metadata: config.StepMetadata{
   168  			Name:        "abapAddonAssemblyKitRegisterPackages",
   169  			Aliases:     []config.Alias{},
   170  			Description: "This step uploads the SAR archives and creates physical Delivery Packages to AAKaaS.",
   171  		},
   172  		Spec: config.StepSpec{
   173  			Inputs: config.StepInputs{
   174  				Secrets: []config.StepSecrets{
   175  					{Name: "abapAddonAssemblyKitCredentialsId", Description: "Credential stored in Jenkins for the Addon Assembly Kit as a Service (AAKaaS) system", Type: "jenkins"},
   176  				},
   177  				Parameters: []config.StepParameters{
   178  					{
   179  						Name:        "abapAddonAssemblyKitEndpoint",
   180  						ResourceRef: []config.ResourceReference{},
   181  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"},
   182  						Type:        "string",
   183  						Mandatory:   true,
   184  						Aliases:     []config.Alias{},
   185  						Default:     `https://apps.support.sap.com`,
   186  					},
   187  					{
   188  						Name:        "username",
   189  						ResourceRef: []config.ResourceReference{},
   190  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   191  						Type:        "string",
   192  						Mandatory:   true,
   193  						Aliases:     []config.Alias{},
   194  						Default:     os.Getenv("PIPER_username"),
   195  					},
   196  					{
   197  						Name:        "password",
   198  						ResourceRef: []config.ResourceReference{},
   199  						Scope:       []string{"PARAMETERS"},
   200  						Type:        "string",
   201  						Mandatory:   true,
   202  						Aliases:     []config.Alias{},
   203  						Default:     os.Getenv("PIPER_password"),
   204  					},
   205  					{
   206  						Name: "addonDescriptor",
   207  						ResourceRef: []config.ResourceReference{
   208  							{
   209  								Name:  "commonPipelineEnvironment",
   210  								Param: "abap/addonDescriptor",
   211  							},
   212  						},
   213  						Scope:     []string{"PARAMETERS", "STAGES", "STEPS"},
   214  						Type:      "string",
   215  						Mandatory: true,
   216  						Aliases:   []config.Alias{},
   217  						Default:   os.Getenv("PIPER_addonDescriptor"),
   218  					},
   219  				},
   220  			},
   221  			Outputs: config.StepOutputs{
   222  				Resources: []config.StepResources{
   223  					{
   224  						Name: "commonPipelineEnvironment",
   225  						Type: "piperEnvironment",
   226  						Parameters: []map[string]interface{}{
   227  							{"name": "abap/addonDescriptor"},
   228  						},
   229  					},
   230  				},
   231  			},
   232  		},
   233  	}
   234  	return theMetaData
   235  }