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

     1  package container
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
     5  	"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils/container"
     6  	"github.com/jfrog/jfrog-cli-core/v2/common/build"
     7  	"github.com/jfrog/jfrog-cli-core/v2/utils/config"
     8  )
     9  
    10  type BuildDockerCreateCommand struct {
    11  	ContainerCommandBase
    12  	manifestSha256 string
    13  }
    14  
    15  func NewBuildDockerCreateCommand() *BuildDockerCreateCommand {
    16  	return &BuildDockerCreateCommand{}
    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  // or by buildx CLI using '--metadata-file' flag.
    22  // Tag and Sha256 will be used later on to search the image in Artifactory.
    23  func (bdc *BuildDockerCreateCommand) SetImageNameWithDigest(filePath string) (err error) {
    24  	bdc.image, bdc.manifestSha256, err = container.GetImageTagWithDigest(filePath)
    25  	return
    26  }
    27  
    28  func (bdc *BuildDockerCreateCommand) Run() error {
    29  	if err := bdc.init(); err != nil {
    30  		return err
    31  	}
    32  	serverDetails, err := bdc.ServerDetails()
    33  	if err != nil {
    34  		return err
    35  	}
    36  	buildName, err := bdc.buildConfiguration.GetBuildName()
    37  	if err != nil {
    38  		return err
    39  	}
    40  	buildNumber, err := bdc.buildConfiguration.GetBuildNumber()
    41  	if err != nil {
    42  		return err
    43  	}
    44  	project := bdc.BuildConfiguration().GetProject()
    45  	serviceManager, err := utils.CreateServiceManager(serverDetails, -1, 0, false)
    46  	if err != nil {
    47  		return err
    48  	}
    49  	repo, err := bdc.GetRepo()
    50  	if err != nil {
    51  		return err
    52  	}
    53  	if err := build.SaveBuildGeneralDetails(buildName, buildNumber, project); err != nil {
    54  		return err
    55  	}
    56  	builder, err := container.NewRemoteAgentBuildInfoBuilder(bdc.image, repo, buildName, buildNumber, project, serviceManager, bdc.manifestSha256)
    57  	if err != nil {
    58  		return err
    59  	}
    60  	buildInfo, err := builder.Build(bdc.BuildConfiguration().GetModule())
    61  	if err != nil {
    62  		return err
    63  	}
    64  	return build.SaveBuildInfo(buildName, buildNumber, project, buildInfo)
    65  }
    66  
    67  func (bdc *BuildDockerCreateCommand) CommandName() string {
    68  	return "rt_build_docker_create"
    69  }
    70  
    71  func (bdc *BuildDockerCreateCommand) ServerDetails() (*config.ServerDetails, error) {
    72  	return bdc.serverDetails, nil
    73  }