5656 K8sDockerSkipArchs = map [string ]bool {"arm" : true , "386" : true }
5757 K8sGoos = []string {"linux" }
5858 K8sArchs = []string {"amd64" , "arm64" }
59- FipsLdflags = []string {"-w" , "-linkmode external" , "-extldflags '-static'" }
60- FipsGoTags = []string {"netgo" }
59+ FipsLdflags = []string {"-w" , "-linkmode external" , "-extldflags '-static'" }
60+ FipsGoTags = []string {"netgo" }
6161)
6262
6363func Generate (dist string , nightly bool , fips bool ) config.Project {
@@ -182,6 +182,33 @@ func Build(dist string, fips bool) config.Build {
182182 }
183183 }
184184
185+ var buildDetailsOverrides []config.BuildDetailsOverride
186+
187+ cc := map [string ]string {
188+ "amd64" : "x86_64-linux-gnu-gcc" ,
189+ "arm64" : "aarch64-linux-gnu-gcc" ,
190+ }
191+
192+ cxx := map [string ]string {
193+ "amd64" : "x86_64-linux-gnu-g++" ,
194+ "arm64" : "aarch64-linux-gnu-g++" ,
195+ }
196+
197+ if fips {
198+ for _ , arch := range archs {
199+ buildDetailsOverrides = append (buildDetailsOverrides , config.BuildDetailsOverride {
200+ Goos : goos [0 ],
201+ Goarch : arch ,
202+ BuildDetails : config.BuildDetails {
203+ Env : []string {
204+ fmt .Sprint ("CC=" , cc [arch ]),
205+ fmt .Sprint ("CXX=" , cxx [arch ]),
206+ },
207+ },
208+ })
209+ }
210+ }
211+
185212 return config.Build {
186213 ID : dist ,
187214 Dir : dir ,
@@ -190,12 +217,12 @@ func Build(dist string, fips bool) config.Build {
190217 Env : []string {fmt .Sprint ("CGO_ENABLED=" , cgo ), fmt .Sprint ("GOEXPERIMENT=" , goexperiment )},
191218 Flags : []string {"-trimpath" },
192219 Ldflags : ldflags ,
193- Tags : gotags ,
220+ Tags : gotags ,
194221 },
195- Goos : goos ,
196- Goarch : archs ,
197- Ignore : ignoreBuild ,
198- BuildDetailsOverrides : overrides ,
222+ BuildDetailsOverrides : buildDetailsOverrides ,
223+ Goos : goos ,
224+ Goarch : archs ,
225+ Ignore : ignoreBuild ,
199226 }
200227}
201228
@@ -370,16 +397,22 @@ func DockerImage(dist string, nightly bool, arch string, armVersion string, fips
370397 }
371398
372399 if fips {
373- dist = fmt . Sprint ( dist , " -fips" )
400+ prefixFormat = "%s/%s:{{ .Version }} -fips-%s"
374401 }
375402
376403 for _ , prefix := range imagePrefixes {
377404 dockerArchTag := strings .ReplaceAll (dockerArchName , "/" , "" )
378405 imageTemplates = append (
379406 imageTemplates ,
380407 fmt .Sprintf (prefixFormat , prefix , imageName (dist ), dockerArchTag ),
381- fmt .Sprintf (latestPrefixFormat , prefix , imageName (dist ), dockerArchTag ),
382408 )
409+
410+ if ! fips {
411+ imageTemplates = append (
412+ imageTemplates ,
413+ fmt .Sprintf (latestPrefixFormat , prefix , imageName (dist ), dockerArchTag ),
414+ )
415+ }
383416 }
384417
385418 label := func (name , template string ) string {
@@ -391,6 +424,12 @@ func DockerImage(dist string, nightly bool, arch string, armVersion string, fips
391424 files = append (files , configFile )
392425 }
393426 }
427+
428+ distName := dist
429+ if fips {
430+ distName = fmt .Sprintf ("%s-fips" , dist )
431+ }
432+
394433 return config.Docker {
395434 ImageTemplates : imageTemplates ,
396435 Dockerfile : dockerFile ,
@@ -405,7 +444,7 @@ func DockerImage(dist string, nightly bool, arch string, armVersion string, fips
405444 label ("version" , ".Version" ),
406445 label ("source" , ".GitURL" ),
407446 "--label=org.opencontainers.image.licenses=Apache-2.0" ,
408- fmt .Sprint ("--build-arg=DIST_NAME=" , dist ),
447+ fmt .Sprint ("--build-arg=DIST_NAME=" , distName ),
409448 },
410449 Files : files ,
411450 Goos : "linux" ,
@@ -424,7 +463,9 @@ func DockerManifests(dist string, nightly bool, fips bool) []config.DockerManife
424463 r = append (r , DockerManifest (prefix , "nightly" , dist , nightly , fips ))
425464 } else {
426465 r = append (r , DockerManifest (prefix , `{{ .Version }}` , dist , nightly , fips ))
427- r = append (r , DockerManifest (prefix , "latest" , dist , nightly , fips ))
466+ if ! fips {
467+ r = append (r , DockerManifest (prefix , "latest" , dist , nightly , fips ))
468+ }
428469 }
429470 }
430471
@@ -436,14 +477,17 @@ func DockerManifests(dist string, nightly bool, fips bool) []config.DockerManife
436477func DockerManifest (prefix , version , dist string , nightly bool , fips bool ) config.DockerManifest {
437478 var imageTemplates []string
438479 prefixFormat := "%s/%s:%s-%s"
480+ nameFormat := "%s/%s:%s"
439481 k8sDistro := dist == K8sDistro
440482
441483 //if nightly {
442484 // prefixFormat = "%s/%s:%s-nightly-%s"
443485 //}
444486
445487 if fips {
446- dist = fmt .Sprint (dist , "-fips" )
488+ // dist = fmt.Sprint(dist, "-fips")
489+ prefixFormat = "%s/%s:%s-fips-%s"
490+ nameFormat = "%s/%s:%s-fips"
447491 }
448492
449493 for _ , arch := range Architectures {
@@ -470,7 +514,7 @@ func DockerManifest(prefix, version, dist string, nightly bool, fips bool) confi
470514 }
471515
472516 return config.DockerManifest {
473- NameTemplate : fmt .Sprintf ("%s/%s:%s" , prefix , imageName (dist ), version ),
517+ NameTemplate : fmt .Sprintf (nameFormat , prefix , imageName (dist ), version ),
474518 ImageTemplates : imageTemplates ,
475519 }
476520}
0 commit comments