Skip to content

Move bwcVersions extension property to BuildParams #56206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 2 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,6 @@ subprojects {
}
}

/* Introspect all versions of ES that may be tested against for backwards
* compatibility. It is *super* important that this logic is the same as the
* logic in VersionUtils.java. */
BwcVersions versions = new BwcVersions(file('server/src/main/java/org/elasticsearch/Version.java').readLines('UTF-8'))

task updateCIBwcVersions() {
doLast {
File yml = file(".ci/bwcVersions")
Expand Down Expand Up @@ -144,9 +139,6 @@ allprojects {
gradle.startParameter.taskNames.contains('eclipse') || // Detects gradle launched from the command line to do eclipse stuff
gradle.startParameter.taskNames.contains('cleanEclipse')

// for BWC testing
bwcVersions = versions

buildMetadata = buildMetadataMap
}
}
Expand All @@ -160,15 +152,15 @@ task verifyVersions {
// Fetch the metadata and parse the xml into Version instances because it's more straight forward here
// rather than bwcVersion ( VersionCollection ).
new URL('https://repo1.maven.org/maven2/org/elasticsearch/elasticsearch/maven-metadata.xml').openStream().withStream { s ->
bwcVersions.compareToAuthoritative(
BuildParams.bwcVersions.compareToAuthoritative(
new XmlParser().parse(s)
.versioning.versions.version
.collect { it.text() }.findAll { it ==~ /\d+\.\d+\.\d+/ }
.collect { Version.fromString(it) }
)
}
String ciYml = file(".ci/bwcVersions").text
bwcVersions.indexCompatible.each {
BuildParams.bwcVersions.indexCompatible.each {
if (ciYml.contains("\"$it\"\n") == false) {
throw new Exception(".ci/bwcVersions is outdated, run `./gradlew updateCIBwcVersions` and check in the results");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.gradle.api.artifacts.repositories.IvyArtifactRepository;
import org.gradle.api.credentials.HttpHeaderCredentials;
import org.gradle.api.file.FileTree;
import org.gradle.api.plugins.ExtraPropertiesExtension;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Sync;
import org.gradle.api.tasks.TaskProvider;
Expand Down Expand Up @@ -92,8 +91,7 @@ public void apply(Project project) {
setupDownloadServiceRepo(project);

if (BuildParams.isInternal()) {
ExtraPropertiesExtension extraProperties = project.getExtensions().getExtraProperties();
this.bwcVersions = (BwcVersions) extraProperties.get("bwcVersions");
this.bwcVersions = BuildParams.getBwcVersions();
}

project.afterEvaluate(this::setupDistributions);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.elasticsearch.gradle.info;

import org.apache.commons.io.IOUtils;
import org.elasticsearch.gradle.BwcVersions;
import org.elasticsearch.gradle.OS;
import org.elasticsearch.gradle.util.Util;
import org.gradle.api.GradleException;
Expand All @@ -20,6 +22,7 @@
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.UncheckedIOException;
Expand All @@ -44,6 +47,7 @@

public class GlobalBuildInfoPlugin implements Plugin<Project> {
private static final Logger LOGGER = Logging.getLogger(GlobalBuildInfoPlugin.class);
private static final String DEFAULT_VERSION_JAVA_FILE_PATH = "server/src/main/java/org/elasticsearch/Version.java";
private static Integer _defaultParallel = null;

private final JavaInstallationRegistry javaInstallationRegistry;
Expand All @@ -69,10 +73,13 @@ public void apply(Project project) {
File compilerJavaHome = findCompilerJavaHome();
File runtimeJavaHome = findRuntimeJavaHome(compilerJavaHome);

GitInfo gitInfo = gitInfo(project.getRootProject().getRootDir());
File rootDir = project.getRootDir();
GitInfo gitInfo = gitInfo(rootDir);

// Initialize global build parameters
BuildParams.init(params -> {
// Initialize global build parameters
boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null;

params.reset();
params.setCompilerJavaHome(compilerJavaHome);
params.setRuntimeJavaHome(runtimeJavaHome);
Expand All @@ -88,16 +95,32 @@ public void apply(Project project) {
params.setBuildDate(ZonedDateTime.now(ZoneOffset.UTC));
params.setTestSeed(getTestSeed());
params.setIsCi(System.getenv("JENKINS_URL") != null);
params.setIsInternal(GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null);
params.setIsInternal(isInternal);
params.setDefaultParallel(findDefaultParallel(project));
params.setInFipsJvm(Util.getBooleanProperty("tests.fips.enabled", false));
params.setIsSnapshotBuild(Util.getBooleanProperty("build.snapshot", true));
if (isInternal) {
params.setBwcVersions(resolveBwcVersions(rootDir));
}
});

// Print global build info header just before task execution
project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo());
}

/* Introspect all versions of ES that may be tested against for backwards
* compatibility. It is *super* important that this logic is the same as the
* logic in VersionUtils.java. */
private static BwcVersions resolveBwcVersions(File root) {
File versionsFile = new File(root, DEFAULT_VERSION_JAVA_FILE_PATH);
try {
List<String> versionLines = IOUtils.readLines(new FileInputStream(versionsFile), "UTF-8");
return new BwcVersions(versionLines);
} catch (IOException e) {
throw new IllegalStateException("Unable to resolve to resolve bwc versions from versionsFile.", e);
}
}

private void logGlobalBuildInfo() {
final String osName = System.getProperty("os.name");
final String osVersion = System.getProperty("os.version");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ private static Version getUpgradeVersion(Project project) {

String firstPartOfSeed = BuildParams.getTestSeed().split(":")[0];
final long seed = Long.parseUnsignedLong(firstPartOfSeed, 16);
BwcVersions bwcVersions = (BwcVersions) extraProperties.get("bwcVersions");
BwcVersions bwcVersions = BuildParams.getBwcVersions();
final List<Version> indexCompatVersions = bwcVersions.getIndexCompatible();
return indexCompatVersions.get(new Random(seed).nextInt(indexCompatVersions.size()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
package org.elasticsearch.gradle;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
Expand All @@ -36,7 +38,6 @@

import static java.util.Collections.emptyList;
import static java.util.Collections.unmodifiableList;
import static java.util.function.Predicate.not;

/**
* A container for elasticsearch supported version information used in BWC testing.
Expand Down Expand Up @@ -88,7 +89,7 @@ public class BwcVersions {
private static final Pattern LINE_PATTERN = Pattern.compile(
"\\W+public static final Version V_(\\d+)_(\\d+)_(\\d+)(_alpha\\d+|_beta\\d+|_rc\\d+)? .*"
);
private static final List<Version> IGNORED_VERSIONS = List.of(Version.fromString("7.7.0"));
private static final List<Version> IGNORED_VERSIONS = Arrays.asList(Version.fromString("7.7.0"));

private final Version currentVersion;
private final Map<Integer, List<Version>> groupByMajor;
Expand Down Expand Up @@ -122,7 +123,7 @@ protected BwcVersions(List<String> versionLines, Version currentVersionProperty)
Integer.parseInt(match.group(3))
)
)
.filter(not(IGNORED_VERSIONS::contains)) // remove any specifically ignored versions
.filter(v -> !IGNORED_VERSIONS.contains(v)) // remove any specifically ignored versions
.collect(Collectors.toCollection(TreeSet::new)),
currentVersionProperty
);
Expand Down Expand Up @@ -275,7 +276,12 @@ public List<Version> getUnreleased() {
// we found that the previous minor is staged but not yet released
// in this case, the minor before that has a bugfix, should there be such a minor
if (greatestMinor >= 2) {
int major = groupByMinor.values().stream().flatMap(Collection::stream).findFirst().map(Version::getMajor).orElseThrow();
int major = groupByMinor.values()
.stream()
.flatMap(Collection::stream)
.findFirst()
.map(Version::getMajor)
.orElseThrow(NoSuchElementException::new);
// Don't bother searching for a version we've ignored
if (IGNORED_VERSIONS.contains(new Version(major, greatestMinor - 2, 0)) == false) {
unreleased.add(getLatestVersionByKey(groupByMinor, greatestMinor - 2));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.elasticsearch.gradle.info;

import org.elasticsearch.gradle.BwcVersions;
import org.gradle.api.JavaVersion;

import java.io.File;
Expand Down Expand Up @@ -30,6 +31,7 @@ public class BuildParams {
private static Boolean isInternal;
private static Integer defaultParallel;
private static Boolean isSnapshotBuild;
private static BwcVersions bwcVersions;

/**
* Initialize global build parameters. This method accepts and a initialization function which in turn accepts a
Expand Down Expand Up @@ -95,6 +97,10 @@ public static ZonedDateTime getBuildDate() {
return value(buildDate);
}

public static BwcVersions getBwcVersions() {
return value(bwcVersions);
}

public static String getTestSeed() {
return value(testSeed);
}
Expand Down Expand Up @@ -228,5 +234,8 @@ public void setIsSnapshotBuild(final boolean isSnapshotBuild) {
BuildParams.isSnapshotBuild = isSnapshotBuild;
}

public void setBwcVersions(BwcVersions bwcVersions) {
BuildParams.bwcVersions = requireNonNull(bwcVersions);
}
}
}
4 changes: 1 addition & 3 deletions buildSrc/src/testKit/distribution-download/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,5 @@ if (internal) {
BwcVersions versions = new BwcVersions(new TreeSet<>(
Arrays.asList(Version.fromString("8.0.0"), Version.fromString("8.0.1"), Version.fromString("8.1.0"), currentVersion)),
currentVersion)
allprojects {
ext.bwcVersions = versions
}
BuildParams.init { it.setBwcVersions(versions) }
}
2 changes: 1 addition & 1 deletion distribution/bwc/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import static org.elasticsearch.gradle.util.JavaUtil.getJavaHome
* unreleased versions are when Gradle projects are set up, so we use "build-unreleased-version-*" as placeholders
* and configure them to build various versions here.
*/
bwcVersions.forPreviousUnreleased { BwcVersions.UnreleasedVersionInfo unreleasedVersion ->
BuildParams.bwcVersions.forPreviousUnreleased { BwcVersions.UnreleasedVersionInfo unreleasedVersion ->
project("${unreleasedVersion.gradleProjectPath}") {
Version bwcVersion = unreleasedVersion.version
String bwcBranch = unreleasedVersion.branch
Expand Down
3 changes: 2 additions & 1 deletion gradle/bwc-test.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import org.elasticsearch.gradle.Version
import org.elasticsearch.gradle.info.BuildParams

ext.bwcTaskName = { Version version ->
return "v${version}#bwcTest"
}

def bwcTestSnapshots = tasks.register("bwcTestSnapshots") {
if (project.bwc_tests_enabled) {
dependsOn tasks.matching { task -> bwcVersions.unreleased.any { version -> bwcTaskName(version) == task.name } }
dependsOn tasks.matching { task -> BuildParams.bwcVersions.unreleased.any { version -> bwcTaskName(version) == task.name } }
}
}

Expand Down
2 changes: 1 addition & 1 deletion qa/full-cluster-restart/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ apply plugin: 'elasticsearch.testclusters'
apply plugin: 'elasticsearch.standalone-test'
apply from : "$rootDir/gradle/bwc-test.gradle"

for (Version bwcVersion : bwcVersions.indexCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.indexCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down
2 changes: 1 addition & 1 deletion qa/mixed-cluster/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ restResources {
}
}

for (Version bwcVersion : bwcVersions.wireCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
if (bwcVersion == VersionProperties.getElasticsearchVersion()) {
// Not really a mixed cluster
continue;
Expand Down
2 changes: 1 addition & 1 deletion qa/repository-multi-version/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ dependencies {
testCompile project(':client:rest-high-level')
}

for (Version bwcVersion : bwcVersions.indexCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.indexCompatible) {
String baseName = "v${bwcVersion}"
String oldClusterName = "${baseName}-old"
String newClusterName = "${baseName}-new"
Expand Down
2 changes: 1 addition & 1 deletion qa/rolling-upgrade/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ apply plugin: 'elasticsearch.testclusters'
apply plugin: 'elasticsearch.standalone-test'
apply from : "$rootDir/gradle/bwc-test.gradle"

for (Version bwcVersion : bwcVersions.wireCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
/*
* The goal here is to:
* <ul>
Expand Down
2 changes: 1 addition & 1 deletion qa/verify-version-constants/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ apply plugin: 'elasticsearch.testclusters'
apply plugin: 'elasticsearch.standalone-test'
apply from : "$rootDir/gradle/bwc-test.gradle"

for (Version bwcVersion : bwcVersions.indexCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.indexCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down
7 changes: 4 additions & 3 deletions test/framework/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import org.elasticsearch.gradle.info.BuildParams;

dependencies {
compile project(":client:rest")
Expand Down Expand Up @@ -60,9 +61,9 @@ thirdPartyAudit.ignoreMissingClasses(
)

test {
systemProperty 'tests.gradle_index_compat_versions', bwcVersions.indexCompatible.join(',')
systemProperty 'tests.gradle_wire_compat_versions', bwcVersions.wireCompatible.join(',')
systemProperty 'tests.gradle_unreleased_versions', bwcVersions.unreleased.join(',')
systemProperty 'tests.gradle_index_compat_versions', BuildParams.bwcVersions.indexCompatible.join(',')
systemProperty 'tests.gradle_wire_compat_versions', BuildParams.bwcVersions.wireCompatible.join(',')
systemProperty 'tests.gradle_unreleased_versions', BuildParams.bwcVersions.unreleased.join(',')
}

task integTest(type: Test) {
Expand Down
3 changes: 2 additions & 1 deletion x-pack/qa/full-cluster-restart/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.elasticsearch.gradle.Version
import org.elasticsearch.gradle.info.BuildParams
import org.elasticsearch.gradle.testclusters.RestTestRunnerTask

apply plugin: 'elasticsearch.testclusters'
Expand Down Expand Up @@ -33,7 +34,7 @@ tasks.register("copyTestNodeKeyMaterial", Copy) {
into outputDir
}

for (Version bwcVersion : bwcVersions.indexCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.indexCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down
3 changes: 2 additions & 1 deletion x-pack/qa/rolling-upgrade-basic/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.elasticsearch.gradle.Version
import org.elasticsearch.gradle.info.BuildParams
import org.elasticsearch.gradle.testclusters.RestTestRunnerTask

apply plugin: 'elasticsearch.testclusters'
Expand All @@ -9,7 +10,7 @@ dependencies {
testCompile project(':x-pack:qa')
}

for (Version bwcVersion : bwcVersions.wireCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down
3 changes: 2 additions & 1 deletion x-pack/qa/rolling-upgrade-multi-cluster/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.elasticsearch.gradle.Version
import org.elasticsearch.gradle.info.BuildParams
import org.elasticsearch.gradle.testclusters.RestTestRunnerTask

apply plugin: 'elasticsearch.testclusters'
Expand All @@ -9,7 +10,7 @@ dependencies {
testCompile project(':x-pack:qa')
}

for (Version bwcVersion : bwcVersions.wireCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down
3 changes: 2 additions & 1 deletion x-pack/qa/rolling-upgrade/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.elasticsearch.gradle.Version
import org.elasticsearch.gradle.info.BuildParams
import org.elasticsearch.gradle.testclusters.RestTestRunnerTask

apply plugin: 'elasticsearch.testclusters'
Expand Down Expand Up @@ -29,7 +30,7 @@ task copyTestNodeKeyMaterial(type: Copy) {
into outputDir
}

for (Version bwcVersion : bwcVersions.wireCompatible) {
for (Version bwcVersion : BuildParams.bwcVersions.wireCompatible) {
String baseName = "v${bwcVersion}"

testClusters {
Expand Down