github.com/xgoffin/jenkins-library@v1.154.0/cmd/gradleExecuteBuild.go (about)

     1  package cmd
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/SAP/jenkins-library/pkg/command"
     7  	"github.com/SAP/jenkins-library/pkg/gradle"
     8  	"github.com/SAP/jenkins-library/pkg/log"
     9  	"github.com/SAP/jenkins-library/pkg/piperutils"
    10  	"github.com/SAP/jenkins-library/pkg/telemetry"
    11  )
    12  
    13  type gradleExecuteBuildUtils interface {
    14  	command.ExecRunner
    15  	FileExists(filename string) (bool, error)
    16  	FileWrite(path string, content []byte, perm os.FileMode) error
    17  	FileRemove(path string) error
    18  }
    19  
    20  type gradleExecuteBuildUtilsBundle struct {
    21  	*command.Command
    22  	*piperutils.Files
    23  }
    24  
    25  func newGradleExecuteBuildUtils() gradleExecuteBuildUtils {
    26  	utils := gradleExecuteBuildUtilsBundle{
    27  		Command: &command.Command{},
    28  		Files:   &piperutils.Files{},
    29  	}
    30  	utils.Stdout(log.Writer())
    31  	utils.Stderr(log.Writer())
    32  	return &utils
    33  }
    34  
    35  func gradleExecuteBuild(config gradleExecuteBuildOptions, telemetryData *telemetry.CustomData) {
    36  	utils := newGradleExecuteBuildUtils()
    37  	err := runGradleExecuteBuild(&config, telemetryData, utils)
    38  	if err != nil {
    39  		log.Entry().WithError(err).Fatal("step execution failed: %w", err)
    40  	}
    41  }
    42  
    43  func runGradleExecuteBuild(config *gradleExecuteBuildOptions, telemetryData *telemetry.CustomData, utils gradleExecuteBuildUtils) error {
    44  	opt := &gradle.ExecuteOptions{
    45  		BuildGradlePath: config.Path,
    46  		Task:            config.Task,
    47  		CreateBOM:       config.CreateBOM,
    48  	}
    49  
    50  	if err := gradle.Execute(opt, utils); err != nil {
    51  		log.Entry().WithError(err).Errorln("build.gradle execution was failed: %w", err)
    52  		return err
    53  	}
    54  
    55  	return nil
    56  }