Skip to content

Commit 8a85b2e

Browse files
authored
Remove build qualifier from server's Version (#35172)
With this change, `Version` no longer carries information about the qualifier, we still need a way to show the "display version" that does have both qualifier and snapshot. This is now stored by the build and red from `META-INF`.
1 parent a467a81 commit 8a85b2e

File tree

95 files changed

+371
-304
lines changed

Some content is hidden

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

95 files changed

+371
-304
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ class BuildPlugin implements Plugin<Project> {
699699
// this doFirst is added before the info plugin, therefore it will run
700700
// after the doFirst added by the info plugin, and we can override attributes
701701
jarTask.manifest.attributes(
702-
'X-Compile-Elasticsearch-Version': VersionProperties.elasticsearch.replace("-SNAPSHOT", ""),
702+
'X-Compile-Elasticsearch-Version': VersionProperties.elasticsearch,
703703
'X-Compile-Lucene-Version': VersionProperties.lucene,
704704
'X-Compile-Elasticsearch-Snapshot': VersionProperties.isElasticsearchSnapshot(),
705705
'Build-Date': ZonedDateTime.now(ZoneOffset.UTC),

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.gradle.doc
2020

21+
import org.elasticsearch.gradle.Version
2122
import org.elasticsearch.gradle.VersionProperties
2223
import org.elasticsearch.gradle.test.RestTestPlugin
2324
import org.gradle.api.Project
@@ -37,12 +38,12 @@ public class DocsTestPlugin extends RestTestPlugin {
3738
// Docs are published separately so no need to assemble
3839
project.tasks.assemble.enabled = false
3940
Map<String, String> defaultSubstitutions = [
40-
/* These match up with the asciidoc syntax for substitutions but
41-
* the values may differ. In particular {version} needs to resolve
42-
* to the version being built for testing but needs to resolve to
43-
* the last released version for docs. */
44-
'\\{version\\}':
45-
VersionProperties.elasticsearch.replace('-SNAPSHOT', ''),
41+
/* These match up with the asciidoc syntax for substitutions but
42+
* the values may differ. In particular {version} needs to resolve
43+
* to the version being built for testing but needs to resolve to
44+
* the last released version for docs. */
45+
'\\{version\\}': Version.fromString(VersionProperties.elasticsearch).toString(),
46+
'\\{qualified_version\\}': VersionProperties.elasticsearch,
4647
'\\{lucene_version\\}' : VersionProperties.lucene.replaceAll('-snapshot-\\w+$', ''),
4748
'\\{build_flavor\\}' :
4849
project.integTestCluster.distribution.startsWith('oss-') ? 'oss' : 'default',

buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginPropertiesTask.groovy

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.gradle.plugin
2020

21+
import org.elasticsearch.gradle.Version
2122
import org.elasticsearch.gradle.VersionProperties
2223
import org.gradle.api.InvalidUserDataException
2324
import org.gradle.api.Task
@@ -66,17 +67,11 @@ class PluginPropertiesTask extends Copy {
6667
}
6768

6869
Map<String, String> generateSubstitutions() {
69-
def stringSnap = { version ->
70-
if (version.endsWith("-SNAPSHOT")) {
71-
return version.substring(0, version.length() - 9)
72-
}
73-
return version
74-
}
7570
return [
7671
'name': extension.name,
7772
'description': extension.description,
78-
'version': stringSnap(extension.version),
79-
'elasticsearchVersion': stringSnap(VersionProperties.elasticsearch),
73+
'version': extension.version,
74+
'elasticsearchVersion': Version.fromString(VersionProperties.elasticsearch).toString(),
8075
'javaVersion': project.targetCompatibility as String,
8176
'classname': extension.classname,
8277
'extendedPlugins': extension.extendedPlugins.join(','),

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,13 @@ class VagrantTestPlugin implements Plugin<Project> {
278278
}
279279

280280
Task createUpgradeFromFile = project.tasks.create('createUpgradeFromFile', FileContentsTask) {
281+
String version = project.extensions.esvagrant.upgradeFromVersion
282+
if (project.bwcVersions.unreleased.contains(project.extensions.esvagrant.upgradeFromVersion)) {
283+
version += "-SNAPSHOT"
284+
}
281285
dependsOn copyPackagingArchives
282286
file "${archivesDir}/upgrade_from_version"
283-
contents project.extensions.esvagrant.upgradeFromVersion.toString()
287+
contents version
284288
}
285289

286290
Task createUpgradeIsOssFile = project.tasks.create('createUpgradeIsOssFile', FileContentsTask) {

client/rest-high-level/src/test/java/org/elasticsearch/client/PingAndInfoIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ public void testXPackInfo() throws IOException {
8484
assertNotNull(ml.description());
8585
assertTrue(ml.available());
8686
assertTrue(ml.enabled());
87-
assertEquals(mainResponse.getVersion().toString(),
88-
ml.nativeCodeInfo().get("version").toString().replace("-SNAPSHOT", ""));
87+
assertEquals(mainResponse.getBuild().getQualifiedVersion(), ml.nativeCodeInfo().get("version").toString());
8988
}
9089

9190
public void testXPackInfoEmptyRequest() throws IOException {

distribution/tools/plugin-cli/src/main/java/org/elasticsearch/plugins/InstallPluginCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,11 +310,11 @@ private String getElasticUrl(
310310
baseUrl = String.format(Locale.ROOT, "https://artifacts.elastic.co/downloads/elasticsearch-plugins/%s", pluginId);
311311
}
312312
final String platformUrl =
313-
String.format(Locale.ROOT, "%s/%s-%s-%s.zip", baseUrl, pluginId, platform, Version.displayVersion(version, isSnapshot));
313+
String.format(Locale.ROOT, "%s/%s-%s-%s.zip", baseUrl, pluginId, platform, Build.CURRENT.getQualifiedVersion());
314314
if (urlExists(terminal, platformUrl)) {
315315
return platformUrl;
316316
}
317-
return String.format(Locale.ROOT, "%s/%s-%s.zip", baseUrl, pluginId, Version.displayVersion(version, isSnapshot));
317+
return String.format(Locale.ROOT, "%s/%s-%s.zip", baseUrl, pluginId, Build.CURRENT.getQualifiedVersion());
318318
}
319319

320320
private String nonReleaseUrl(final String hostname, final Version version, final String stagingHash, final String pluginId) {

distribution/tools/plugin-cli/src/test/java/org/elasticsearch/plugins/InstallPluginCommandTests.java

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -936,7 +936,8 @@ public void assertInstallPluginFromUrl(
936936
}
937937

938938
public void testOfficialPlugin() throws Exception {
939-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
939+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
940+
Build.CURRENT.getQualifiedVersion() + ".zip";
940941
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, null, false);
941942
}
942943

@@ -945,7 +946,7 @@ public void testOfficialPluginSnapshot() throws Exception {
945946
Locale.ROOT,
946947
"https://snapshots.elastic.co/%s-abc123/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-%s.zip",
947948
Version.CURRENT,
948-
Version.displayVersion(Version.CURRENT, true));
949+
Build.CURRENT.getQualifiedVersion());
949950
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, "abc123", true);
950951
}
951952

@@ -954,7 +955,7 @@ public void testInstallReleaseBuildOfPluginOnSnapshotBuild() {
954955
Locale.ROOT,
955956
"https://snapshots.elastic.co/%s-abc123/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-%s.zip",
956957
Version.CURRENT,
957-
Version.displayVersion(Version.CURRENT, true));
958+
Build.CURRENT.getQualifiedVersion());
958959
// attemping to install a release build of a plugin (no staging ID) on a snapshot build should throw a user exception
959960
final UserException e =
960961
expectThrows(UserException.class, () -> assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, null, true));
@@ -965,13 +966,13 @@ public void testInstallReleaseBuildOfPluginOnSnapshotBuild() {
965966

966967
public void testOfficialPluginStaging() throws Exception {
967968
String url = "https://staging.elastic.co/" + Version.CURRENT + "-abc123/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-"
968-
+ Version.CURRENT + ".zip";
969+
+ Build.CURRENT.getQualifiedVersion() + ".zip";
969970
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, "abc123", false);
970971
}
971972

972973
public void testOfficialPlatformPlugin() throws Exception {
973974
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Platforms.PLATFORM_NAME +
974-
"-" + Version.CURRENT + ".zip";
975+
"-" + Build.CURRENT.getQualifiedVersion() + ".zip";
975976
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, null, false);
976977
}
977978

@@ -981,13 +982,13 @@ public void testOfficialPlatformPluginSnapshot() throws Exception {
981982
"https://snapshots.elastic.co/%s-abc123/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-%s-%s.zip",
982983
Version.CURRENT,
983984
Platforms.PLATFORM_NAME,
984-
Version.displayVersion(Version.CURRENT, true));
985+
Build.CURRENT.getQualifiedVersion());
985986
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, "abc123", true);
986987
}
987988

