Skip to content

Commit 5b0b591

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature-pwd-protected-keystore
2 parents 98ad0eb + 534d2e5 commit 5b0b591

File tree

2,348 files changed

+38585
-18325
lines changed

Some content is hidden

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

2,348 files changed

+38585
-18325
lines changed

.ci/bwcVersions

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
BWC_VERSION:
2+
- "7.0.0"
3+
- "7.0.1"
4+
- "7.1.0"
5+
- "7.1.1"
6+
- "7.2.0"
7+
- "7.2.1"
8+
- "7.3.0"
9+
- "7.4.0"
10+
- "8.0.0"

build.gradle

+21-8
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,13 @@ import org.gradle.util.DistributionLocator
2929
import org.gradle.plugins.ide.eclipse.model.SourceFolder
3030

3131
plugins {
32-
id 'com.gradle.build-scan' version '2.2.1'
32+
id 'com.gradle.build-scan' version '2.3'
3333
id 'base'
3434
id 'elasticsearch.global-build-info'
3535
}
36-
if (Boolean.valueOf(project.findProperty('org.elasticsearch.acceptScanTOS') ?: "false")) {
37-
buildScan {
38-
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
39-
termsOfServiceAgree = 'yes'
40-
}
41-
}
36+
37+
apply plugin: 'nebula.info-scm'
38+
apply from: 'gradle/build-scan.gradle'
4239

