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 }