github.com/osievert/jfrog-cli-core@v1.2.7/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 rtDetails, err := bpc.RtDetails() 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 if err := utils.SaveBuildGeneralDetails(buildName, buildNumber); err != nil { 38 return err 39 } 40 serviceManager, err := utils.CreateServiceManager(rtDetails, false) 41 if err != nil { 42 return err 43 } 44 builder, err := container.NewKanikoBuildInfoBuilder(image, bpc.Repo(), buildName, buildNumber, serviceManager, container.Push, cm, bpc.manifestSha256) 45 if err != nil { 46 return err 47 } 48 buildInfo, err := builder.Build(bpc.BuildConfiguration().Module) 49 if err != nil { 50 return err 51 } 52 return utils.SaveBuildInfo(buildName, buildNumber, buildInfo) 53 } 54 55 func (pc *BuildDockerCreateCommand) CommandName() string { 56 return "rt_build_docker_create" 57 } 58 59 func (pc *BuildDockerCreateCommand) RtDetails() (*config.ArtifactoryDetails, error) { 60 return pc.rtDetails, nil 61 }