@@ -65,7 +65,7 @@ var CommandVerbose bool
6565var ShapeMap = map [string ][]string {
6666 modelsv2 .AppShapeGENERICX86 : {"linux/amd64" },
6767 modelsv2 .AppShapeGENERICARM : {"linux/arm64" },
68- modelsv2 .AppShapeGENERICX86ARM : {"linux/amd64 " , "linux/arm64 " },
68+ modelsv2 .AppShapeGENERICX86ARM : {"linux/arm64 " , "linux/amd64 " },
6969}
7070
7171var TargetPlatformMap = map [string ][]string {
@@ -425,7 +425,7 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
425425 args := []string {
426426 buildCommand ,
427427 "build" ,
428- "-t" , name ,
428+ // "-t", name,
429429 "-f" , dockerfile ,
430430 //"--load",
431431 "--platform" , strings .Join (architectures , "," ),
@@ -450,11 +450,12 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
450450
451451 if containerEngineType != containerEngineTypeDocker {
452452 fmt .Println ("*** engine type not docker append load" )
453+ args = append (args , "--manifest" , name )
453454 args = append (args , "--load" )
454455 } else {
455- fmt .Println ("*** engine type docker append push" )
456+ fmt .Println ("*** engine type docker append push" )
457+ args = append (args , "-t" , name )
456458 args = append (args , "--push" )
457-
458459 }
459460
460461 args = append (args ,
@@ -466,12 +467,16 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
466467 return args
467468}
468469
469- func buildDockerCommand (imageName , dockerfile string , buildArgs []string , noCache bool ) []string {
470+ func buildDockerCommand (imageName , dockerfile string , buildArgs []string , noCache bool , architectures [] string ) []string {
470471 var name = imageName
472+ plat := strings .Join (architectures ,"," )
473+ fmt .Println ("build platform is %v" , plat )
474+
471475 args := []string {
472476 "build" ,
473477 "-t" , name ,
474478 "-f" , dockerfile ,
479+ "--platform" , strings .Join (architectures , "," ),
475480 }
476481
477482 if noCache {
@@ -554,12 +559,15 @@ func RunBuild(verbose bool, dir, imageName, dockerfile string, buildArgs []strin
554559 defer cleanupContainerBuilder (containerEngineType )
555560 } else {
556561 fmt .Println ("TargetedPlatform and hostPlatform are same" )
557- dockerBuildCmdArgs = buildDockerCommand (imageName , dockerfile , buildArgs , noCache )
562+ fmt .Println ("1. issuePush is " , issuePush )
563+ dockerBuildCmdArgs = buildDockerCommand (imageName , dockerfile , buildArgs , noCache , mappedArchitectures )
558564 issuePush = true
565+ fmt .Println ("2. issuePush is " , issuePush )
559566 }
560567 }
561568 }
562-
569+ fmt .Println ("*****containerEngineType*****" ,containerEngineType )
570+ fmt .Println ("*****dockerBuildCmdArgs*******" , dockerBuildCmdArgs )
563571 cmd := exec .Command (containerEngineType , dockerBuildCmdArgs ... )
564572 cmd .Dir = dir
565573 cmd .Stderr = buildErr // Doesn't look like there's any output to stderr on docker build, whether it's successful or not.
@@ -588,11 +596,24 @@ func RunBuild(verbose bool, dir, imageName, dockerfile string, buildArgs []strin
588596 // Push to docker registry
589597 fmt .Println ("Using Container engine" , containerEngineType , "to push" )
590598 fmt .Printf ("Pushing %v to docker registry..." , imageName )
591- cmd := exec .Command (containerEngineType , "push" , imageName )
592- cmd .Stderr = os .Stderr
593- cmd .Stdout = os .Stdout
594- if err := cmd .Run (); err != nil {
595- return fmt .Errorf ("error running %v push, are you logged?: %v" , containerEngineType , err )
599+ if issuePush == true {
600+ // build push
601+ fmt .Println ("***build push***" )
602+ cmd := exec .Command (containerEngineType , "push" , imageName )
603+ cmd .Stderr = os .Stderr
604+ cmd .Stdout = os .Stdout
605+ if err := cmd .Run (); err != nil {
606+ return fmt .Errorf ("error running %v push, are you logged?: %v" , containerEngineType , err )
607+ }
608+ } else {
609+ // buildX push for podman
610+ fmt .Println ("***buildX push for podman***" )
611+ cmd := exec .Command (containerEngineType , "manifest" , "push" , imageName )
612+ cmd .Stderr = os .Stderr
613+ cmd .Stdout = os .Stdout
614+ if err := cmd .Run (); err != nil {
615+ return fmt .Errorf ("error running %v push, are you logged?: %v" , containerEngineType , err )
616+ }
596617 }
597618 }
598619 return nil
0 commit comments