@@ -93,6 +93,7 @@ configurations {
93
93
filebeat_x86_64
94
94
metricbeat_aarch64
95
95
metricbeat_x86_64
96
+ fips
96
97
}
97
98
98
99
String tiniArch = Architecture . current() == Architecture . AARCH64 ? ' arm64' : ' amd64'
@@ -109,6 +110,8 @@ dependencies {
109
110
filebeat_x86_64 " beats:filebeat:${ VersionProperties.elasticsearch} :linux-x86_64@tar.gz"
110
111
metricbeat_aarch64 " beats:metricbeat:${ VersionProperties.elasticsearch} :linux-arm64@tar.gz"
111
112
metricbeat_x86_64 " beats:metricbeat:${ VersionProperties.elasticsearch} :linux-x86_64@tar.gz"
113
+ api " org.bouncycastle:bcpg-fips:1.0.7.1"
114
+ api " org.bouncycastle:bc-fips:1.0.2.4"
112
115
}
113
116
114
117
ext. expansions = { Architecture architecture , DockerBase base ->
@@ -431,7 +434,64 @@ void addBuildDockerImageTask(Architecture architecture, DockerBase base) {
431
434
}
432
435
}
433
436
434
- void addBuildEssDockerImageTask (Architecture architecture ) {
437
+ void addBuildFipsDockerImageTasks (Architecture architecture ) {
438
+ DockerBase dockerBase = DockerBase . FIPS
439
+ final Path projectDir = project. projectDir. toPath()
440
+ String arch = architecture == Architecture . AARCH64 ? ' -aarch64' : ' '
441
+ String contextDir = " ${ project.buildDir} /docker-context/elasticsearch${ dockerBase.suffix} -${ VersionProperties.elasticsearch} -docker-build-context${ arch} "
442
+
443
+ final TaskProvider<Sync > buildContextTask =
444
+ tasks. register(taskName(' build' , architecture, dockerBase, ' DockerContext' ), Sync ) {
445
+ into contextDir
446
+
447
+ into(" fips" ) {
448
+ from configurations. fips
449
+ }
450
+
451
+ String baseSuffix = DockerBase . WOLFI . suffix
452
+ from(projectDir. resolve(" src/docker/Dockerfile.fips" )) {
453
+ expand(
454
+ [
455
+ base_image : " elasticsearch${ baseSuffix} :${ architecture.classifier} " ,
456
+ docker_base : " ${ dockerBase.name().toLowerCase()} " ,
457
+ version : " ${ VersionProperties.elasticsearch} " ,
458
+ retry : ShellRetry
459
+ ]
460
+ )
461
+ filter SquashNewlinesFilter
462
+ rename ~/ Dockerfile\. fips$/ , ' Dockerfile'
463
+ }
464
+ }
465
+
466
+ final TaskProvider<DockerBuildTask > buildDockerImageTask =
467
+ tasks. register(taskName(" build" , architecture, dockerBase, " DockerImage" ), DockerBuildTask ) {
468
+
469
+ DockerBase base = DockerBase . WOLFI
470
+
471
+ TaskProvider<DockerBuildTask > buildBaseTask = tasks. named(taskName(" build" , architecture, base, " DockerImage" ))
472
+ inputs. files(buildBaseTask)
473
+
474
+ dockerContext. fileProvider(buildContextTask. map { it. getDestinationDir() })
475
+
476
+ noCache = buildParams. isCi()
477
+ baseImages = []
478
+ tags = generateTags(dockerBase, architecture)
479
+ platforms. add(architecture. dockerPlatform)
480
+ Provider<DockerSupportService > serviceProvider = GradleUtils . getBuildService(
481
+ project. gradle. sharedServices,
482
+ DockerSupportPlugin . DOCKER_SUPPORT_SERVICE_NAME
483
+ )
484
+ onlyIf(" $architecture supported" ) { serviceProvider. get(). isArchitectureSupported(architecture) }
485
+
486
+ }
487
+
488
+ tasks. named(" assemble" ). configure {
489
+ dependsOn(buildDockerImageTask)
490
+ }
491
+ }
492
+
493
+
494
+ void addBuildCloudDockerImageTasks (Architecture architecture ) {
435
495
DockerBase dockerBase = DockerBase . CLOUD_ESS
436
496
String arch = architecture == Architecture . AARCH64 ? ' -aarch64' : ' '
437
497
String contextDir = " ${ project.buildDir} /docker-context/elasticsearch${ dockerBase.suffix} -${ VersionProperties.elasticsearch} -docker-build-context${ arch} "
@@ -463,10 +523,10 @@ void addBuildEssDockerImageTask(Architecture architecture) {
463
523
from(projectDir. resolve(" src/docker/Dockerfile.ess" )) {
464
524
expand(
465
525
[
466
- base_image : " elasticsearch${ baseSuffix} :${ architecture.classifier} " ,
526
+ base_image : " elasticsearch${ baseSuffix} :${ architecture.classifier} " ,
467
527
docker_base : " ${ dockerBase.name().toLowerCase()} " ,
468
- version : " ${ VersionProperties.elasticsearch} " ,
469
- retry : ShellRetry
528
+ version : " ${ VersionProperties.elasticsearch} " ,
529
+ retry : ShellRetry
470
530
]
471
531
)
472
532
filter SquashNewlinesFilter
@@ -504,14 +564,15 @@ void addBuildEssDockerImageTask(Architecture architecture) {
504
564
for (final Architecture architecture : Architecture . values()) {
505
565
for (final DockerBase base : DockerBase . values()) {
506
566
if (base == DockerBase . CLOUD_ESS ) {
507
- continue
567
+ addBuildCloudDockerImageTasks(architecture)
568
+ } else if (base == DockerBase . FIPS ) {
569
+ addBuildFipsDockerImageTasks(architecture)
570
+ } else {
571
+ addBuildDockerContextTask(architecture, base)
572
+ addTransformDockerContextTask(architecture, base)
573
+ addBuildDockerImageTask(architecture, base)
508
574
}
509
- addBuildDockerContextTask(architecture, base)
510
- addTransformDockerContextTask(architecture, base)
511
- addBuildDockerImageTask(architecture, base)
512
575
}
513
-
514
- addBuildEssDockerImageTask(architecture)
515
576
}
516
577
517
578
def exportDockerImages = tasks. register(" exportDockerImages" )
@@ -535,14 +596,17 @@ subprojects { Project subProject ->
535
596
base = DockerBase . CLOUD_ESS
536
597
} else if (subProject. name. contains(' wolfi-' )) {
537
598
base = DockerBase . WOLFI
599
+ } else if (subProject. name. contains(' fips-' )) {
600
+ base = DockerBase . FIPS
538
601
}
539
602
540
603
final String arch = architecture == Architecture . AARCH64 ? ' -aarch64' : ' '
541
604
final String extension = base == DockerBase . UBI ? ' ubi.tar' :
542
605
(base == DockerBase . IRON_BANK ? ' ironbank.tar' :
543
- (base == DockerBase . CLOUD_ESS ? ' cloud-ess.tar' :
606
+ (base == DockerBase . CLOUD_ESS ? ' cloud-ess.tar' :
607
+ (base == DockerBase . FIPS ? ' fips.tar' :
544
608
(base == DockerBase . WOLFI ? ' wolfi.tar' :
545
- ' docker.tar' )))
609
+ ' docker.tar' ) )))
546
610
final String artifactName = " elasticsearch${ arch}${ base.suffix} _test"
547
611
548
612
final String exportTaskName = taskName(" export" , architecture, base, ' DockerImage' )
0 commit comments