@@ -2,6 +2,7 @@ import org.elasticsearch.gradle.LoggedExec
22import org.elasticsearch.gradle.VersionProperties
33import org.elasticsearch.gradle.internal.DockerBase
44import org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes
5+ import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask
56import org.elasticsearch.gradle.internal.docker.DockerBuildTask
67import org.elasticsearch.gradle.internal.docker.DockerSupportPlugin
78import org.elasticsearch.gradle.internal.docker.DockerSupportService
@@ -17,6 +18,8 @@ apply plugin: 'elasticsearch.legacy-yaml-rest-test'
1718apply plugin : ' elasticsearch.test.fixtures'
1819apply plugin : ' elasticsearch.internal-distribution-download'
1920apply plugin : ' elasticsearch.dra-artifacts'
21+ apply plugin : ' elasticsearch.jdk-download'
22+ apply plugin : ' elasticsearch.repositories'
2023
2124String buildId = providers. systemProperty(' build.id' ). getOrNull()
2225boolean useLocalArtifacts = buildId != null && buildId. isBlank() == false && useDra == false
@@ -93,6 +96,7 @@ configurations {
9396 filebeat_x86_64
9497 metricbeat_aarch64
9598 metricbeat_x86_64
99+ fips
96100}
97101
98102String tiniArch = Architecture . current() == Architecture . AARCH64 ? ' arm64' : ' amd64'
@@ -109,6 +113,8 @@ dependencies {
109113 filebeat_x86_64
" beats:filebeat:${ VersionProperties.elasticsearch} :[email protected] " 110114 metricbeat_aarch64
" beats:metricbeat:${ VersionProperties.elasticsearch} :[email protected] " 111115 metricbeat_x86_64
" beats:metricbeat:${ VersionProperties.elasticsearch} :[email protected] " 116+ fips " org.bouncycastle:bc-fips:1.0.2.5"
117+ fips " org.bouncycastle:bctls-fips:1.0.19"
112118}
113119
114120ext. expansions = { Architecture architecture , DockerBase base ->
@@ -287,6 +293,34 @@ void addBuildDockerContextTask(Architecture architecture, DockerBase base) {
287293 filter TransformLog4jConfigFilter
288294 }
289295 }
296+ if (base == DockerBase . FIPS ) {
297+
298+ // If we're performing a release build, but `build.id` hasn't been set, we can
299+ // infer that we're not at the Docker building stage of the build, and therefore
300+ // we should skip the beats part of the build.
301+ String buildId = providers. systemProperty(' build.id' ). getOrNull()
302+ boolean includeBeats = VersionProperties . isElasticsearchSnapshot() == true || buildId != null || useDra
303+
304+ if (includeBeats) {
305+ from configurations. getByName(" filebeat_${ architecture.classifier} " )
306+ from configurations. getByName(" metricbeat_${ architecture.classifier} " )
307+ // For some reason, the artifact name can differ depending on what repository we used.
308+ rename ~/ ((?:file|metric)beat)-.*\. tar\. gz$/ , " \$ 1-${ VersionProperties.elasticsearch} .tar.gz"
309+ }
310+
311+ into(" plugins" ) {
312+ from configurations. allPlugins
313+ }
314+
315+ into(" fips" ) {
316+ into(" libs" ) {
317+ from configurations. fips
318+ }
319+ into(" resources" ) {
320+ from tasks. named(' fipsDockerResources' )
321+ }
322+ }
323+ }
290324
291325 Provider<DockerSupportService > serviceProvider = GradleUtils . getBuildService(
292326 project. gradle. sharedServices,
@@ -442,7 +476,7 @@ void addBuildDockerImageTask(Architecture architecture, DockerBase base) {
442476 }
443477}
444478
445- void addBuildEssDockerImageTask (Architecture architecture ) {
479+ void addBuildCloudDockerImageTasks (Architecture architecture ) {
446480 DockerBase dockerBase = DockerBase . CLOUD_ESS
447481 String arch = architecture == Architecture . AARCH64 ? ' -aarch64' : ' '
448482 String contextDir = " ${ project.buildDir} /docker-context/elasticsearch${ dockerBase.suffix} -${ VersionProperties.elasticsearch} -docker-build-context${ arch} "
@@ -474,10 +508,10 @@ void addBuildEssDockerImageTask(Architecture architecture) {
474508 from(projectDir. resolve(" src/docker/Dockerfile.ess" )) {
475509 expand(
476510 [
477- base_image : " elasticsearch${ baseSuffix} :${ architecture.classifier} " ,
511+ base_image : " elasticsearch${ baseSuffix} :${ architecture.classifier} " ,
478512 docker_base : " ${ dockerBase.name().toLowerCase()} " ,
479- version : " ${ VersionProperties.elasticsearch} " ,
480- retry : ShellRetry
513+ version : " ${ VersionProperties.elasticsearch} " ,
514+ retry : ShellRetry
481515 ]
482516 )
483517 filter SquashNewlinesFilter
@@ -512,17 +546,24 @@ void addBuildEssDockerImageTask(Architecture architecture) {
512546 }
513547}
514548
549+ // fips
550+ TaskProvider<ExportElasticsearchBuildResourcesTask > fipsResourcesTask = tasks. register(' fipsDockerResources' , ExportElasticsearchBuildResourcesTask )
551+ fipsResourcesTask. configure {
552+ outputDir = project. layout. buildDirectory. dir(' fips-docker-resources' ). get(). asFile
553+ copy ' fips_java.security'
554+ copy ' fips_java.policy'
555+ }
556+
515557for (final Architecture architecture : Architecture . values()) {
516558 for (final DockerBase base : DockerBase . values()) {
517559 if (base == DockerBase . CLOUD_ESS ) {
518- continue
560+ addBuildCloudDockerImageTasks(architecture)
561+ } else {
562+ addBuildDockerContextTask(architecture, base)
563+ addTransformDockerContextTask(architecture, base)
564+ addBuildDockerImageTask(architecture, base)
519565 }
520- addBuildDockerContextTask(architecture, base)
521- addTransformDockerContextTask(architecture, base)
522- addBuildDockerImageTask(architecture, base)
523566 }
524-
525- addBuildEssDockerImageTask(architecture)
526567}
527568
528569def exportDockerImages = tasks. register(" exportDockerImages" )
@@ -544,14 +585,17 @@ subprojects { Project subProject ->
544585 base = DockerBase . CLOUD_ESS
545586 } else if (subProject. name. contains(' wolfi-' )) {
546587 base = DockerBase . WOLFI
588+ } else if (subProject. name. contains(' fips-' )) {
589+ base = DockerBase . FIPS
547590 }
548591
549592 final String arch = architecture == Architecture . AARCH64 ? ' -aarch64' : ' '
550593 final String extension =
551594 (base == DockerBase . IRON_BANK ? ' ironbank.tar' :
552595 (base == DockerBase . CLOUD_ESS ? ' cloud-ess.tar' :
553- (base == DockerBase . WOLFI ? ' wolfi.tar' :
554- ' docker.tar' )))
596+ (base == DockerBase . FIPS ? ' fips.tar' :
597+ (base == DockerBase . WOLFI ? ' wolfi.tar' :
598+ ' docker.tar' ))))
555599 final String artifactName = " elasticsearch${ arch}${ base.suffix} _test"
556600
557601 final String exportTaskName = taskName(" export" , architecture, base, ' DockerImage' )
0 commit comments