github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/cnbutils/summary.go (about) 1 package cnbutils 2 3 import ( 4 "bytes" 5 "strings" 6 7 "github.com/SAP/jenkins-library/pkg/log" 8 ) 9 10 type BuildSummary struct { 11 Builder string 12 LifecycleVersion string 13 14 Images []*ImageSummary 15 } 16 17 func (bs *BuildSummary) Print() { 18 log.Entry().Infoln("") 19 log.Entry().Info("*** Build Summary ***") 20 log.Entry().Infof(" Builder: %q", bs.Builder) 21 log.Entry().Infof(" Lifecycle: %q", bs.LifecycleVersion) 22 log.Entry().Infof(" %d image(s) build:", len(bs.Images)) 23 log.Entry().Infoln("") 24 for _, image := range bs.Images { 25 image.Print() 26 log.Entry().Infoln("") 27 } 28 } 29 30 func NewBuildSummary(builder string, utils BuildUtils) *BuildSummary { 31 return &BuildSummary{ 32 Builder: builder, 33 LifecycleVersion: lifecycleVersion(utils), 34 } 35 } 36 37 type ImageSummary struct { 38 ImageRef string 39 ProjectDescriptor string 40 Buildpacks []string 41 EnvVars []string 42 } 43 44 func (is *ImageSummary) Print() { 45 log.Entry().Infof(" Image: %q", is.ImageRef) 46 log.Entry().Infof(" Project descriptor: %q", is.ProjectDescriptor) 47 log.Entry().Infof(" Env: %q", strings.Join(is.EnvVars, ", ")) 48 } 49 50 func (is *ImageSummary) AddEnv(env map[string]interface{}) { 51 for key := range env { 52 is.EnvVars = append(is.EnvVars, key) 53 } 54 } 55 56 func lifecycleVersion(utils BuildUtils) string { 57 currentStdout := utils.GetStdout() 58 59 buf := bytes.NewBufferString("") 60 utils.Stdout(buf) 61 _ = utils.RunExecutable("/cnb/lifecycle/lifecycle", "-version") 62 utils.Stdout(currentStdout) 63 64 return strings.Trim(buf.String(), "\n") 65 }