Skip to content

Commit 7c36309

Browse files
authored
Remove internal build logic from public build tool plugins (#72470) (7.x backport) (#72832)
back porting #72470 to 7.x Extract usage of internal API from TestClustersPlugin and PluginBuildPlugin and related plugins and build logic This includes a refactoring of ElasticsearchDistribution to handle types better in a way we can differentiate between supported Elasticsearch Distribution types supported in TestCkustersPlugin and types only supported in internal plugins. It also introduces a set of internal versions of public plugins. As part of this we also generate the plugin descriptors now. As a follow up on this we can actually move these public used classes into an extra project (declared as included build) We keep LoggedExec and VersionProperties effectively public And workaround for RestTestBase
1 parent 3c2adab commit 7c36309

File tree

221 files changed

+1190
-856
lines changed

Some content is hidden

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

221 files changed

+1190
-856
lines changed

build.gradle

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import de.thetaphi.forbiddenapis.gradle.ForbiddenApisPlugin
1212
import org.apache.tools.ant.taskdefs.condition.Os
1313
import org.elasticsearch.gradle.internal.BuildPlugin
1414
import org.elasticsearch.gradle.Version
15-
import org.elasticsearch.gradle.internal.VersionProperties
15+
import org.elasticsearch.gradle.VersionProperties
1616
import org.elasticsearch.gradle.internal.info.BuildParams
1717
import org.elasticsearch.gradle.plugin.PluginBuildPlugin
1818
import org.gradle.plugins.ide.eclipse.model.AccessRule
@@ -22,6 +22,9 @@ import org.gradle.util.GradleVersion
2222
import static org.elasticsearch.gradle.util.GradleUtils.maybeConfigure
2323
import org.gradle.plugins.ide.eclipse.model.ProjectDependency
2424
import org.elasticsearch.gradle.testclusters.TestClustersPlugin
25+
import org.elasticsearch.gradle.internal.test.RestTestBasePlugin
26+
import org.elasticsearch.gradle.internal.InternalPluginBuildPlugin
27+
import org.elasticsearch.gradle.internal.InternalTestClustersPlugin
2528

2629
plugins {
2730
id 'lifecycle-base'
@@ -37,7 +40,7 @@ plugins {
3740
id 'elasticsearch.formatting'
3841
id 'elasticsearch.local-distribution'
3942
id 'elasticsearch.fips'
40-
id 'elasticsearch.testclusters'
43+
id 'elasticsearch.internal-testclusters'
4144
id 'elasticsearch.run'
4245
id "com.diffplug.spotless" version "5.12.5" apply false
4346
}
@@ -110,6 +113,19 @@ subprojects {
110113
project.noticeFile = project.rootProject.file('NOTICE.txt')
111114
}
112115

116+
plugins.withType(InternalPluginBuildPlugin).whenPluginAdded {
117+
project.dependencies {
118+
compileOnly project(":server")
119+
testImplementation project(":test:framework")
120+
}
121+
}
122+
123+
// Ultimately the RestTestBase Plugin should apply the InternalTestClusters Plugin itself instead of TestClusters
124+
// but this requires major rework on the func test infrastructure.
125+
// TODO: This will be addressed once we have https://github.com/elastic/elasticsearch/issues/71593 resolved
126+
project.plugins.withType(RestTestBasePlugin) {
127+
project.plugins.apply(InternalTestClustersPlugin)
128+
}
113129
}
114130

115131
/**
@@ -131,7 +147,6 @@ ext.testArtifact = { p, String name = "test" ->
131147
};
132148
}
133149

134-
135150
tasks.register("updateCIBwcVersions") {
136151
doLast {
137152
File yml = file(".ci/bwcVersions")

buildSrc/build.gradle

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,156 @@ gradlePlugin {
4242
// We already configure publication and we don't need or want the one that comes
4343
// with the java-gradle-plugin
4444
automatedPublishing = false
45+
plugins {
46+
build {
47+
id = 'elasticsearch.build'
48+
implementationClass = 'org.elasticsearch.gradle.internal.BuildPlugin'
49+
}
50+
distributionDownload {
51+
id = 'elasticsearch.distribution-download'
52+
implementationClass = 'org.elasticsearch.gradle.DistributionDownloadPlugin'
53+
}
54+
distroTest {
55+
id = 'elasticsearch.distro-test'
56+
implementationClass = 'org.elasticsearch.gradle.internal.test.DistroTestPlugin'
57+
}
58+
dockerSupport {
59+
id = 'elasticsearch.docker-support'
60+
implementationClass = 'org.elasticsearch.gradle.internal.docker.DockerSupportPlugin'
61+
}
62+
docsTest {
63+
id = 'elasticsearch.docs-test'
64+
implementationClass = 'org.elasticsearch.gradle.internal.doc.DocsTestPlugin'
65+
}
66+
esPlugin {
67+
id = 'elasticsearch.esplugin'
68+
implementationClass = 'org.elasticsearch.gradle.plugin.PluginBuildPlugin'
69+
}
70+
globalBuildInfo {
71+
id = 'elasticsearch.global-build-info'
72+
implementationClass = 'org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin'
73+
}
74+
internalAvailablePorts {
75+
id = 'elasticsearch.internal-available-ports'
76+
implementationClass = 'org.elasticsearch.gradle.internal.InternalAvailableTcpPortProviderPlugin'
77+
}
78+
internalClusterTest {
79+
id = 'elasticsearch.internal-cluster-test'
80+
implementationClass = 'org.elasticsearch.gradle.internal.test.InternalClusterTestPlugin'
81+
}
82+
internalDistributionArchiveCheck {
83+
id = 'elasticsearch.internal-distribution-archive-check'
84+
implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionArchiveCheckPlugin'
85+
}
86+
internalDistributionArchiveSetup {
87+
id = 'elasticsearch.internal-distribution-archive-setup'
88+
implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionArchiveSetupPlugin'
89+
}
90+
internalDistributionBwcSetup {
91+
id = 'elasticsearch.internal-distribution-bwc-setup'
92+
implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionBwcSetupPlugin'
93+
}
94+
internalDistributionDownload {
95+
id = 'elasticsearch.internal-distribution-download'
96+
implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionDownloadPlugin'
97+
}
98+
internalLicenseheaders {
99+
id = 'elasticsearch.internal-licenseheaders'
100+
implementationClass = 'org.elasticsearch.gradle.internal.precommit.LicenseHeadersPrecommitPlugin'
101+
}
102+
internalPlugin {
103+
id = 'elasticsearch.internal-es-plugin'
104+
implementationClass = 'org.elasticsearch.gradle.internal.InternalPluginBuildPlugin'
105+
}
106+
internalTestArtifact {
107+
id = 'elasticsearch.internal-test-artifact'
108+
implementationClass = 'org.elasticsearch.gradle.internal.InternalTestArtifactPlugin'
109+
}
110+
internalTestArtifactBase {
111+
id = 'elasticsearch.internal-test-artifact-base'
112+
implementationClass = 'org.elasticsearch.gradle.internal.InternalTestArtifactBasePlugin'
113+
}
114+
internalTestClusters {
115+
id = 'elasticsearch.internal-testclusters'
116+
implementationClass = 'org.elasticsearch.gradle.internal.InternalTestClustersPlugin'
117+
}
118+
internalTestRerun {
119+
id = 'elasticsearch.internal-test-rerun'
120+
implementationClass = 'org.elasticsearch.gradle.internal.test.rerun.TestRerunPlugin'
121+
}
122+
java {
123+
id = 'elasticsearch.java'
124+
implementationClass = 'org.elasticsearch.gradle.internal.ElasticsearchJavaPlugin'
125+
}
126+
javaRestTest {
127+
id = 'elasticsearch.java-rest-test'
128+
implementationClass = 'org.elasticsearch.gradle.internal.test.rest.JavaRestTestPlugin'
129+
}
130+
jdkDownload {
131+
id = 'elasticsearch.jdk-download'
132+
implementationClass = 'org.elasticsearch.gradle.internal.JdkDownloadPlugin'
133+
}
134+
publish {
135+
id = 'elasticsearch.publish'
136+
implementationClass = 'org.elasticsearch.gradle.internal.PublishPlugin'
137+
}
138+
reaper {
139+
id = 'elasticsearch.reaper'
140+
implementationClass = 'org.elasticsearch.gradle.ReaperPlugin'
141+
}
142+
repositories {
143+
id = 'elasticsearch.repositories'
144+
implementationClass = 'org.elasticsearch.gradle.internal.RepositoriesSetupPlugin'
145+
}
146+
restResources {
147+
id = 'elasticsearch.rest-resources'
148+
implementationClass = 'org.elasticsearch.gradle.internal.test.rest.RestResourcesPlugin'
149+
}
150+
restTest {
151+
id = 'elasticsearch.rest-test'
152+
implementationClass = 'org.elasticsearch.gradle.internal.test.RestTestPlugin'
153+
}
154+
standaloneRestTest {
155+
id = 'elasticsearch.standalone-rest-test'
156+
implementationClass = 'org.elasticsearch.gradle.internal.test.StandaloneRestTestPlugin'
157+
}
158+
standaloneTest {
159+
id = 'elasticsearch.standalone-test'
160+
implementationClass = 'org.elasticsearch.gradle.internal.test.StandaloneTestPlugin'
161+
}
162+
testFixtures {
163+
id = 'elasticsearch.test.fixtures'
164+
implementationClass = 'org.elasticsearch.gradle.internal.testfixtures.TestFixturesPlugin'
165+
}
166+
testBase {
167+
id = 'elasticsearch.test-base'
168+
implementationClass = 'org.elasticsearch.gradle.internal.ElasticsearchTestBasePlugin'
169+
}
170+
testWithDependencies {
171+
id = 'elasticsearch.test-with-dependencies'
172+
implementationClass = 'org.elasticsearch.gradle.internal.test.TestWithDependenciesPlugin'
173+
}
174+
testWithSsl {
175+
id = 'elasticsearch.test-with-ssl'
176+
implementationClass = 'org.elasticsearch.gradle.internal.test.TestWithSslPlugin'
177+
}
178+
testclusters {
179+
id = 'elasticsearch.testclusters'
180+
implementationClass = 'org.elasticsearch.gradle.testclusters.TestClustersPlugin'
181+
}
182+
validateRestSpec {
183+
id = 'elasticsearch.validate-rest-spec'
184+
implementationClass = 'org.elasticsearch.gradle.internal.precommit.ValidateRestSpecPlugin'
185+
}
186+
yamlRestCompatTest {
187+
id = 'elasticsearch.yaml-rest-compat-test'
188+
implementationClass = 'org.elasticsearch.gradle.internal.rest.compat.YamlRestCompatTestPlugin'
189+
}
190+
yamlRestTest {
191+
id = 'elasticsearch.yaml-rest-test'
192+
implementationClass = 'org.elasticsearch.gradle.internal.test.rest.YamlRestTestPlugin'
193+
}
194+
}
45195
}
46196
def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) {
47197
outputFile = "${buildDir}/version.properties"

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
package org.elasticsearch.gradle
1010

1111
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
12-
import org.elasticsearch.gradle.internal.VersionProperties
1312
import org.gradle.testkit.runner.TaskOutcome
1413
import spock.lang.Unroll
1514

@@ -18,7 +17,7 @@ import static org.elasticsearch.gradle.fixtures.DistributionDownloadFixture.with
1817
class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest {
1918

2019
@Unroll
21-
def "#distType version can be resolved"() {
20+
def "extracted #distType version can be resolved"() {
2221
given:
2322
buildFile << applyPluginAndSetupDistro(version, platform)
2423

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ class TestClustersPluginFuncTest extends AbstractGradleFuncTest {
136136
description = "test module description"
137137
}
138138
139-
licenseFile = file('license.txt')
140-
noticeFile = file('notice.txt')
141139
version = "1.0"
142140
group = 'org.acme'
143141
"""

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ package org.elasticsearch.gradle.fixtures
1010

1111
import org.elasticsearch.gradle.Architecture
1212
import org.elasticsearch.gradle.ElasticsearchDistribution
13-
import org.elasticsearch.gradle.internal.VersionProperties
13+
import org.elasticsearch.gradle.VersionProperties
1414
import org.gradle.testkit.runner.BuildResult
1515
import org.gradle.testkit.runner.GradleRunner
1616

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
package org.elasticsearch.gradle.internal
1010

11-
11+
import org.elasticsearch.gradle.VersionProperties
1212
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
1313
import org.gradle.testkit.runner.TaskOutcome
1414
import spock.lang.Unroll

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,13 @@
99
package org.elasticsearch.gradle.internal
1010

1111
import org.elasticsearch.gradle.Architecture
12+
import org.elasticsearch.gradle.VersionProperties
1213
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
1314
import org.gradle.testkit.runner.TaskOutcome
1415

1516

1617
class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest {
1718

18-
def "plugin application fails on non internal build"() {
19-
given:
20-
buildFile.text = """
21-
plugins {
22-
id 'elasticsearch.internal-distribution-download'
23-
}
24-
"""
25-
26-
when:
27-
def result = gradleRunner("tasks").buildAndFail()
28-
29-
then:
30-
assertOutputContains(result.output, "Plugin 'elasticsearch.internal-distribution-download' is not supported. " +
31-
"Use 'elasticsearch.distribution-download' plugin instead")
32-
}
33-
3419
def "resolves current version from local build"() {
3520
given:
3621
internalBuild()

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/PublishPluginFuncTest.groovy renamed to buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Side Public License, v 1.
77
*/
88

9-
package org.elasticsearch.gradle
9+
package org.elasticsearch.gradle.internal
1010

1111
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
1212
import org.gradle.testkit.runner.TaskOutcome
@@ -178,7 +178,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
178178
file('notice.txt') << "Notice file"
179179
buildFile << """
180180
plugins {
181-
id 'elasticsearch.esplugin'
181+
id 'elasticsearch.internal-es-plugin'
182182
id 'elasticsearch.publish'
183183
id 'com.github.johnrengelman.shadow'
184184
}
@@ -236,7 +236,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
236236
file('notice.txt') << "Notice file"
237237
buildFile << """
238238
plugins {
239-
id 'elasticsearch.esplugin'
239+
id 'elasticsearch.internal-es-plugin'
240240
id 'elasticsearch.publish'
241241
}
242242

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/RestResourcesPluginFuncTest.groovy renamed to buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Side Public License, v 1.
77
*/
88

9-
package org.elasticsearch.gradle
9+
package org.elasticsearch.gradle.internal.test.rest
1010

1111
import org.elasticsearch.gradle.fixtures.AbstractRestResourcesFuncTest
1212
import org.gradle.testkit.runner.TaskOutcome

buildSrc/src/integTest/groovy/org/elasticsearch/gradle/YamlRestTestPluginFuncTest.groovy renamed to buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Side Public License, v 1.
77
*/
88

9-
package org.elasticsearch.gradle
9+
package org.elasticsearch.gradle.internal.test.rest
1010

1111
import org.elasticsearch.gradle.fixtures.AbstractRestResourcesFuncTest
1212
import org.gradle.testkit.runner.TaskOutcome

buildSrc/src/main/groovy/elasticsearch.run.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.elasticsearch.gradle.testclusters.RunTask
1010

1111
// gradle has an open issue of failing applying plugins in
1212
// precompiled script plugins (see https://github.com/gradle/gradle/issues/17004)
13-
// apply plugin: 'elasticsearch.testclusters'
13+
// apply plugin: 'elasticsearch.internal-testclusters'
1414

1515
testClusters {
1616
runTask {

buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import org.elasticsearch.gradle.Architecture
1010
import org.elasticsearch.gradle.OS
11-
import org.elasticsearch.gradle.internal.VersionProperties
11+
import org.elasticsearch.gradle.VersionProperties
1212
import org.elasticsearch.gradle.internal.info.BuildParams
1313

1414
// gradle has an open issue of failing applying plugins in

buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package org.elasticsearch.gradle.internal
1010

1111
import org.apache.tools.ant.taskdefs.condition.Os
1212
import org.elasticsearch.gradle.FixtureStop
13+
import org.elasticsearch.gradle.LoggedExec
1314
import org.elasticsearch.gradle.internal.test.AntFixture
1415
import org.gradle.api.file.FileSystemOperations
1516
import org.gradle.api.tasks.Internal

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.doc
99

1010
import org.elasticsearch.gradle.OS
1111
import org.elasticsearch.gradle.Version
12-
import org.elasticsearch.gradle.internal.VersionProperties
12+
import org.elasticsearch.gradle.VersionProperties
1313
import org.gradle.api.Plugin
1414
import org.gradle.api.Project
1515
import org.gradle.api.file.Directory
@@ -23,7 +23,7 @@ class DocsTestPlugin implements Plugin<Project> {
2323

2424
@Override
2525
void apply(Project project) {
26-
project.pluginManager.apply('elasticsearch.testclusters')
26+
project.pluginManager.apply('elasticsearch.internal-testclusters')
2727
project.pluginManager.apply('elasticsearch.standalone-rest-test')
2828
project.pluginManager.apply('elasticsearch.rest-test')
2929

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import org.apache.tools.ant.DefaultLogger
1111
import org.apache.tools.ant.taskdefs.condition.Os
1212
import org.elasticsearch.gradle.internal.BuildPlugin
1313
import org.elasticsearch.gradle.internal.BwcVersions
14-
import org.elasticsearch.gradle.internal.LoggedExec
14+
import org.elasticsearch.gradle.LoggedExec
1515
import org.elasticsearch.gradle.Version
16-
import org.elasticsearch.gradle.internal.VersionProperties
16+
import org.elasticsearch.gradle.VersionProperties
1717
import org.elasticsearch.gradle.internal.test.Fixture
1818
import org.elasticsearch.gradle.internal.info.BuildParams
1919
import org.elasticsearch.gradle.plugin.PluginBuildPlugin

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.sun.jna.Native
1212
import com.sun.jna.WString
1313
import org.apache.tools.ant.taskdefs.condition.Os
1414
import org.elasticsearch.gradle.Version
15-
import org.elasticsearch.gradle.internal.VersionProperties
15+
import org.elasticsearch.gradle.VersionProperties
1616
import org.gradle.api.Project
1717

1818
import java.nio.file.Files

0 commit comments

Comments
 (0)