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  }