github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/transportRequestReqIDFromGit_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 transportRequestReqIDFromGitOptions struct { 21 GitFrom string `json:"gitFrom,omitempty"` 22 GitTo string `json:"gitTo,omitempty"` 23 TransportRequestLabel string `json:"transportRequestLabel,omitempty"` 24 } 25 26 type transportRequestReqIDFromGitCommonPipelineEnvironment struct { 27 custom struct { 28 transportRequestID string 29 } 30 } 31 32 func (p *transportRequestReqIDFromGitCommonPipelineEnvironment) persist(path, resourceName string) { 33 content := []struct { 34 category string 35 name string 36 value interface{} 37 }{ 38 {category: "custom", name: "transportRequestId", value: p.custom.transportRequestID}, 39 } 40 41 errCount := 0 42 for _, param := range content { 43 err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(param.category, param.name), param.value) 44 if err != nil { 45 log.Entry().WithError(err).Error("Error persisting piper environment.") 46 errCount++ 47 } 48 } 49 if errCount > 0 { 50 log.Entry().Error("failed to persist Piper environment") 51 } 52 } 53 54 // TransportRequestReqIDFromGitCommand Retrieves the transport request ID from Git repository 55 func TransportRequestReqIDFromGitCommand() *cobra.Command { 56 const STEP_NAME = "transportRequestReqIDFromGit" 57 58 metadata := transportRequestReqIDFromGitMetadata() 59 var stepConfig transportRequestReqIDFromGitOptions 60 var startTime time.Time 61 var commonPipelineEnvironment transportRequestReqIDFromGitCommonPipelineEnvironment 62 var logCollector *log.CollectorHook 63 var splunkClient *splunk.Splunk 64 telemetryClient := &telemetry.Telemetry{} 65 66 var createTransportRequestReqIDFromGitCmd = &cobra.Command{ 67 Use: STEP_NAME, 68 Short: "Retrieves the transport request ID from Git repository", 69 Long: `This step scans the commit messages of the Git repository for a pattern to retrieve the transport request ID. 70 It is primarily made for the transport request upload steps to provide the transport request ID by Git means.`, 71 PreRunE: func(cmd *cobra.Command, _ []string) error { 72 startTime = time.Now() 73 log.SetStepName(STEP_NAME) 74 log.SetVerbose(GeneralConfig.Verbose) 75 76 GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens) 77 78 path, _ := os.Getwd() 79 fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path} 80 log.RegisterHook(fatalHook) 81 82 err := PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile) 83 if err != nil { 84 log.SetErrorCategory(log.ErrorConfiguration) 85 return err 86 } 87 88 if len(GeneralConfig.HookConfig.SentryConfig.Dsn) > 0 { 89 sentryHook := log.NewSentryHook(GeneralConfig.HookConfig.SentryConfig.Dsn, GeneralConfig.CorrelationID) 90 log.RegisterHook(&sentryHook) 91 } 92 93 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 94 splunkClient = &splunk.Splunk{} 95 logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID} 96 log.RegisterHook(logCollector) 97 } 98 99 if err = log.RegisterANSHookIfConfigured(GeneralConfig.CorrelationID); err != nil { 100 log.Entry().WithError(err).Warn("failed to set up SAP Alert Notification Service log hook") 101 } 102 103 validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages()) 104 if err != nil { 105 return err 106 } 107 if err = validation.ValidateStruct(stepConfig); err != nil { 108 log.SetErrorCategory(log.ErrorConfiguration) 109 return err 110 } 111 112 return nil 113 }, 114 Run: func(_ *cobra.Command, _ []string) { 115 stepTelemetryData := telemetry.CustomData{} 116 stepTelemetryData.ErrorCode = "1" 117 handler := func() { 118 commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment") 119 config.RemoveVaultSecretFiles() 120 stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds()) 121 stepTelemetryData.ErrorCategory = log.GetErrorCategory().String() 122 stepTelemetryData.PiperCommitHash = GitCommit 123 telemetryClient.SetData(&stepTelemetryData) 124 telemetryClient.Send() 125 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 126 splunkClient.Initialize(GeneralConfig.CorrelationID, 127 GeneralConfig.HookConfig.SplunkConfig.Dsn, 128 GeneralConfig.HookConfig.SplunkConfig.Token, 129 GeneralConfig.HookConfig.SplunkConfig.Index, 130 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 131 splunkClient.Send(telemetryClient.GetData(), logCollector) 132 } 133 if len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 { 134 splunkClient.Initialize(GeneralConfig.CorrelationID, 135 GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint, 136 GeneralConfig.HookConfig.SplunkConfig.ProdCriblToken, 137 GeneralConfig.HookConfig.SplunkConfig.ProdCriblIndex, 138 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 139 splunkClient.Send(telemetryClient.GetData(), logCollector) 140 } 141 } 142 log.DeferExitHandler(handler) 143 defer handler() 144 telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME) 145 transportRequestReqIDFromGit(stepConfig, &stepTelemetryData, &commonPipelineEnvironment) 146 stepTelemetryData.ErrorCode = "0" 147 log.Entry().Info("SUCCESS") 148 }, 149 } 150 151 addTransportRequestReqIDFromGitFlags(createTransportRequestReqIDFromGitCmd, &stepConfig) 152 return createTransportRequestReqIDFromGitCmd 153 } 154 155 func addTransportRequestReqIDFromGitFlags(cmd *cobra.Command, stepConfig *transportRequestReqIDFromGitOptions) { 156 cmd.Flags().StringVar(&stepConfig.GitFrom, "gitFrom", `origin/master`, "GIT starting point for retrieving the transport request ID") 157 cmd.Flags().StringVar(&stepConfig.GitTo, "gitTo", `HEAD`, "GIT ending point for retrieving the transport request ID") 158 cmd.Flags().StringVar(&stepConfig.TransportRequestLabel, "transportRequestLabel", `TransportRequest`, "Pattern used for identifying lines holding the transport request ID. The GIT commit log messages are scanned for this label") 159 160 } 161 162 // retrieve step metadata 163 func transportRequestReqIDFromGitMetadata() config.StepData { 164 var theMetaData = config.StepData{ 165 Metadata: config.StepMetadata{ 166 Name: "transportRequestReqIDFromGit", 167 Aliases: []config.Alias{}, 168 Description: "Retrieves the transport request ID from Git repository", 169 }, 170 Spec: config.StepSpec{ 171 Inputs: config.StepInputs{ 172 Parameters: []config.StepParameters{ 173 { 174 Name: "gitFrom", 175 ResourceRef: []config.ResourceReference{}, 176 Scope: []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"}, 177 Type: "string", 178 Mandatory: false, 179 Aliases: []config.Alias{{Name: "changeManagement/git/from"}}, 180 Default: `origin/master`, 181 }, 182 { 183 Name: "gitTo", 184 ResourceRef: []config.ResourceReference{}, 185 Scope: []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"}, 186 Type: "string", 187 Mandatory: false, 188 Aliases: []config.Alias{{Name: "changeManagement/git/to"}}, 189 Default: `HEAD`, 190 }, 191 { 192 Name: "transportRequestLabel", 193 ResourceRef: []config.ResourceReference{}, 194 Scope: []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"}, 195 Type: "string", 196 Mandatory: false, 197 Aliases: []config.Alias{{Name: "changeManagement/transportRequestLabel"}}, 198 Default: `TransportRequest`, 199 }, 200 }, 201 }, 202 Outputs: config.StepOutputs{ 203 Resources: []config.StepResources{ 204 { 205 Name: "commonPipelineEnvironment", 206 Type: "piperEnvironment", 207 Parameters: []map[string]interface{}{ 208 {"name": "custom/transportRequestId"}, 209 }, 210 }, 211 }, 212 }, 213 }, 214 } 215 return theMetaData 216 }