github.com/SAP/jenkins-library@v1.362.0/cmd/abapAddonAssemblyKitCheck.go (about) 1 package cmd 2 3 import ( 4 "github.com/SAP/jenkins-library/pkg/abap/aakaas" 5 abapbuild "github.com/SAP/jenkins-library/pkg/abap/build" 6 "github.com/SAP/jenkins-library/pkg/abaputils" 7 "github.com/SAP/jenkins-library/pkg/log" 8 "github.com/SAP/jenkins-library/pkg/piperutils" 9 "github.com/SAP/jenkins-library/pkg/telemetry" 10 ) 11 12 func abapAddonAssemblyKitCheck(config abapAddonAssemblyKitCheckOptions, telemetryData *telemetry.CustomData, commonPipelineEnvironment *abapAddonAssemblyKitCheckCommonPipelineEnvironment) { 13 utils := aakaas.NewAakBundle() 14 15 err := runAbapAddonAssemblyKitCheck(&config, telemetryData, utils, commonPipelineEnvironment) 16 if err != nil { 17 log.Entry().WithError(err).Fatal("step execution failed") 18 } 19 } 20 21 func runAbapAddonAssemblyKitCheck(config *abapAddonAssemblyKitCheckOptions, telemetryData *telemetry.CustomData, utils aakaas.AakUtils, commonPipelineEnvironment *abapAddonAssemblyKitCheckCommonPipelineEnvironment) error { 22 23 log.Entry().Info("╔═══════════════════════════╗") 24 log.Entry().Info("║ abapAddonAssemblyKitCheck ║") 25 log.Entry().Info("╚═══════════════════════════╝") 26 27 conn := new(abapbuild.Connector) 28 if err := conn.InitAAKaaS(config.AbapAddonAssemblyKitEndpoint, config.Username, config.Password, utils, "", config.AbapAddonAssemblyKitCertificateFile, config.AbapAddonAssemblyKitCertificatePass); err != nil { 29 return err 30 } 31 32 log.Entry().Infof("reading addonDescriptor (aka addon.yml) file: %s", config.AddonDescriptorFileName) 33 addonDescriptor, err := utils.ReadAddonDescriptor(config.AddonDescriptorFileName) 34 if err != nil { 35 return err 36 } 37 log.Entry().Info("building product modelling (and resolving potential wildcards)") 38 pvh, err := aakaas.NewProductVersionHeader(&addonDescriptor, conn) 39 if err != nil { 40 return err 41 } 42 printProductVersionHeader(*pvh) 43 44 log.Entry().Info("calling AAKaaS to check product modelling...") 45 if err := pvh.CheckAndResolveVersion(conn); err != nil { 46 return err 47 } 48 log.Entry().Info("... success!") 49 pvh.SyncAddonDescriptorVersionFields(&addonDescriptor) 50 log.Entry().Info("resolved version fields:") 51 printAddonDescriptorVersionFields(addonDescriptor) 52 log.Entry().Info("transferring addonDescriptor to commonPipelineEnvironment for usage by subsequent steps of the pipeline") 53 commonPipelineEnvironment.abap.addonDescriptor = string(addonDescriptor.AsJSON()) 54 55 publishAddonYaml(config, utils) 56 return nil 57 } 58 59 func printProductVersionHeader(pvh aakaas.ProductVersionHeader) { 60 logLine30 := "──────────────────────────────" 61 log.Entry().Infof("┌─%-30v─┬─%-30v─┐", logLine30, logLine30) 62 log.Entry().Infof("│ %-30v │ %-30v │", "Product Name", pvh.ProductName) 63 log.Entry().Infof("│ %-30v │ %-30v │", "Product Version", pvh.SemanticProductVersion) 64 log.Entry().Infof("├─%-30v─┼─%-30v─┤", logLine30, logLine30) 65 log.Entry().Infof("│ %-30v │ %-30v │", "Software Component Name", "Software Component Version") 66 log.Entry().Infof("├─%-30v─┼─%-30v─┤", logLine30, logLine30) 67 for _, pvc := range pvh.Content { 68 log.Entry().Infof("│ %-30v │ %-30v │", pvc.SoftwareComponentName, pvc.SemanticSoftwareComponentVersion) 69 } 70 log.Entry().Infof("└─%-30v─┴─%-30v─┘", logLine30, logLine30) 71 } 72 73 func printAddonDescriptorVersionFields(addonDescriptor abaputils.AddonDescriptor) { 74 logLine30 := "──────────────────────────────" 75 logLine4 := "────" 76 log.Entry().Infof("┌─%-30v─┬─%-4v─┬─%-4v─┬─%-4v─┐", logLine30, logLine4, logLine4, logLine4) 77 log.Entry().Infof("│ %-30v │ %-4v │ %-4v │ %-4v │", "Name", "Vers", "SP", "Pat.") 78 log.Entry().Infof("├─%-30v─┼─%-4v─┼─%-4v─┼─%-4v─┤", logLine30, logLine4, logLine4, logLine4) 79 log.Entry().Infof("│ %-30v │ %-4v │ %-4v │ %-4v │", addonDescriptor.AddonProduct, addonDescriptor.AddonVersion, addonDescriptor.AddonSpsLevel, addonDescriptor.AddonPatchLevel) 80 for _, repo := range addonDescriptor.Repositories { 81 log.Entry().Infof("│ %-30v │ %-4v │ %-4v │ %-4v │", repo.Name, repo.Version, repo.SpLevel, repo.PatchLevel) 82 } 83 log.Entry().Infof("└─%-30v─┴─%-4v─┴─%-4v─┴─%-4v─┘", logLine30, logLine4, logLine4, logLine4) 84 } 85 86 func publishAddonYaml(config *abapAddonAssemblyKitCheckOptions, utils aakaas.AakUtils) { 87 var filesToPublish []piperutils.Path 88 log.Entry().Infof("adding %s to be published", config.AddonDescriptorFileName) 89 filesToPublish = append(filesToPublish, piperutils.Path{Target: config.AddonDescriptorFileName, Name: "AddonDescriptor", Mandatory: true}) 90 log.Entry().Infof("publishing %v files", len(filesToPublish)) 91 if err := piperutils.PersistReportsAndLinks("abapAddonAssemblyKitCheckPV", "", utils, filesToPublish, nil); err != nil { 92 log.Entry().WithError(err).Error("failed to persist report information") 93 } 94 }