Skip to content

Commit e6504e2

Browse files
committed
Merge with main
2 parents 403b310 + 1d6c6a5 commit e6504e2

File tree

359 files changed

+9755
-4052
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

359 files changed

+9755
-4052
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ public enum DockerBase {
2222
// Chainguard based wolfi image with latest jdk
2323
// This is usually updated via renovatebot
2424
// spotless:off
25-
WOLFI("docker.elastic.co/wolfi/chainguard-base:latest@sha256:15a4191ff8ec8305dcba449365e8a1586c9cda8e016ae838d960b9009c6a5cac",
25+
WOLFI("docker.elastic.co/wolfi/chainguard-base:latest@sha256:c4e10ecf3d8a21cf4be2fb53a2f522de50e14c80ce1da487e3ffd13f4d48d24d",
2626
"-wolfi",
2727
"apk"
2828
),
29+
30+
FIPS("docker.elastic.co/wolfi/chainguard-base-fips:sha256-feb7aeb1bbcb331afa089388f2fa1e81997fc24642ca4fa06b7e502ff599a4cf", "-fips", "apk"),
2931
// spotless:on
3032
// Based on WOLFI above, with more extras. We don't set a base image because
3133
// we programmatically extend from the wolfi image.

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,45 +29,13 @@ private static ListMultimap<Class<?>, String> createLegacyRestTestBasePluginUsag
2929
ListMultimap<Class<?>, String> map = ArrayListMultimap.create(1, 200);
3030
map.put(LegacyRestTestBasePlugin.class, ":docs");
3131
map.put(LegacyRestTestBasePlugin.class, ":distribution:docker");
32-
map.put(LegacyRestTestBasePlugin.class, ":modules:lang-expression");
33-
map.put(LegacyRestTestBasePlugin.class, ":modules:lang-mustache");
34-
map.put(LegacyRestTestBasePlugin.class, ":modules:mapper-extras");
35-
map.put(LegacyRestTestBasePlugin.class, ":modules:parent-join");
36-
map.put(LegacyRestTestBasePlugin.class, ":modules:percolator");
37-
map.put(LegacyRestTestBasePlugin.class, ":modules:rank-eval");
3832
map.put(LegacyRestTestBasePlugin.class, ":modules:reindex");
39-
map.put(LegacyRestTestBasePlugin.class, ":modules:repository-url");
40-
map.put(LegacyRestTestBasePlugin.class, ":modules:transport-netty4");
41-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-icu");
42-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-kuromoji");
43-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-nori");
44-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-phonetic");
45-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-smartcn");
46-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-stempel");
47-
map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-ukrainian");
48-
map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-azure-classic");
49-
map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-ec2");
50-
map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-gce");
51-
map.put(LegacyRestTestBasePlugin.class, ":plugins:mapper-annotated-text");
52-
map.put(LegacyRestTestBasePlugin.class, ":plugins:store-smb");
5333
map.put(LegacyRestTestBasePlugin.class, ":qa:ccs-rolling-upgrade-remote-cluster");
5434
map.put(LegacyRestTestBasePlugin.class, ":qa:mixed-cluster");
5535
map.put(LegacyRestTestBasePlugin.class, ":qa:multi-cluster-search");
5636
map.put(LegacyRestTestBasePlugin.class, ":qa:remote-clusters");
5737
map.put(LegacyRestTestBasePlugin.class, ":qa:repository-multi-version");
5838
map.put(LegacyRestTestBasePlugin.class, ":qa:rolling-upgrade-legacy");
59-
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-http");
60-
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-disabled");
61-
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-with-all-dependencies");
62-
map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-plugins");
63-
map.put(LegacyRestTestBasePlugin.class, ":qa:system-indices");
64-
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration");
65-
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs");
66-
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity");
67-
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-error-query");
68-
map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-latency-simulating-directory");
69-
map.put(LegacyRestTestBasePlugin.class, ":test:yaml-rest-runner");
70-
map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:core");
7139
map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:ent-search");
7240
map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:fleet");
7341
map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:logstash");
@@ -85,8 +53,6 @@ private static ListMultimap<Class<?>, String> createLegacyRestTestBasePluginUsag
8553
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:smoke-test-plugins-ssl");
8654
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:smoke-test-security-with-mustache");
8755
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:xpack-prefix-rest-compat");
88-
map.put(LegacyRestTestBasePlugin.class, ":modules:ingest-geoip:qa:file-based-update");
89-
map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-gce:qa:gce");
9056
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:multi-cluster-search-security:legacy-with-basic-license");
9157
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:multi-cluster-search-security:legacy-with-full-license");
9258
map.put(LegacyRestTestBasePlugin.class, ":x-pack:qa:multi-cluster-search-security:legacy-with-restricted-trust");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.gradle.internal.distribution;
11+
12+
import org.elasticsearch.gradle.ElasticsearchDistributionType;
13+
14+
public class DockerFipsElasticsearchDistributionType implements ElasticsearchDistributionType {
15+
16+
DockerFipsElasticsearchDistributionType() {}
17+
18+
@Override
19+
public String getName() {
20+
return "dockerFips";
21+
}
22+
23+
@Override
24+
public boolean isDocker() {
25+
return true;
26+
}
27+
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,22 @@
1414
import java.util.List;
1515

1616
public class InternalElasticsearchDistributionTypes {
17+
1718
public static final ElasticsearchDistributionType DEB = new DebElasticsearchDistributionType();
1819
public static final ElasticsearchDistributionType RPM = new RpmElasticsearchDistributionType();
1920
public static final ElasticsearchDistributionType DOCKER = new DockerElasticsearchDistributionType();
2021
public static final ElasticsearchDistributionType DOCKER_IRONBANK = new DockerIronBankElasticsearchDistributionType();
2122
public static final ElasticsearchDistributionType DOCKER_CLOUD_ESS = new DockerCloudEssElasticsearchDistributionType();
2223
public static final ElasticsearchDistributionType DOCKER_WOLFI = new DockerWolfiElasticsearchDistributionType();
24+
public static final ElasticsearchDistributionType DOCKER_FIPS = new DockerFipsElasticsearchDistributionType();
2325

2426
public static final List<ElasticsearchDistributionType> ALL_INTERNAL = List.of(
2527
DEB,
2628
RPM,
2729
DOCKER,
2830
DOCKER_IRONBANK,
31+
DOCKER_WOLFI,
2932
DOCKER_CLOUD_ESS,
30-
DOCKER_WOLFI
33+
DOCKER_FIPS
3134
);
3235
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DEB;
5252
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DOCKER;
5353
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DOCKER_CLOUD_ESS;
54+
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DOCKER_FIPS;
5455
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DOCKER_IRONBANK;
5556
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.DOCKER_WOLFI;
5657
import static org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes.RPM;
@@ -151,6 +152,7 @@ private static Map<ElasticsearchDistributionType, TaskProvider<?>> lifecycleTask
151152
lifecyleTasks.put(DOCKER_IRONBANK, project.getTasks().register(taskPrefix + ".docker-ironbank"));
152153
lifecyleTasks.put(DOCKER_CLOUD_ESS, project.getTasks().register(taskPrefix + ".docker-cloud-ess"));
153154
lifecyleTasks.put(DOCKER_WOLFI, project.getTasks().register(taskPrefix + ".docker-wolfi"));
155+
lifecyleTasks.put(DOCKER_FIPS, project.getTasks().register(taskPrefix + ".docker-fips"));
154156
lifecyleTasks.put(ARCHIVE, project.getTasks().register(taskPrefix + ".archives"));
155157
lifecyleTasks.put(DEB, project.getTasks().register(taskPrefix + ".packages"));
156158
lifecyleTasks.put(RPM, lifecyleTasks.get(DEB));

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/MutedTestPlugin.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.gradle.api.provider.Provider;
1717
import org.gradle.api.tasks.testing.Test;
1818

19+
import java.io.File;
1920
import java.util.Arrays;
2021
import java.util.List;
2122

@@ -26,21 +27,22 @@ public class MutedTestPlugin implements Plugin<Project> {
2627

2728
@Override
2829
public void apply(Project project) {
30+
project.getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
31+
var buildParams = loadBuildParams(project).get();
32+
33+
File settingsRoot = project.getLayout().getSettingsDirectory().getAsFile();
2934
String additionalFilePaths = project.hasProperty(ADDITIONAL_FILES_PROPERTY)
3035
? project.property(ADDITIONAL_FILES_PROPERTY).toString()
3136
: "";
3237
List<RegularFile> additionalFiles = Arrays.stream(additionalFilePaths.split(","))
3338
.filter(p -> p.isEmpty() == false)
34-
.map(p -> project.getRootProject().getLayout().getProjectDirectory().file(p))
39+
.map(p -> project.getLayout().getSettingsDirectory().file(p))
3540
.toList();
3641

37-
project.getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
38-
var buildParams = loadBuildParams(project).get();
39-
4042
Provider<MutedTestsBuildService> mutedTestsProvider = project.getGradle()
4143
.getSharedServices()
4244
.registerIfAbsent("mutedTests", MutedTestsBuildService.class, spec -> {
43-
spec.getParameters().getInfoPath().set(project.getRootProject().getProjectDir());
45+
spec.getParameters().getInfoPath().set(settingsRoot);
4446
spec.getParameters().getAdditionalFiles().set(additionalFiles);
4547
});
4648

build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class BasePluginBuildPlugin implements Plugin<Project> {
5656
public static final String BUNDLE_PLUGIN_TASK_NAME = "bundlePlugin";
5757
public static final String EXPLODED_BUNDLE_PLUGIN_TASK_NAME = "explodedBundlePlugin";
5858
public static final String EXPLODED_BUNDLE_CONFIG = "explodedBundleZip";
59+
public static final Attribute<Boolean> EXPLODED_PLUGIN_BUNDLE_ATTRIBUTE = Attribute.of("exploded-plugin-bundle", Boolean.class);
5960

6061
protected final ProviderFactory providerFactory;
6162

@@ -170,6 +171,7 @@ private TaskProvider<Zip> createBundleTasks(final Project project, PluginPropert
170171
explodedBundleZip.setCanBeResolved(false);
171172
explodedBundleZip.setCanBeConsumed(true);
172173
explodedBundleZip.getAttributes().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE);
174+
explodedBundleZip.getAttributes().attribute(EXPLODED_PLUGIN_BUNDLE_ATTRIBUTE, true);
173175
project.getArtifacts().add(EXPLODED_BUNDLE_CONFIG, explodedBundle);
174176
return bundle;
175177
}

build.gradle

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,16 @@ allprojects {
295295
tasks.register('resolveAllDependencies', ResolveAllDependencies) {
296296
def ignoredPrefixes = [DistributionDownloadPlugin.ES_DISTRO_CONFIG_PREFIX, "jdbcDriver"]
297297
configs = project.configurations.matching { config -> ignoredPrefixes.any { config.name.startsWith(it) } == false }
298-
resolveJavaToolChain = true
298+
if(project.path == ':') {
299+
resolveJavaToolChain = true
300+
301+
// ensure we have best possible caching of bwc builds
302+
dependsOn ":distribution:bwc:bugfix:buildBwcLinuxTar"
303+
dependsOn ":distribution:bwc:bugfix2:buildBwcLinuxTar"
304+
dependsOn ":distribution:bwc:minor:buildBwcLinuxTar"
305+
dependsOn ":distribution:bwc:staged:buildBwcLinuxTar"
306+
dependsOn ":distribution:bwc:staged2:buildBwcLinuxTar"
307+
}
299308
if (project.path.contains("fixture")) {
300309
dependsOn tasks.withType(ComposePull)
301310
}
@@ -306,6 +315,7 @@ allprojects {
306315
// ensure we resolve p2 dependencies for the spotless eclipse formatter
307316
dependsOn "spotlessJavaCheck"
308317
}
318+
309319
}
310320

311321
ext.withReleaseBuild = { Closure config ->

distribution/docker/build.gradle

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import org.elasticsearch.gradle.LoggedExec
22
import org.elasticsearch.gradle.VersionProperties
33
import org.elasticsearch.gradle.internal.DockerBase
44
import org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes
5+
import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask
56
import org.elasticsearch.gradle.internal.docker.DockerBuildTask
67
import org.elasticsearch.gradle.internal.docker.DockerSupportPlugin
78
import org.elasticsearch.gradle.internal.docker.DockerSupportService
@@ -17,6 +18,8 @@ apply plugin: 'elasticsearch.legacy-yaml-rest-test'
1718
apply plugin: 'elasticsearch.test.fixtures'
1819
apply plugin: 'elasticsearch.internal-distribution-download'
1920
apply plugin: 'elasticsearch.dra-artifacts'
21+
apply plugin: 'elasticsearch.jdk-download'
22+
apply plugin: 'elasticsearch.repositories'
2023

2124
String buildId = providers.systemProperty('build.id').getOrNull()
2225
boolean 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

98102
String 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

114120
ext.expansions = { Architecture architecture, DockerBase base ->
@@ -286,6 +292,34 @@ void addBuildDockerContextTask(Architecture architecture, DockerBase base) {
286292
filter TransformLog4jConfigFilter
287293
}
288294
}
295+
if(base == DockerBase.FIPS) {
296+
297+
// If we're performing a release build, but `build.id` hasn't been set, we can
298+
// infer that we're not at the Docker building stage of the build, and therefore
299+
// we should skip the beats part of the build.
300+
String buildId = providers.systemProperty('build.id').getOrNull()
301+
boolean includeBeats = VersionProperties.isElasticsearchSnapshot() == true || buildId != null || useDra
302+
303+
if (includeBeats) {
304+
from configurations.getByName("filebeat_${architecture.classifier}")
305+
from configurations.getByName("metricbeat_${architecture.classifier}")
306+
// For some reason, the artifact name can differ depending on what repository we used.
307+
rename ~/((?:file|metric)beat)-.*\.tar\.gz$/, "\$1-${VersionProperties.elasticsearch}.tar.gz"
308+
}
309+
310+
into("plugins") {
311+
from configurations.allPlugins
312+
}
313+
314+
into("fips") {
315+
into("libs") {
316+
from configurations.fips
317+
}
318+
into("resources") {
319+
from tasks.named('fipsDockerResources')
320+
}
321+
}
322+
}
289323

290324
Provider<DockerSupportService> serviceProvider = GradleUtils.getBuildService(
291325
project.gradle.sharedServices,
@@ -431,7 +465,7 @@ void addBuildDockerImageTask(Architecture architecture, DockerBase base) {
431465
}
432466
}
433467

434-
void addBuildEssDockerImageTask(Architecture architecture) {
468+
void addBuildCloudDockerImageTasks(Architecture architecture) {
435469
DockerBase dockerBase = DockerBase.CLOUD_ESS
436470
String arch = architecture == Architecture.AARCH64 ? '-aarch64' : ''
437471
String contextDir = "${project.buildDir}/docker-context/elasticsearch${dockerBase.suffix}-${VersionProperties.elasticsearch}-docker-build-context${arch}"
@@ -463,10 +497,10 @@ void addBuildEssDockerImageTask(Architecture architecture) {
463497
from(projectDir.resolve("src/docker/Dockerfile.ess")) {
464498
expand(
465499
[
466-
base_image: "elasticsearch${baseSuffix}:${architecture.classifier}",
500+
base_image : "elasticsearch${baseSuffix}:${architecture.classifier}",
467501
docker_base: "${dockerBase.name().toLowerCase()}",
468-
version: "${VersionProperties.elasticsearch}",
469-
retry: ShellRetry
502+
version : "${VersionProperties.elasticsearch}",
503+
retry : ShellRetry
470504
]
471505
)
472506
filter SquashNewlinesFilter
@@ -501,17 +535,24 @@ void addBuildEssDockerImageTask(Architecture architecture) {
501535
}
502536
}
503537

538+
// fips
539+
TaskProvider<ExportElasticsearchBuildResourcesTask> fipsResourcesTask = tasks.register('fipsDockerResources', ExportElasticsearchBuildResourcesTask)
540+
fipsResourcesTask.configure {
541+
outputDir = project.layout.buildDirectory.dir('fips-docker-resources').get().asFile
542+
copy 'fips_java.security'
543+
copy 'fips_java.policy'
544+
}
545+
504546
for (final Architecture architecture : Architecture.values()) {
505547
for (final DockerBase base : DockerBase.values()) {
506548
if (base == DockerBase.CLOUD_ESS) {
507-
continue
549+
addBuildCloudDockerImageTasks(architecture)
550+
} else {
551+
addBuildDockerContextTask(architecture, base)
552+
addTransformDockerContextTask(architecture, base)
553+
addBuildDockerImageTask(architecture, base)
508554
}
509-
addBuildDockerContextTask(architecture, base)
510-
addTransformDockerContextTask(architecture, base)
511-
addBuildDockerImageTask(architecture, base)
512555
}
513-
514-
addBuildEssDockerImageTask(architecture)
515556
}
516557

517558
def exportDockerImages = tasks.register("exportDockerImages")
@@ -533,14 +574,17 @@ subprojects { Project subProject ->
533574
base = DockerBase.CLOUD_ESS
534575
} else if (subProject.name.contains('wolfi-')) {
535576
base = DockerBase.WOLFI
577+
} else if (subProject.name.contains('fips-')) {
578+
base = DockerBase.FIPS
536579
}
537580

538581
final String arch = architecture == Architecture.AARCH64 ? '-aarch64' : ''
539582
final String extension =
540583
(base == DockerBase.IRON_BANK ? 'ironbank.tar' :
541584
(base == DockerBase.CLOUD_ESS ? 'cloud-ess.tar' :
542-
(base == DockerBase.WOLFI ? 'wolfi.tar' :
543-
'docker.tar')))
585+
(base == DockerBase.FIPS ? 'fips.tar' :
586+
(base == DockerBase.WOLFI ? 'wolfi.tar' :
587+
'docker.tar'))))
544588
final String artifactName = "elasticsearch${arch}${base.suffix}_test"
545589

546590
final String exportTaskName = taskName("export", architecture, base, 'DockerImage')

0 commit comments

Comments
 (0)