github.com/jfrog/jfrog-cli-core@v1.12.1/artifactory/commands/container/buildcreate.go (about)

     1  package container
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     5  	"github.com/jfrog/jfrog-cli-core/artifactory/utils/container"
     6  	"github.com/jfrog/jfrog-cli-core/utils/config"
     7  )
     8  
     9  type BuildDockerCreateCommand struct {
    10  	ContainerManagerCommand
    11  	containerManagerType container.ContainerManagerType
    12  	manifestSha256       string
    13  }
    14  
    15  func NewBuildDockerCreateCommand() *BuildDockerCreateCommand {
    16  	return &BuildDockerCreateCommand{containerManagerType: container.Kaniko}
    17  }
    18  
    19  // Set tag and manifest sha256 of an image in Artifactory.
    20  // This file can be generated by Kaniko using the'--image-name-with-digest-file' flag.
    21  // Kaniko is a tool to build & push container images from a Dockerfile, inside a container or Kubernetes cluster.
    22  // Tag and Sha256 will be used later on to search the image in Artifactory.
    23  func (bpc *BuildDockerCreateCommand) SetImageNameWithDigest(filePath string) (err error) {
    24  	bpc.imageTag, bpc.manifestSha256, err = container.GetImageTagWithDigest(filePath)
    25  	return
    26  }
    27  
    28  func (bpc *BuildDockerCreateCommand) Run() error {
    29  	serverDetails, err := bpc.ServerDetails()
    30  	if err != nil {
    31  		return err
    32  	}
    33  	cm := container.NewManager(bpc.containerManagerType)
    34  	image := container.NewImage(bpc.imageTag)
    35  	buildName := bpc.BuildConfiguration().BuildName
    36  	buildNumber := bpc.BuildConfiguration().BuildNumber
    37  	project := bpc.BuildConfiguration().Project
    38  	if err := utils.SaveBuildGeneralDetails(buildName, buildNumber, project); err != nil {
    39  		return err
    40  	}
    41  	serviceManager, err := utils.CreateServiceManager(serverDetails, -1, false)
    42  	if err != nil {
    43  		return err
    44  	}
    45  	builder, err := container.NewKanikoBuildInfoBuilder(image, bpc.Repo(), buildName, buildNumber, project, serviceManager, container.Push, cm, bpc.manifestSha256)
    46  	if err != nil {
    47  		return err
    48  	}
    49  	buildInfo, err := builder.Build(bpc.BuildConfiguration().Module)
    50  	if err != nil {
    51  		return err
    52  	}
    53  	return utils.SaveBuildInfo(buildName, buildNumber, project, buildInfo)
    54  }
    55  
    56  func (pc *BuildDockerCreateCommand) CommandName() string {
    57  	return "rt_build_docker_create"
    58  }
    59  
    60  func (pc *BuildDockerCreateCommand) ServerDetails() (*config.ServerDetails, error) {
    61  	return pc.serverDetails, nil
    62  }