|
@@ -2,6 +2,7 @@ import org.elasticsearch.gradle.LoggedExec
|
|
|
import org.elasticsearch.gradle.VersionProperties
|
|
|
import org.elasticsearch.gradle.internal.DockerBase
|
|
|
import org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes
|
|
|
+import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask
|
|
|
import org.elasticsearch.gradle.internal.docker.DockerBuildTask
|
|
|
import org.elasticsearch.gradle.internal.docker.DockerSupportPlugin
|
|
|
import org.elasticsearch.gradle.internal.docker.DockerSupportService
|
|
@@ -17,6 +18,8 @@ apply plugin: 'elasticsearch.legacy-yaml-rest-test'
|
|
|
apply plugin: 'elasticsearch.test.fixtures'
|
|
|
apply plugin: 'elasticsearch.internal-distribution-download'
|
|
|
apply plugin: 'elasticsearch.dra-artifacts'
|
|
|
+apply plugin: 'elasticsearch.jdk-download'
|
|
|
+apply plugin: 'elasticsearch.repositories'
|
|
|
|
|
|
String buildId = providers.systemProperty('build.id').getOrNull()
|
|
|
boolean useLocalArtifacts = buildId != null && buildId.isBlank() == false && useDra == false
|
|
@@ -93,6 +96,7 @@ configurations {
|
|
|
filebeat_x86_64
|
|
|
metricbeat_aarch64
|
|
|
metricbeat_x86_64
|
|
|
+ fips
|
|
|
}
|
|
|
|
|
|
String tiniArch = Architecture.current() == Architecture.AARCH64 ? 'arm64' : 'amd64'
|
|
@@ -109,6 +113,8 @@ dependencies {
|
|
|
filebeat_x86_64 "beats:filebeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz"
|
|
|
metricbeat_aarch64 "beats:metricbeat:${VersionProperties.elasticsearch}:linux-arm64@tar.gz"
|
|
|
metricbeat_x86_64 "beats:metricbeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz"
|
|
|
+ fips "org.bouncycastle:bc-fips:1.0.2.5"
|
|
|
+ fips "org.bouncycastle:bctls-fips:1.0.19"
|
|
|
}
|
|
|
|
|
|
ext.expansions = { Architecture architecture, DockerBase base ->
|
|
@@ -286,6 +292,34 @@ void addBuildDockerContextTask(Architecture architecture, DockerBase base) {
|
|
|
filter TransformLog4jConfigFilter
|
|
|
}
|
|
|
}
|
|
|
+ if(base == DockerBase.FIPS) {
|
|
|
+
|
|
|
+ // If we're performing a release build, but `build.id` hasn't been set, we can
|
|
|
+ // infer that we're not at the Docker building stage of the build, and therefore
|
|
|
+ // we should skip the beats part of the build.
|
|
|
+ String buildId = providers.systemProperty('build.id').getOrNull()
|
|
|
+ boolean includeBeats = VersionProperties.isElasticsearchSnapshot() == true || buildId != null || useDra
|
|
|
+
|
|
|
+ if (includeBeats) {
|
|
|
+ from configurations.getByName("filebeat_${architecture.classifier}")
|
|
|
+ from configurations.getByName("metricbeat_${architecture.classifier}")
|
|
|
+ // For some reason, the artifact name can differ depending on what repository we used.
|
|
|
+ rename ~/((?:file|metric)beat)-.*\.tar\.gz$/, "\$1-${VersionProperties.elasticsearch}.tar.gz"
|
|
|
+ }
|
|
|
+
|
|
|
+ into("plugins") {
|
|
|
+ from configurations.allPlugins
|
|
|
+ }
|
|
|
+
|
|
|
+ into("fips") {
|
|
|
+ into("libs") {
|
|
|
+ from configurations.fips
|
|
|
+ }
|
|
|
+ into("resources") {
|
|
|
+ from tasks.named('fipsResources')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
Provider<DockerSupportService> serviceProvider = GradleUtils.getBuildService(
|
|
|
project.gradle.sharedServices,
|
|
@@ -431,7 +465,7 @@ void addBuildDockerImageTask(Architecture architecture, DockerBase base) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void addBuildEssDockerImageTask(Architecture architecture) {
|
|
|
+void addBuildCloudDockerImageTasks(Architecture architecture) {
|
|
|
DockerBase dockerBase = DockerBase.CLOUD_ESS
|
|
|
String arch = architecture == Architecture.AARCH64 ? '-aarch64' : ''
|
|
|
String contextDir = "${project.buildDir}/docker-context/elasticsearch${dockerBase.suffix}-${VersionProperties.elasticsearch}-docker-build-context${arch}"
|
|
@@ -463,10 +497,10 @@ void addBuildEssDockerImageTask(Architecture architecture) {
|
|
|
from(projectDir.resolve("src/docker/Dockerfile.ess")) {
|
|
|
expand(
|
|
|
[
|
|
|
- base_image: "elasticsearch${baseSuffix}:${architecture.classifier}",
|
|
|
+ base_image : "elasticsearch${baseSuffix}:${architecture.classifier}",
|
|
|
docker_base: "${dockerBase.name().toLowerCase()}",
|
|
|
- version: "${VersionProperties.elasticsearch}",
|
|
|
- retry: ShellRetry
|
|
|
+ version : "${VersionProperties.elasticsearch}",
|
|
|
+ retry : ShellRetry
|
|
|
]
|
|
|
)
|
|
|
filter SquashNewlinesFilter
|
|
@@ -501,17 +535,24 @@ void addBuildEssDockerImageTask(Architecture architecture) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// fips
|
|
|
+TaskProvider<ExportElasticsearchBuildResourcesTask> fipsResourcesTask = tasks.register('fipsResources', ExportElasticsearchBuildResourcesTask)
|
|
|
+fipsResourcesTask.configure {
|
|
|
+ outputDir = project.layout.buildDirectory.dir('fips-resources').get().asFile
|
|
|
+ copy 'fips_java.security'
|
|
|
+ copy 'fips_java.policy'
|
|
|
+}
|
|
|
+
|
|
|
for (final Architecture architecture : Architecture.values()) {
|
|
|
for (final DockerBase base : DockerBase.values()) {
|
|
|
if (base == DockerBase.CLOUD_ESS) {
|
|
|
- continue
|
|
|
+ addBuildCloudDockerImageTasks(architecture)
|
|
|
+ } else {
|
|
|
+ addBuildDockerContextTask(architecture, base)
|
|
|
+ addTransformDockerContextTask(architecture, base)
|
|
|
+ addBuildDockerImageTask(architecture, base)
|
|
|
}
|
|
|
- addBuildDockerContextTask(architecture, base)
|
|
|
- addTransformDockerContextTask(architecture, base)
|
|
|
- addBuildDockerImageTask(architecture, base)
|
|
|
}
|
|
|
-
|
|
|
- addBuildEssDockerImageTask(architecture)
|
|
|
}
|
|
|
|
|
|
def exportDockerImages = tasks.register("exportDockerImages")
|
|
@@ -533,14 +574,17 @@ subprojects { Project subProject ->
|
|
|
base = DockerBase.CLOUD_ESS
|
|
|
} else if (subProject.name.contains('wolfi-')) {
|
|
|
base = DockerBase.WOLFI
|
|
|
+ } else if (subProject.name.contains('fips-')) {
|
|
|
+ base = DockerBase.FIPS
|
|
|
}
|
|
|
|
|
|
final String arch = architecture == Architecture.AARCH64 ? '-aarch64' : ''
|
|
|
final String extension =
|
|
|
(base == DockerBase.IRON_BANK ? 'ironbank.tar' :
|
|
|
(base == DockerBase.CLOUD_ESS ? 'cloud-ess.tar' :
|
|
|
- (base == DockerBase.WOLFI ? 'wolfi.tar' :
|
|
|
- 'docker.tar')))
|
|
|
+ (base == DockerBase.FIPS ? 'fips.tar' :
|
|
|
+ (base == DockerBase.WOLFI ? 'wolfi.tar' :
|
|
|
+ 'docker.tar'))))
|
|
|
final String artifactName = "elasticsearch${arch}${base.suffix}_test"
|
|
|
|
|
|
final String exportTaskName = taskName("export", architecture, base, 'DockerImage')
|