4340
// common maven publishing configuration
4441
allprojects {
@@ -49,7 +46,6 @@ allprojects {
4946

5047
BuildPlugin.configureRepositories(project)
5148

52-
apply plugin: 'nebula.info-scm'
5349
String licenseCommit
5450
if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) {
5551
licenseCommit = scminfo.change ?: "master" // leniency for non git builds
@@ -107,6 +103,17 @@ subprojects {
107103
* logic in VersionUtils.java. */
108104
BwcVersions versions = new BwcVersions(file('server/src/main/java/org/elasticsearch/Version.java').readLines('UTF-8'))
109105

106+
task updateCIBwcVersions() {
107+
doLast {
108+
File yml = file(".ci/bwcVersions")
109+
yml.text = ""
110+
yml << "BWC_VERSION:\n"
111+
versions.indexCompatible.each {
112+
yml << " - \"$it\"\n"
113+
}
114+
}
115+
}
116+
110117
// build metadata from previous build, contains eg hashes for bwc builds
111118
String buildMetadataValue = System.getenv('BUILD_METADATA')
112119
if (buildMetadataValue == null) {
@@ -150,6 +157,12 @@ task verifyVersions {
150157
.collect { Version.fromString(it) }
151158
)
152159
}
160+
String ciYml = file(".ci/bwcVersions").text
161+
bwcVersions.indexCompatible.each {
162+
if (ciYml.contains("\"$it\"\n") == false) {
163+
throw new Exception(".ci/bwcVersions is outdated, run `./gradlew updateCIBwcVersions` and check in the results");
164+
}
165+
}
153166
}
154167
}
155168

buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@ class BuildPlugin implements Plugin<Project> {
825825

826826
test.executable = "${ext.get('runtimeJavaHome')}/bin/java"
827827
test.workingDir = project.file("${project.buildDir}/testrun/${test.name}")
828-
test.maxParallelForks = project.rootProject.extensions.getByType(ExtraPropertiesExtension).get('defaultParallel') as Integer
828+
test.maxParallelForks = System.getProperty('tests.jvms', project.rootProject.extensions.extraProperties.get('defaultParallel').toString()) as Integer
829829

830830
test.exclude '**/*$*.class'
831831

buildSrc/src/main/groovy/org/elasticsearch/gradle/doc/DocsTestPlugin.groovy

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@ package org.elasticsearch.gradle.doc
2121
import org.elasticsearch.gradle.OS
2222
import org.elasticsearch.gradle.Version
2323
import org.elasticsearch.gradle.VersionProperties
24-
import org.elasticsearch.gradle.test.ClusterFormationTasks
2524
import org.elasticsearch.gradle.test.RestTestPlugin
2625
import org.gradle.api.Project
2726
import org.gradle.api.Task
28-
2927
/**
3028
* Sets up tests for documentation.
3129
*/
@@ -38,7 +36,7 @@ public class DocsTestPlugin extends RestTestPlugin {
3836
super.apply(project)
3937
String distribution = System.getProperty('tests.distribution', 'default')
4038
// The distribution can be configured with -Dtests.distribution on the command line
41-
project.testClusters.integTest.distribution = distribution.toUpperCase()
39+
project.testClusters.integTest.testDistribution = distribution.toUpperCase()
4240
project.testClusters.integTest.nameCustomization = { it.replace("integTest", "node") }
4341
// Docs are published separately so no need to assemble
4442
project.tasks.assemble.enabled = false

buildSrc/src/main/groovy/org/elasticsearch/gradle/doc/RestTestsFromSnippetsTask.groovy

+1-1
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public class RestTestsFromSnippetsTask extends SnippetsTask {
353353

354354
private void testSetup(Snippet snippet) {
355355
if (lastDocsPath == snippet.path) {
356-
throw new InvalidUserDataException("$snippet: wasn't first")
356+
throw new InvalidUserDataException("$snippet: wasn't first. TESTSETUP can only be used in the first snippet of a document.")
357357
}
358358
setupCurrent(snippet)
359359
current.println('---')

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/AntFixture.groovy

+4-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ public class AntFixture extends AntTask implements Fixture {
5858
@Input
5959
boolean useShell = false
6060

61+
@Input
62+
int maxWaitInSeconds = 30
63+
6164
/**
6265
* A flag to indicate whether the fixture should be run in the foreground, or spawned.
6366
* It is protected so subclasses can override (eg RunTask).
@@ -128,7 +131,7 @@ public class AntFixture extends AntTask implements Fixture {
128131

129132
String failedProp = "failed${name}"
130133
// first wait for resources, or the failure marker from the wrapper script
131-
ant.waitfor(maxwait: '30', maxwaitunit: 'second', checkevery: '500', checkeveryunit: 'millisecond', timeoutproperty: failedProp) {
134+
ant.waitfor(maxwait: maxWaitInSeconds, maxwaitunit: 'second', checkevery: '500', checkeveryunit: 'millisecond', timeoutproperty: failedProp) {
132135
or {
133136
resourceexists {
134137
file(file: failureMarker.toString())

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/RestIntegTestTask.groovy

+1-5
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,14 @@
1818
*/
1919
package org.elasticsearch.gradle.test
2020

21-
import org.elasticsearch.gradle.VersionProperties
21+
2222
import org.elasticsearch.gradle.testclusters.ElasticsearchCluster
2323
import org.elasticsearch.gradle.testclusters.TestClustersPlugin
2424
import org.gradle.api.DefaultTask
2525
import org.gradle.api.Task
2626
import org.gradle.api.execution.TaskExecutionAdapter
2727
import org.gradle.api.logging.Logger
2828
import org.gradle.api.logging.Logging
29-
import org.gradle.api.specs.Specs
3029
import org.gradle.api.tasks.Copy
3130
import org.gradle.api.tasks.Input
3231
import org.gradle.api.tasks.TaskState
@@ -37,7 +36,6 @@ import org.gradle.plugins.ide.idea.IdeaPlugin
3736
import java.nio.charset.StandardCharsets
3837
import java.nio.file.Files
3938
import java.util.stream.Stream
40-
4139
/**
4240
* A wrapper task around setting up a cluster and running rest tests.
4341
*/
@@ -69,8 +67,6 @@ class RestIntegTestTask extends DefaultTask {
6967
} else {
7068
project.testClusters {
7169
"$name" {
72-
distribution = 'INTEG_TEST'
73-
version = VersionProperties.elasticsearch
7470
javaHome = project.file(project.ext.runtimeJavaHome)
7571
}
7672
}

buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantTestPlugin.groovy

+21-12
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,9 @@ class VagrantTestPlugin implements Plugin<Project> {
324324
fi
325325
326326
if [ -z "\$SYSTEM_JAVA_HOME" ]; then
327-
export SYSTEM_JAVA_HOME="${-> convertPath(project, linuxSystemJdk.toString()) }"
327+
export SYSTEM_JAVA_HOME="${-> convertLinuxPath(project, linuxSystemJdk.toString()) }"
328328
fi
329-
"${-> convertPath(project, linuxGradleJdk.toString()) }"/bin/java -cp "\$PACKAGING_TESTS/*" org.elasticsearch.packaging.VMTestRunner "\${test_args[@]}"
329+
"${-> convertLinuxPath(project, linuxGradleJdk.toString()) }"/bin/java -cp "\$PACKAGING_TESTS/*" org.elasticsearch.packaging.VMTestRunner "\${test_args[@]}"
330330
"""
331331
}
332332
Task createWindowsRunnerScript = project.tasks.create('createWindowsRunnerScript', FileContentsTask) {
@@ -335,14 +335,20 @@ class VagrantTestPlugin implements Plugin<Project> {
335335
// the use of $args rather than param() here is deliberate because the syntax for array (multivalued) parameters is likely
336336
// a little trappy for those unfamiliar with powershell
337337
contents """\
338-
if (\$args.Count -eq 0) {
339-
\$testArgs = @("${-> project.extensions.esvagrant.testClass}")
340-
} else {
341-
\$testArgs = \$args
338+
try {
339+
if (\$args.Count -eq 0) {
340+
\$testArgs = @("${-> project.extensions.esvagrant.testClass}")
341+
} else {
342+
\$testArgs = \$args
343+
}
344+
\$Env:SYSTEM_JAVA_HOME = "${-> convertWindowsPath(project, windowsSystemJdk.toString()) }"
345+
& "${-> convertWindowsPath(project, windowsGradleJdk.toString()) }/bin/java" -cp "\$Env:PACKAGING_TESTS/*" org.elasticsearch.packaging.VMTestRunner @testArgs
346+
exit \$LASTEXITCODE
347+
} catch {
348+
# catch if we have a failure to even run the script at all above, equivalent to set -e, sort of
349+
echo "\$_.Exception.Message"
350+
exit 1
342351
}
343-
\$Env:SYSTEM_JAVA_HOME = "${-> convertPath(project, windowsSystemJdk.toString()) }"
344-
& "${-> convertPath(project, windowsGradleJdk.toString()) }"/bin/java -cp "\$Env:PACKAGING_TESTS/*" org.elasticsearch.packaging.VMTestRunner @testArgs
345-
exit \$LASTEXITCODE
346352
"""
347353
}
348354

@@ -578,7 +584,7 @@ class VagrantTestPlugin implements Plugin<Project> {
578584

579585
if (LINUX_BOXES.contains(box)) {
580586
Task batsPackagingTest = project.tasks.create("vagrant${boxTask}#batsPackagingTest", BatsOverVagrantTask) {
581-
remoteCommand "export SYSTEM_JAVA_HOME=\"${-> convertPath(project, linuxSystemJdk.toString())}\"; " + BATS_TEST_COMMAND
587+
remoteCommand "export SYSTEM_JAVA_HOME=\"${-> convertLinuxPath(project, linuxSystemJdk.toString())}\"; " + BATS_TEST_COMMAND
582588
boxName box
583589
environmentVars vagrantEnvVars
584590
dependsOn up, setupPackagingTest, linuxSystemJdk
@@ -625,7 +631,7 @@ class VagrantTestPlugin implements Plugin<Project> {
625631
// https://github.com/hashicorp/vagrant/blob/9c299a2a357fcf87f356bb9d56e18a037a53d138/plugins/communicators/winrm/communicator.rb#L195-L225
626632
// https://devops-collective-inc.gitbooks.io/secrets-of-powershell-remoting/content/manuscript/accessing-remote-computers.html
627633
javaPackagingTest.command = 'winrm'
628-
javaPackagingTest.args = ['--elevated', '--command', 'powershell -File "$Env:PACKAGING_TESTS/run-tests.ps1"']
634+
javaPackagingTest.args = ['--elevated', '--command', '& "$Env:PACKAGING_TESTS/run-tests.ps1"; exit $LASTEXITCODE']
629635
}
630636

631637
TaskExecutionAdapter javaPackagingReproListener = createReproListener(project, javaPackagingTest.path)
@@ -658,7 +664,10 @@ class VagrantTestPlugin implements Plugin<Project> {
658664
}
659665

660666
// convert the given path from an elasticsearch repo path to a VM path
661-
private String convertPath(Project project, String path) {
667+
private String convertLinuxPath(Project project, String path) {
662668
return "/elasticsearch/" + project.rootDir.toPath().relativize(Paths.get(path));
663669
}
670+
private String convertWindowsPath(Project project, String path) {
671+
return "C:\\elasticsearch\\" + project.rootDir.toPath().relativize(Paths.get(path)).toString().replace('/', '\\');
672+
}
664673
}

buildSrc/src/main/java/org/elasticsearch/gradle/Distribution.java

-80
This file was deleted.

buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
*/
5555
public class DistributionDownloadPlugin implements Plugin<Project> {
5656

57+
private static final String CONTAINER_NAME = "elasticsearch_distributions";
5758
private static final String FAKE_IVY_GROUP = "elasticsearch-distribution";
5859
private static final String DOWNLOAD_REPO_NAME = "elasticsearch-downloads";
5960

@@ -67,7 +68,7 @@ public void apply(Project project) {
6768
Configuration extractedConfiguration = project.getConfigurations().create("es_distro_extracted_" + name);
6869
return new ElasticsearchDistribution(name, project.getObjects(), fileConfiguration, extractedConfiguration);
6970
});
70-
project.getExtensions().add("elasticsearch_distributions", distributionsContainer);
71+
project.getExtensions().add(CONTAINER_NAME, distributionsContainer);
7172

7273
setupDownloadServiceRepo(project);
7374

@@ -78,6 +79,11 @@ public void apply(Project project) {
7879
project.afterEvaluate(this::setupDistributions);
7980
}
8081

82+
@SuppressWarnings("unchecked")
83+
public static NamedDomainObjectContainer<ElasticsearchDistribution> getContainer(Project project) {
84+
return (NamedDomainObjectContainer<ElasticsearchDistribution>) project.getExtensions().getByName(CONTAINER_NAME);
85+
}
86+
8187
// pkg private for tests
8288
void setupDistributions(Project project) {
8389
for (ElasticsearchDistribution distribution : distributionsContainer) {

buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@
2020
package org.elasticsearch.gradle;
2121

2222
import org.gradle.api.Buildable;
23+
import org.gradle.api.Project;
2324
import org.gradle.api.artifacts.Configuration;
25+
import org.gradle.api.file.FileTree;
2426
import org.gradle.api.model.ObjectFactory;
2527
import org.gradle.api.provider.Property;
2628
import org.gradle.api.tasks.TaskDependency;
2729

2830
import java.io.File;
2931
import java.util.Iterator;
3032
import java.util.Locale;
33+
import java.util.concurrent.Callable;
3134

3235
public class ElasticsearchDistribution implements Buildable {
3336

@@ -65,7 +68,7 @@ public String toString() {
6568
}
6669

6770
// package private to tests can use
68-
static final Platform CURRENT_PLATFORM = OS.<Platform>conditional()
71+
public static final Platform CURRENT_PLATFORM = OS.<Platform>conditional()
6972
.onLinux(() -> Platform.LINUX)
7073
.onWindows(() -> Platform.WINDOWS)
7174
.onMac(() -> Platform.DARWIN)
@@ -90,6 +93,10 @@ public TaskDependency getBuildDependencies() {
9093
return configuration.getBuildDependencies();
9194
}
9295

96+
public FileTree getFileTree(Project project) {
97+
return project.fileTree((Callable<File>) configuration::getSingleFile);
98+
}
99+
93100
@Override
94101
public String toString() {
95102
return configuration.getSingleFile().toString();

0 commit comments

Comments
 (0)