@@ -65,7 +65,7 @@ var CommandVerbose bool
65
65
var ShapeMap = map [string ][]string {
66
66
modelsv2 .AppShapeGENERICX86 : {"linux/amd64" },
67
67
modelsv2 .AppShapeGENERICARM : {"linux/arm64" },
68
- modelsv2 .AppShapeGENERICX86ARM : {"linux/amd64 " , "linux/arm64 " },
68
+ modelsv2 .AppShapeGENERICX86ARM : {"linux/arm64 " , "linux/amd64 " },
69
69
}
70
70
71
71
var TargetPlatformMap = map [string ][]string {
@@ -425,7 +425,7 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
425
425
args := []string {
426
426
buildCommand ,
427
427
"build" ,
428
- "-t" , name ,
428
+ // "-t", name,
429
429
"-f" , dockerfile ,
430
430
//"--load",
431
431
"--platform" , strings .Join (architectures , "," ),
@@ -450,11 +450,12 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
450
450
451
451
if containerEngineType != containerEngineTypeDocker {
452
452
fmt .Println ("*** engine type not docker append load" )
453
+ args = append (args , "--manifest" , name )
453
454
args = append (args , "--load" )
454
455
} else {
455
- fmt .Println ("*** engine type docker append push" )
456
+ fmt .Println ("*** engine type docker append push" )
457
+ args = append (args , "-t" , name )
456
458
args = append (args , "--push" )
457
-
458
459
}
459
460
460
461
args = append (args ,
@@ -466,12 +467,16 @@ func buildXDockerCommand(imageName, dockerfile string, buildArgs []string, noCac
466
467
return args
467
468
}
468
469
469
- func buildDockerCommand (imageName , dockerfile string , buildArgs []string , noCache bool ) []string {
470
+ func buildDockerCommand (imageName , dockerfile string , buildArgs []string , noCache bool , architectures [] string ) []string {
470
471
var name = imageName
472
+ plat := strings .Join (architectures ,"," )
473
+ fmt .Println ("build platform is %v" , plat )
474
+
471
475
args := []string {
472
476
"build" ,
473
477
"-t" , name ,
474
478
"-f" , dockerfile ,
479
+ "--platform" , strings .Join (architectures , "," ),
475
480
}
476
481
477
482
if noCache {
@@ -554,12 +559,15 @@ func RunBuild(verbose bool, dir, imageName, dockerfile string, buildArgs []strin
554
559
defer cleanupContainerBuilder (containerEngineType )
555
560
} else {
556
561
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 )
558
564
issuePush = true
565
+ fmt .Println ("2. issuePush is " , issuePush )
559
566
}
560
567
}
561
568
}
562
-
569
+ fmt .Println ("*****containerEngineType*****" ,containerEngineType )
570
+ fmt .Println ("*****dockerBuildCmdArgs*******" , dockerBuildCmdArgs )
563
571
cmd := exec .Command (containerEngineType , dockerBuildCmdArgs ... )
564
572
cmd .Dir = dir
565
573
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
588
596
// Push to docker registry
589
597
fmt .Println ("Using Container engine" , containerEngineType , "to push" )
590
598
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
+ }
596
617
}
597
618
}
598
619
return nil
0 commit comments