11package container
22
33import (
4+ "github.com/jfrog/jfrog-client-go/utils/errorutils"
5+ "strings"
6+
47 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
58 "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils/container"
69 "github.com/jfrog/jfrog-cli-core/v2/common/build"
@@ -17,7 +20,7 @@ func NewBuildDockerCreateCommand() *BuildDockerCreateCommand {
1720}
1821
1922// 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
23+ // This file can be generated by Kaniko using the '--image-name-with-digest-file' flag
2124// or by buildx CLI using '--metadata-file' flag.
2225// Tag and Sha256 will be used later on to search the image in Artifactory.
2326func (bdc * BuildDockerCreateCommand ) SetImageNameWithDigest (filePath string ) (err error ) {
@@ -53,15 +56,23 @@ func (bdc *BuildDockerCreateCommand) Run() error {
5356 if err = build .SaveBuildGeneralDetails (buildName , buildNumber , project ); err != nil {
5457 return err
5558 }
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
59+
60+ // Handle multiple tags from comma-separated image name
61+ images := SplitMultiTagDockerImageStringWithComma (bdc .image )
62+ for _ , image := range images {
63+ builder , err := container .NewRemoteAgentBuildInfoBuilder (image , repo , buildName , buildNumber , project , serviceManager , bdc .manifestSha256 )
64+ if err != nil {
65+ return errorutils .CheckErrorf ("build info creation failed: %s" , err .Error ())
66+ }
67+ buildInfo , err := builder .Build (bdc .BuildConfiguration ().GetModule ())
68+ if err != nil {
69+ return errorutils .CheckErrorf ("build info creation failed: %s" , err .Error ())
70+ }
71+ if err := build .SaveBuildInfo (buildName , buildNumber , project , buildInfo ); err != nil {
72+ return errorutils .CheckErrorf ("failed to save build info for '%s/%s': %s" , buildName , buildNumber , err .Error ())
73+ }
6374 }
64- return build . SaveBuildInfo ( buildName , buildNumber , project , buildInfo )
75+ return nil
6576}
6677
6778func (bdc * BuildDockerCreateCommand ) CommandName () string {
@@ -71,3 +82,19 @@ func (bdc *BuildDockerCreateCommand) CommandName() string {
7182func (bdc * BuildDockerCreateCommand ) ServerDetails () (* config.ServerDetails , error ) {
7283 return bdc .serverDetails , nil
7384}
85+
86+ func SplitMultiTagDockerImageStringWithComma (image * container.Image ) []* container.Image {
87+ multiDockerImage := image .Name ()
88+
89+ tags := strings .Split (multiDockerImage , "," )
90+ images := make ([]* container.Image , 0 , len (tags ))
91+ for _ , tag := range tags {
92+ trimmed := strings .TrimSpace (tag )
93+ if trimmed == "" {
94+ continue
95+ }
96+ nextImage := container .NewImage (trimmed )
97+ images = append (images , nextImage )
98+ }
99+ return images
100+ }
0 commit comments