988989
public void testOfficialPlatformPluginStaging() throws Exception {
989990
String url = "https://staging.elastic.co/" + Version.CURRENT + "-abc123/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-"
990-
+ Platforms.PLATFORM_NAME + "-"+ Version.CURRENT + ".zip";
991+
+ Platforms.PLATFORM_NAME + "-"+ Build.CURRENT.getQualifiedVersion() + ".zip";
991992
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, "abc123", false);
992993
}
993994

@@ -1009,10 +1010,13 @@ public void testMavenSha1Backcompat() throws Exception {
10091010
}
10101011

10111012
public void testOfficialShaMissing() throws Exception {
1012-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
1013+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
1014+
Build.CURRENT.getQualifiedVersion() + ".zip";
10131015
MessageDigest digest = MessageDigest.getInstance("SHA-1");
10141016
UserException e = expectThrows(UserException.class, () ->
1015-
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, null, false, ".sha1", checksum(digest), null, (b, p) -> null));
1017+
assertInstallPluginFromUrl("analysis-icu", "analysis-icu", url, null, false,
1018+
".sha1", checksum(digest), null, (b, p) -> null)
1019+
);
10161020
assertEquals(ExitCodes.IO_ERROR, e.exitCode);
10171021
assertEquals("Plugin checksum missing: " + url + ".sha512", e.getMessage());
10181022
}
@@ -1027,7 +1031,8 @@ public void testMavenShaMissing() throws Exception {
10271031
}
10281032

