github.com/xgoffin/jenkins-library@v1.154.0/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 }