10291033
public void testInvalidShaFileMissingFilename() throws Exception {
1030-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
1034+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
1035+
Build.CURRENT.getQualifiedVersion() + ".zip";
10311036
MessageDigest digest = MessageDigest.getInstance("SHA-512");
10321037
UserException e = expectThrows(UserException.class,
10331038
() -> assertInstallPluginFromUrl(
@@ -1037,7 +1042,8 @@ public void testInvalidShaFileMissingFilename() throws Exception {
10371042
}
10381043

10391044
public void testInvalidShaFileMismatchFilename() throws Exception {
1040-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
1045+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
1046+
Build.CURRENT.getQualifiedVersion()+ ".zip";
10411047
MessageDigest digest = MessageDigest.getInstance("SHA-512");
10421048
UserException e = expectThrows(UserException.class, () ->
10431049
assertInstallPluginFromUrl(
@@ -1047,15 +1053,16 @@ public void testInvalidShaFileMismatchFilename() throws Exception {
10471053
null,
10481054
false,
10491055
".sha512",
1050-
checksumAndString(digest, " repository-s3-" + Version.CURRENT + ".zip"),
1056+
checksumAndString(digest, " repository-s3-" + Build.CURRENT.getQualifiedVersion() + ".zip"),
10511057
null,
10521058
(b, p) -> null));
10531059
assertEquals(ExitCodes.IO_ERROR, e.exitCode);
10541060
assertThat(e, hasToString(matches("checksum file at \\[.*\\] is not for this plugin")));
10551061
}
10561062

10571063
public void testInvalidShaFileContainingExtraLine() throws Exception {
1058-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
1064+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
1065+
Build.CURRENT.getQualifiedVersion() + ".zip";
10591066
MessageDigest digest = MessageDigest.getInstance("SHA-512");
10601067
UserException e = expectThrows(UserException.class, () ->
10611068
assertInstallPluginFromUrl(
@@ -1065,15 +1072,16 @@ public void testInvalidShaFileContainingExtraLine() throws Exception {
10651072
null,
10661073
false,
10671074
".sha512",
1068-
checksumAndString(digest, " analysis-icu-" + Version.CURRENT + ".zip\nfoobar"),
1075+
checksumAndString(digest, " analysis-icu-" + Build.CURRENT.getQualifiedVersion() + ".zip\nfoobar"),
10691076
null,
10701077
(b, p) -> null));
10711078
assertEquals(ExitCodes.IO_ERROR, e.exitCode);
10721079
assertTrue(e.getMessage(), e.getMessage().startsWith("Invalid checksum file"));
10731080
}
10741081

10751082
public void testSha512Mismatch() throws Exception {
1076-
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" + Version.CURRENT + ".zip";
1083+
String url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-" +
1084+
Build.CURRENT.getQualifiedVersion() + ".zip";
10771085
UserException e = expectThrows(UserException.class, () ->
10781086
assertInstallPluginFromUrl(
10791087
"analysis-icu",
@@ -1082,7 +1090,7 @@ public void testSha512Mismatch() throws Exception {
10821090
null,
10831091
false,
10841092
".sha512",
1085-
bytes -> "foobar analysis-icu-" + Version.CURRENT + ".zip",
1093+
bytes -> "foobar analysis-icu-" + Build.CURRENT.getQualifiedVersion() + ".zip",
10861094
null,
10871095
(b, p) -> null));
10881096
assertEquals(ExitCodes.IO_ERROR, e.exitCode);
@@ -1101,7 +1109,8 @@ public void testSha1Mismatch() throws Exception {
11011109
public void testPublicKeyIdMismatchToExpectedPublicKeyId() throws Exception {
11021110
final String icu = "analysis-icu";
11031111
final String url =
1104-
"https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/" + icu + "-" + Version.CURRENT + ".zip";
1112+
"https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/" + icu + "-" +
1113+
Build.CURRENT.getQualifiedVersion() + ".zip";
11051114
final MessageDigest digest = MessageDigest.getInstance("SHA-512");
11061115
/*
11071116
* To setup a situation where the expected public key ID does not match the public key ID used for signing, we generate a new public
@@ -1124,7 +1133,8 @@ public void testPublicKeyIdMismatchToExpectedPublicKeyId() throws Exception {
11241133
public void testFailedSignatureVerification() throws Exception {
11251134
final String icu = "analysis-icu";
11261135
final String url =
1127-
"https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/" + icu + "-" + Version.CURRENT + ".zip";
1136+
"https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/" + icu + "-" +
1137+
Build.CURRENT.getQualifiedVersion() + ".zip";
11281138
final MessageDigest digest = MessageDigest.getInstance("SHA-512");
11291139
/*
11301140
* To setup a situation where signature verification fails, we will mutate the input byte array by modifying a single byte to some

docs/plugins/discovery-azure-classic.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,7 @@ This command should give you a JSON result:
377377
"build_hash" : "f27399d",
378378
"build_date" : "2016-03-30T09:51:41.449Z",
379379
"build_snapshot" : false,
380+
"build_version" : "{qualified_version}",
380381
"lucene_version" : "{lucene_version}",
381382
"minimum_wire_compatibility_version" : "1.2.3",
382383
"minimum_index_compatibility_version" : "1.2.3"

0 commit comments

Comments
 (0)