From ea641cd359e6e1b8459747d912bf9db0d0b51f32 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Mon, 7 Jun 2021 15:56:21 +0200 Subject: [PATCH] Move public build api into included build #72861 (7.x backport) (#73715) backport of #72861 to 7.x branch This moves the public build api and plugins into a separete included build called 'build-tools' and we remove the duplication of included buildSrc twice (as build-tools). The elasticsearch internal build logic is kept in build-tools-internal as included build which allows us better handling of this project that its just being an buildSrc project (e.g. we can reference tasks directly from the root build etc.) Convention logic applied to both projects will live in a new build-conventions project. --- build-conventions/build.gradle | 52 +++ build-conventions/settings.gradle | 8 + .../BasicBuildToolConventionsPlugin.java | 34 ++ .../gradle/internal/conventions/GUtils.java | 18 + .../internal/conventions/GitInfoPlugin.java | 59 +++ .../internal/conventions/LicensingPlugin.java | 61 +++ .../internal/conventions}/PublishPlugin.java | 87 +++-- .../conventions/VersionPropertiesLoader.java | 65 ++++ .../internal/conventions/info/GitInfo.java | 186 +++++++++ .../conventions/info/ParallelDetector.java | 83 ++++ .../LicenseHeadersPrecommitPlugin.java | 10 +- .../precommit/LicenseHeadersTask.java | 2 +- .../PomValidationPrecommitPlugin.java | 7 +- .../precommit/PomValidationTask.java | 4 +- .../precommit/PrecommitPlugin.java | 9 +- .../conventions}/precommit/PrecommitTask.java | 2 +- .../precommit/PrecommitTaskPlugin.java | 17 +- .../internal/conventions}/util/FileUtils.java | 0 .../internal/conventions}/util/Util.java | 68 +--- {buildSrc => build-tools-internal}/.gitignore | 0 .../build.gradle | 274 ++----------- build-tools-internal/elastic.importorder | 7 + .../formatterConfig.xml | 0 build-tools-internal/settings.gradle | 2 + .../AbstractGitAwareGradleFuncTest.groovy | 1 + .../AbstractRestResourcesFuncTest.groovy | 0 .../ElasticsearchJavaPluginFuncTest.groovy | 0 ...ElasticsearchTestBasePluginFuncTest.groovy | 0 .../InternalBwcGitPluginFuncTest.groovy | 0 ...tributionArchiveCheckPluginFuncTest.groovy | 0 ...tributionArchiveSetupPluginFuncTest.groovy | 0 ...lDistributionBwcSetupPluginFuncTest.groovy | 0 ...lDistributionDownloadPluginFuncTest.groovy | 0 .../internal/JdkDownloadPluginFuncTest.groovy | 0 .../internal/PublishPluginFuncTest.groovy | 255 ++++++++---- ...censeHeadersPrecommitPluginFuncTest.groovy | 0 .../InternalTestRerunPluginFuncTest.groovy | 0 .../rest/RestResourcesPluginFuncTest.groovy | 0 .../YamlRestCompatTestPluginFuncTest.groovy | 368 ++++++++++++++++++ .../rest/YamlRestTestPluginFuncTest.groovy | 0 .../elasticsearch/gradle/ReaperPluginIT.java | 0 .../gradle/internal/BuildPluginIT.java | 3 - ...portElasticsearchBuildResourcesTaskIT.java | 0 .../internal/SymbolicLinkPreservingTarIT.java | 0 .../internal/test/TestClasspathUtils.java | 82 ++++ .../jarhell}/TestingConventionsTasksIT.java | 2 +- .../jarhell}/ThirdPartyAuditTaskIT.java | 96 ++--- ...ake_elasticsearch-with-added-config.tar.gz | Bin .../fake_elasticsearch-with-added-jar.tar.gz | Bin .../gradle/fake_elasticsearch.tar.gz | Bin .../gradle/fake_elasticsearch.zip | Bin .../internal/fake_adoptopenjdk_linux.tar.gz | Bin .../internal/fake_adoptopenjdk_osx.tar.gz | Bin .../internal/fake_adoptopenjdk_windows.zip | Bin .../fake_azuljdk_linux_aarch64.tar.gz | Bin .../internal/fake_azuljdk_osx_aarch64.tar.gz | Bin .../internal/fake_git/remote/build.gradle | 0 .../src/main/resources/minimumCompilerVersion | 0 .../remote/distribution/archives/build.gradle | 0 .../archives/darwin-aarch64-tar/build.gradle | 0 .../archives/darwin-tar/build.gradle | 0 .../archives/linux-aarch64-tar/build.gradle | 0 .../oss-darwin-aarch64-tar/build.gradle | 0 .../archives/oss-darwin-tar/build.gradle | 0 .../oss-linux-aarch64-tar/build.gradle | 0 .../distribution/bwc/bugfix/build.gradle | 0 .../distribution/bwc/major/build.gradle | 0 .../distribution/bwc/minor/build.gradle | 0 .../distribution/bwc/staged/build.gradle | 0 .../fake_git/remote/gradle.properties | 0 .../internal/fake_git/remote/settings.gradle | 0 .../gradle/internal/fake_openjdk_linux.tar.gz | Bin .../gradle/internal/fake_openjdk_osx.tar.gz | Bin .../gradle/internal/fake_openjdk_windows.zip | Bin .../elasticsearch.build-complete.gradle | 0 .../groovy/elasticsearch.build-scan.gradle | 0 .../main/groovy/elasticsearch.bwc-test.gradle | 0 .../src/main/groovy/elasticsearch.fips.gradle | 0 ...lasticsearch.forbidden-dependencies.gradle | 0 .../groovy/elasticsearch.formatting.gradle | 2 +- .../src/main/groovy/elasticsearch.ide.gradle | 17 +- .../elasticsearch.local-distribution.gradle | 0 .../src/main/groovy/elasticsearch.run.gradle | 0 ...elasticsearch.runtime-jdk-provision.gradle | 4 +- .../gradle/internal/AntFixtureStop.groovy | 1 - .../gradle/internal/AntTask.groovy | 0 .../gradle/internal/doc/DocsTestPlugin.groovy | 0 .../doc/RestTestsFromSnippetsTask.groovy | 0 .../gradle/internal/doc/SnippetsTask.groovy | 0 .../gradle/internal/test/AntFixture.groovy | 0 .../gradle/test/ClusterConfiguration.groovy | 0 .../gradle/test/ClusterFormationTasks.groovy | 0 .../elasticsearch/gradle/test/NodeInfo.groovy | 0 .../gradle/internal/BuildPlugin.java | 0 .../gradle/internal/BwcGitExtension.java | 0 .../gradle/internal/BwcSetupExtension.java | 0 .../gradle/internal/BwcVersions.java | 0 .../gradle/internal/ConcatFilesTask.java | 0 .../internal/DependenciesInfoPlugin.java | 0 .../gradle/internal/DependenciesInfoTask.java | 0 .../gradle/internal/DistributionArchive.java | 0 .../DistributionArchiveCheckExtension.java | 0 .../gradle/internal/DockerBase.java | 0 .../internal/ElasticsearchJavaPlugin.java | 6 +- .../internal/ElasticsearchTestBasePlugin.java | 6 +- .../gradle/internal/EmptyDirTask.java | 0 ...ExportElasticsearchBuildResourcesTask.java | 0 .../gradle/internal}/FixtureStop.java | 2 +- ...nternalAvailableTcpPortProviderPlugin.java | 0 .../gradle/internal/InternalBwcGitPlugin.java | 4 +- ...nternalDistributionArchiveCheckPlugin.java | 7 +- ...nternalDistributionArchiveSetupPlugin.java | 2 +- .../InternalDistributionBwcSetupPlugin.java | 0 .../InternalDistributionDownloadPlugin.java | 0 .../gradle/internal/InternalPlugin.java | 0 .../internal/InternalPluginBuildPlugin.java | 18 +- .../gradle/internal/InternalReaperPlugin.java | 0 .../InternalTestArtifactBasePlugin.java | 0 .../InternalTestArtifactExtension.java | 0 .../internal/InternalTestArtifactPlugin.java | 0 .../internal/InternalTestClustersPlugin.java | 0 .../gradle/internal/JavaClassPublicifier.java | 0 .../gradle/internal/LoggingOutputStream.java | 0 .../gradle/internal/MavenFilteringHack.java | 0 .../gradle/internal/NoticeTask.java | 0 .../internal/RepositoriesSetupPlugin.java | 21 - .../internal/ResolveAllDependencies.java | 0 .../internal/SymbolicLinkPreservingTar.java | 0 .../checkstyle/MissingJavadocTypeCheck.java | 0 .../checkstyle/SnippetLengthCheck.java | 0 .../DebElasticsearchDistributionType.java | 0 .../DockerElasticsearchDistributionType.java | 0 ...IronBankElasticsearchDistributionType.java | 0 ...ockerUbiElasticsearchDistributionType.java | 0 ...nternalElasticsearchDistributionTypes.java | 0 .../RpmElasticsearchDistributionType.java | 0 .../internal/docker/DockerBuildTask.java | 0 .../internal/docker/DockerSupportPlugin.java | 0 .../internal/docker/DockerSupportService.java | 0 .../gradle/internal/docker/ShellRetry.java | 0 .../docker/TransformLog4jConfigFilter.java | 0 .../gradle/internal/info/BuildParams.java | 0 .../internal/info/GlobalBuildInfoPlugin.java | 169 ++------ .../gradle/internal/info/JavaHome.java | 0 .../precommit/CheckstylePrecommitPlugin.java | 17 +- .../DependencyLicensesPrecommitPlugin.java | 2 +- .../precommit/DependencyLicensesTask.java | 0 .../FilePermissionsPrecommitPlugin.java | 2 +- .../precommit/FilePermissionsTask.java | 0 .../ForbiddenApisPrecommitPlugin.java | 2 +- .../ForbiddenPatternsPrecommitPlugin.java | 2 +- .../precommit/ForbiddenPatternsTask.java | 0 .../precommit/InternalPrecommitTasks.java | 11 +- .../precommit/JarHellPrecommitPlugin.java | 33 ++ .../internal/precommit/LicenseAnalyzer.java | 0 .../precommit/LoggerUsagePrecommitPlugin.java | 2 +- .../internal/precommit/LoggerUsageTask.java | 2 +- .../precommit/TestingConventionRule.java | 0 .../TestingConventionsPrecommitPlugin.java | 2 +- .../precommit/TestingConventionsTasks.java | 2 +- .../ThirdPartyAuditPrecommitPlugin.java | 2 +- .../precommit/ThirdPartyAuditTask.java | 0 .../internal/precommit/UpdateShasTask.java | 0 .../ValidateJsonAgainstSchemaTask.java | 0 .../precommit/ValidateJsonNoKeywordsTask.java | 0 .../precommit/ValidateRestSpecPlugin.java | 2 +- .../internal/test/DistroTestPlugin.java | 9 +- .../test/ErrorReportingTestListener.java | 0 .../gradle/internal/test/Fixture.java | 0 .../internal/test/GradleDistroTestTask.java | 0 .../test/InternalClusterTestPlugin.java | 0 .../internal/test/RestIntegTestTask.java | 0 .../internal/test/RestTestBasePlugin.java | 2 +- .../gradle/internal/test/RestTestPlugin.java | 0 .../SimpleCommandLineArgumentProvider.java | 0 .../test/StandaloneRestTestPlugin.java | 3 +- .../internal/test/StandaloneTestPlugin.java | 0 ...emPropertyCommandLineArgumentProvider.java | 0 .../test/TestWithDependenciesPlugin.java | 0 .../internal/test/TestWithSslPlugin.java | 2 +- .../internal/test/rerun/TestRerunPlugin.java | 0 .../test/rerun/TestRerunTaskExtension.java | 0 .../test/rerun/TestTaskConfigurer.java | 0 .../rerun/executer/RerunTestExecuter.java | 0 .../executer/RerunTestResultProcessor.java | 0 .../internal/test/rest/CopyRestApiTask.java | 0 .../internal/test/rest/CopyRestTestsTask.java | 0 .../test/rest/JavaRestTestPlugin.java | 0 .../test/rest/RestResourcesExtension.java | 0 .../test/rest/RestResourcesPlugin.java | 0 .../internal/test/rest/RestTestUtil.java | 0 .../test/rest/YamlRestTestPlugin.java | 0 .../test/rest/transform/InjectHeaders.java | 2 +- .../rest/transform/RestTestTransform.java | 0 .../RestTestTransformByObjectKey.java | 0 .../RestTestTransformGlobalSetup.java | 0 .../RestTestTransformGlobalTeardown.java | 0 .../rest/transform/RestTestTransformer.java | 0 .../testfixtures/DockerComposeThrottle.java | 0 .../testfixtures/TestFixtureExtension.java | 0 .../testfixtures/TestFixturesPlugin.java | 0 .../gradle/internal/util/JavaUtil.java | 0 .../util/ports/AvailablePortAllocator.java | 0 .../util/ports/DefaultPortDetector.java | 0 .../DefaultReservedPortRangeFactory.java | 0 .../internal/util/ports/PortDetector.java | 0 .../util/ports/ReservedPortRange.java | 0 .../util/ports/ReservedPortRangeFactory.java | 0 .../internal/vagrant/VagrantBasePlugin.java | 0 .../internal/vagrant/VagrantExtension.java | 0 .../internal/vagrant/VagrantMachine.java | 2 +- .../vagrant/VagrantProgressLogger.java | 0 .../internal/vagrant/VagrantShellTask.java | 0 .../gradle/test/JNAKernel32Library.java | 0 .../src/main/resources/buildSrc.marker | 0 .../src/main/resources/cacerts.bcfks | Bin .../src/main/resources/checkstyle.xml | 0 .../resources/checkstyle_ide_fragment.xml | 0 .../resources/checkstyle_suppressions.xml | 2 +- .../src/main/resources/deb/README | 0 .../src/main/resources/deb/conffiles.ftl | 0 .../src/main/resources/deb/postinst.ftl | 0 .../src/main/resources/deb/preinst.ftl | 0 .../org.eclipse.core.resources.prefs | 0 .../org.eclipse.jdt.core.prefs | 0 .../eclipse.settings/org.eclipse.jdt.ui.prefs | 0 .../main/resources/elasticsearch.properties | 0 .../src/main/resources/fips_java.policy | 0 .../src/main/resources/fips_java.security | 0 .../main/resources/fips_java_bcjsse_11.policy | 18 + .../resources/fips_java_bcjsse_11.security | 53 +++ .../main/resources/fips_java_bcjsse_8.policy | 0 .../resources/fips_java_bcjsse_8.security | 0 .../main/resources/fips_java_oracle.security | 0 .../main/resources/fips_java_sunjsse.policy | 0 .../main/resources/fips_java_sunjsse.security | 0 .../resources/forbidden/es-all-signatures.txt | 0 .../forbidden/es-server-signatures.txt | 0 .../forbidden/es-test-signatures.txt | 0 .../resources/forbidden/http-signatures.txt | 0 .../resources/forbidden/jdk-signatures.txt | 0 .../forbidden/snakeyaml-signatures.txt | 0 .../resources/forbidden/third-party-audit.txt | 0 .../elastic-license-2.0-header.txt | 0 .../sspl+elastic-license-header.txt | 0 .../src/main/resources/minimumCompilerVersion | 0 .../src/main/resources/minimumGradleVersion | 0 .../src/main/resources/minimumRuntimeVersion | 0 .../src/main/resources/test/ssl/README.md | 0 .../main/resources/test/ssl/test-client.crt | Bin .../main/resources/test/ssl/test-client.jks | Bin .../main/resources/test/ssl/test-client.key | 0 .../src/main/resources/test/ssl/test-node.crt | Bin .../src/main/resources/test/ssl/test-node.jks | Bin .../src/main/resources/test/ssl/test-node.key | 0 .../RerunTestResultProcessorTestSpec.groovy | 0 ...stractDistributionDownloadPluginTests.java | 0 .../DistributionDownloadPluginTests.java | 0 .../elasticsearch/gradle/VersionTests.java | 0 .../gradle/internal/BwcVersionsTests.java | 0 .../gradle/internal/ConcatFilesTaskTests.java | 0 .../gradle/internal/EmptyDirTaskTests.java | 0 ...ternalDistributionDownloadPluginTests.java | 0 .../checkstyle/SnipptLengthCheckTests.java | 0 .../doc/RestTestFromSnippetsTaskTests.java | 0 .../internal/doc/SnippetsTaskTests.java | 0 .../docker/DockerSupportServiceTests.java | 0 .../TransformLog4jConfigFilterTests.java | 0 .../DependencyLicensesTaskTests.java | 0 .../precommit/FilePermissionsTaskTests.java | 0 .../precommit/ForbiddenPatternsTaskTests.java | 0 .../precommit/UpdateShasTaskTests.java | 0 .../rest/transform/InjectHeaderTests.java | 54 +-- .../PluginPropertiesExtensionTests.java | 0 .../WaitForHttpResourceTests.java | 0 .../src/test/resources/ca.p12 | Bin .../src/test/resources/ca.pem | 0 .../resources/rest/header_inject/no_setup.yml | 0 .../rest/header_inject/with_features.yml | 0 .../rest/header_inject/with_headers.yml | 0 .../rest/header_inject/with_setup.yml | 0 .../rest/header_inject/with_skip.yml | 0 .../build.gradle | 0 .../gradle.properties | 0 .../settings.gradle | 0 .../src/testKit/elasticsearch.build/LICENSE | 0 .../src/testKit/elasticsearch.build/NOTICE | 0 .../testKit/elasticsearch.build/build.gradle | 0 .../elasticsearch.build/gradle.properties | 0 .../libs/elasticsearch-core/build.gradle | 0 .../licenses/hamcrest-core-1.3.jar.sha1 | 0 .../licenses/hamcrest-core-LICENSE.txt | 0 .../licenses/hamcrest-core-NOTICE.txt | 0 .../licenses/junit-4.12.jar.sha1 | 0 .../licenses/junit-LICENSE.txt | 0 .../licenses/junit-NOTICE.txt | 0 .../elasticsearch.build/settings.gradle | 0 .../java/org/elasticsearch/SampleClass.java | 0 .../test/logger-usage/build.gradle | 0 .../src/testKit/reaper/build.gradle | 0 .../src/testKit/reaper/gradle.properties | 0 .../src/testKit/reaper/settings.gradle | 0 .../symbolic-link-preserving-tar/build.gradle | 0 .../settings.gradle | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../testKit/testingConventions/build.gradle | 0 .../empty_test_task/.gitignore | 0 ...ooksLikeATestWithoutNamingConvention1.java | 0 ...ooksLikeATestWithoutNamingConvention2.java | 0 ...ooksLikeATestWithoutNamingConvention3.java | 0 .../testkit/LooksLikeTestsButAbstract.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/NastyInnerClasses.java | 0 .../gradle/testkit/AbstractIT.java | 0 .../gradle/testkit/Integration.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../testkit/NamingConventionMissmatchIT.java | 0 .../NamingConventionMissmatchTests.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../elasticsearch/gradle/testkit/Unit.java | 0 .../testingConventions/settings.gradle | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/Integration.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../elasticsearch/gradle/testkit/Unit.java | 0 .../src/testKit/thirdPartyAudit/build.gradle | 0 .../testKit/thirdPartyAudit/gradle.properties | 0 .../thirdPartyAudit/sample_jars/build.gradle | 0 .../sample_jars/src/main/java/String.java | 0 .../sample_jars/src/main/java/TestingIO.java | 0 .../src/main/java/TestingLog4j.java | 0 .../testKit/thirdPartyAudit/settings.gradle | 0 .../third-party-audit-absurd.txt | 0 .../third-party-audit-empty.txt | 0 build-tools-internal/version.properties | 55 +++ build-tools/build.gradle | 220 +++++++++++ {buildSrc => build-tools}/reaper/build.gradle | 4 +- .../elasticsearch/gradle/reaper/Reaper.java | 0 build-tools/settings.gradle | 8 + .../DistributionDownloadPluginFuncTest.groovy | 0 .../gradle/TestClustersPluginFuncTest.groovy | 0 .../elasticsearch/gradle/ReaperPluginIT.java | 25 ++ ...ake_elasticsearch-with-added-config.tar.gz | Bin 0 -> 1236 bytes .../fake_elasticsearch-with-added-jar.tar.gz | Bin 0 -> 1674 bytes .../gradle/fake_elasticsearch.tar.gz | Bin 0 -> 1174 bytes .../gradle/fake_elasticsearch.zip | Bin 0 -> 568 bytes .../AbstractLazyPropertyCollection.java | 0 .../elasticsearch/gradle/Architecture.java | 0 .../gradle/DistributionDependency.java | 0 .../gradle/DistributionDownloadPlugin.java | 0 .../gradle/DistributionResolution.java | 0 .../gradle/ElasticsearchDistribution.java | 0 .../gradle/ElasticsearchDistributionType.java | 0 .../elasticsearch/gradle/FileSupplier.java | 0 .../gradle/FileSystemOperationsAware.java | 0 .../java/org/elasticsearch/gradle}/Jdk.java | 2 +- .../gradle}/JdkDownloadPlugin.java | 4 +- .../gradle/LazyFileOutputStream.java | 0 .../gradle/LazyPropertyList.java | 0 .../elasticsearch/gradle/LazyPropertyMap.java | 0 .../org/elasticsearch/gradle/LoggedExec.java | 0 .../java/org/elasticsearch/gradle/OS.java | 0 .../gradle/PropertyNormalization.java | 0 .../elasticsearch/gradle/ReaperPlugin.java | 5 +- .../elasticsearch/gradle/ReaperService.java | 1 + .../org/elasticsearch/gradle/Version.java | 0 .../gradle/VersionProperties.java | 0 .../CompileOnlyResolvePlugin.java | 0 .../ArchiveElasticsearchDistributionType.java | 0 .../ElasticsearchDistributionTypes.java | 0 ...gTestZipElasticsearchDistributionType.java | 0 .../gradle/jarhell/JarHellPlugin.java | 50 +++ .../gradle/jarhell}/JarHellTask.java | 27 +- .../gradle/plugin/PluginBuildPlugin.java | 32 +- .../plugin/PluginPropertiesExtension.java | 0 .../gradle/plugin/PluginType.java | 0 .../testclusters/DefaultTestClustersTask.java | 0 .../testclusters/ElasticsearchCluster.java | 2 +- .../testclusters/ElasticsearchNode.java | 2 +- .../gradle/testclusters/RunTask.java | 0 .../StandaloneRestIntegTestTask.java | 0 .../TestClusterConfiguration.java | 0 .../testclusters/TestClustersAware.java | 2 +- .../testclusters/TestClustersException.java | 0 .../testclusters/TestClustersPlugin.java | 4 +- .../testclusters/TestClustersRegistry.java | 0 .../testclusters/TestClustersThrottle.java | 0 .../gradle/testclusters/TestDistribution.java | 0 .../testclusters/WaitForHttpResource.java | 0 .../SymbolicLinkPreservingUntarTransform.java | 0 .../gradle/transform/UnpackTransform.java | 0 .../gradle/transform/UnzipTransform.java | 0 .../elasticsearch/gradle/util/FileUtils.java | 92 +++++ .../gradle/util/GradleUtils.java | 4 +- .../org/elasticsearch/gradle/util/Pair.java | 0 .../gradle/util/PermissionUtils.java | 0 .../resources/plugin-descriptor.properties | 63 +++ .../DistributionDownloadPluginTests.java | 170 ++++++++ .../gradle}/JdkDownloadPluginTests.java | 2 +- .../elasticsearch/gradle/VersionTests.java | 115 ++++++ .../PluginPropertiesExtensionTests.java | 47 +++ .../WaitForHttpResourceTests.java | 49 +++ build-tools/src/test/resources/ca.p12 | Bin 0 -> 1130 bytes build-tools/src/test/resources/ca.pem | 25 ++ .../fixtures/AbstractGradleFuncTest.groovy | 7 +- .../DistributionDownloadFixture.groovy | 0 .../gradle/fixtures/WiremockFixture.groovy | 0 .../gradle/internal/test/BaseTestCase.java | 0 .../test/GradleIntegrationTestCase.java | 6 +- .../internal/test/GradleThreadsFilter.java | 0 .../internal/test/GradleUnitTestCase.java | 0 .../test/InternalAwareGradleRunner.java | 141 +++++++ .../internal/test/JUnit3MethodProvider.java | 0 .../internal/test/TestClasspathUtils.java | 0 build-tools/src/testKit/reaper/build.gradle | 15 + .../src/testKit/reaper/gradle.properties | 11 + .../src/testKit/reaper/settings.gradle | 0 build.gradle | 64 +-- buildSrc/settings.gradle | 1 - .../precommit/JarHellPrecommitPlugin.java | 31 -- .../gradle/precommit/PrecommitTasks.java | 23 -- buildSrc/version.properties | 8 +- client/rest-high-level/build.gradle | 2 +- client/rest/build.gradle | 4 +- client/sniffer/build.gradle | 4 +- client/test/build.gradle | 4 +- rest-api-spec/build.gradle | 2 +- settings.gradle | 10 +- x-pack/build.gradle | 6 +- x-pack/plugin/autoscaling/build.gradle | 1 - 436 files changed, 2798 insertions(+), 901 deletions(-) create mode 100644 build-conventions/build.gradle create mode 100644 build-conventions/settings.gradle create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/PublishPlugin.java (62%) create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/LicenseHeadersPrecommitPlugin.java (80%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/LicenseHeadersTask.java (99%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PomValidationPrecommitPlugin.java (87%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PomValidationTask.java (95%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitPlugin.java (79%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitTask.java (94%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitTaskPlugin.java (71%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/util/FileUtils.java (100%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/util/Util.java (65%) rename {buildSrc => build-tools-internal}/.gitignore (100%) rename {buildSrc => build-tools-internal}/build.gradle (50%) create mode 100644 build-tools-internal/elastic.importorder rename {buildSrc => build-tools-internal}/formatterConfig.xml (100%) create mode 100644 build-tools-internal/settings.gradle rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy (96%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy (58%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy (100%) create mode 100644 build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java (99%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java (100%) create mode 100644 build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java rename {buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit => build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell}/TestingConventionsTasksIT.java (99%) rename {buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit => build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell}/ThirdPartyAuditTaskIT.java (55%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.build-complete.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.build-scan.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.bwc-test.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.fips.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.forbidden-dependencies.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.formatting.gradle (98%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.ide.gradle (94%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.local-distribution.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.run.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle (93%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy (97%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/test/NodeInfo.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java (100%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-tools-internal/src/main/java/org/elasticsearch/gradle/internal}/FixtureStop.java (90%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java (86%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java (75%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java (72%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java (88%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java (96%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java (95%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java (95%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java (78%) create mode 100644 build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java (94%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java (94%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByObjectKey.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/test/JNAKernel32Library.java (100%) rename {buildSrc => build-tools-internal}/src/main/resources/buildSrc.marker (100%) rename {buildSrc => build-tools-internal}/src/main/resources/cacerts.bcfks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle.xml (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle_ide_fragment.xml (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle_suppressions.xml (96%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/README (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/conffiles.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/postinst.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/preinst.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/elasticsearch.properties (100%) rename buildSrc/src/main/resources/fips_java_bcjsse_11.policy => build-tools-internal/src/main/resources/fips_java.policy (100%) rename buildSrc/src/main/resources/fips_java_bcjsse_11.security => build-tools-internal/src/main/resources/fips_java.security (100%) create mode 100644 build-tools-internal/src/main/resources/fips_java_bcjsse_11.policy create mode 100644 build-tools-internal/src/main/resources/fips_java_bcjsse_11.security rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_bcjsse_8.policy (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_bcjsse_8.security (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_oracle.security (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_sunjsse.policy (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_sunjsse.security (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-all-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-server-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-test-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/http-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/jdk-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/snakeyaml-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/third-party-audit.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/license-headers/elastic-license-2.0-header.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/license-headers/sspl+elastic-license-header.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumCompilerVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumGradleVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumRuntimeVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/README.md (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.crt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.jks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.key (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.crt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.jks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.key (100%) rename {buildSrc => build-tools-internal}/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/VersionTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java (90%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/resources/ca.p12 (100%) rename {buildSrc => build-tools-internal}/src/test/resources/ca.pem (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/header_inject/no_setup.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/header_inject/with_features.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/header_inject/with_headers.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/header_inject/with_setup.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/header_inject/with_skip.yml (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/LICENSE (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/NOTICE (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/test/logger-usage/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/symbolic-link-preserving-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/symbolic-link-preserving-tar/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/empty_test_task/.gitignore (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/third-party-audit-empty.txt (100%) create mode 100644 build-tools-internal/version.properties create mode 100644 build-tools/build.gradle rename {buildSrc => build-tools}/reaper/build.gradle (87%) rename {buildSrc => build-tools}/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java (100%) create mode 100644 build-tools/settings.gradle rename {buildSrc => build-tools}/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools}/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy (100%) create mode 100644 build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/Architecture.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionDependency.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionResolution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/FileSupplier.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java (100%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-tools/src/main/java/org/elasticsearch/gradle}/Jdk.java (99%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-tools/src/main/java/org/elasticsearch/gradle}/JdkDownloadPlugin.java (98%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LoggedExec.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/OS.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java (92%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ReaperService.java (99%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/Version.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/VersionProperties.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java (100%) create mode 100644 build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellPlugin.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/precommit => build-tools/src/main/java/org/elasticsearch/gradle/jarhell}/JarHellTask.java (69%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java (88%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java (99%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java (99%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java (97%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java (98%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java (100%) create mode 100644 build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java (98%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/Pair.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java (100%) create mode 100644 build-tools/src/main/resources/plugin-descriptor.properties create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java rename {buildSrc/src/test/java/org/elasticsearch/gradle/internal => build-tools/src/test/java/org/elasticsearch/gradle}/JdkDownloadPluginTests.java (99%) create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java create mode 100644 build-tools/src/test/resources/ca.p12 create mode 100644 build-tools/src/test/resources/ca.pem rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy (96%) rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy (100%) rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java (98%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java (100%) create mode 100644 build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java (100%) create mode 100644 build-tools/src/testKit/reaper/build.gradle create mode 100644 build-tools/src/testKit/reaper/gradle.properties create mode 100644 build-tools/src/testKit/reaper/settings.gradle delete mode 100644 buildSrc/settings.gradle delete mode 100644 buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java diff --git a/build-conventions/build.gradle b/build-conventions/build.gradle new file mode 100644 index 000000000000..ab406056876c --- /dev/null +++ b/build-conventions/build.gradle @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +plugins { + id 'java-gradle-plugin' + id 'java-test-fixtures' +} + +group = "org.elasticsearch" + +targetCompatibility = 11 +sourceCompatibility = 11 + +gradlePlugin { + // We already configure publication and we don't need or want the one that comes + // with the java-gradle-plugin + automatedPublishing = false + plugins { + internalLicenseheaders { + id = 'elasticsearch.internal-licenseheaders' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin' + } + publish { + id = 'elasticsearch.publish' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.PublishPlugin' + } + licensing { + id = 'elasticsearch.licensing' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.LicensingPlugin' + } + basics { + id = 'elasticsearch.basic-build-tool-conventions' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.BasicBuildToolConventionsPlugin' + } + } +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +dependencies { + api 'org.apache.maven:maven-model:3.6.2' + api 'gradle.plugin.com.github.jengelman.gradle.plugins:shadow:7.0.0' + api 'org.apache.rat:apache-rat:0.11' +} diff --git a/build-conventions/settings.gradle b/build-conventions/settings.gradle new file mode 100644 index 000000000000..c69e832a21a7 --- /dev/null +++ b/build-conventions/settings.gradle @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +rootProject.name = 'build-conventions' \ No newline at end of file diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java new file mode 100644 index 000000000000..2c0f95e880a4 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.elasticsearch.gradle.internal.conventions.info.ParallelDetector; +import org.elasticsearch.gradle.internal.conventions.util.Util; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.tasks.bundling.Jar; +import org.gradle.api.tasks.testing.Test; + +import java.io.File; + +public class BasicBuildToolConventionsPlugin implements Plugin { + + @Override + public void apply(Project project) { + int defaultParallel = ParallelDetector.findDefaultParallel(project); + project.getTasks().withType(Test.class).configureEach(test -> { + test.onlyIf((t) -> Util.getBooleanProperty("tests.fips.enabled", false) == false); + test.setMaxParallelForks(defaultParallel); + }); + // we put all our distributable files under distributions + project.getTasks().withType(Jar.class).configureEach(j -> + j.getDestinationDirectory().set(new File(project.getBuildDir(), "distributions")) + ); + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java new file mode 100644 index 000000000000..fdfa6d942ab0 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import java.util.Locale; + +public abstract class GUtils { + + public static String capitalize(String s) { + return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1); + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java new file mode 100644 index 000000000000..dbc36e25dd75 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.initialization.layout.BuildLayout; + +import javax.inject.Inject; +import java.io.File; + +class GitInfoPlugin implements Plugin { + + private ProviderFactory factory; + private ObjectFactory objectFactory; + + private Provider revision; + private Property gitInfo; + + @Inject + public GitInfoPlugin(ProviderFactory factory, ObjectFactory objectFactory) { + this.factory = factory; + this.objectFactory = objectFactory; + } + + @Override + public void apply(Project project) { + File rootDir = (project.getGradle().getParent() == null) ? + project.getRootDir() : + project.getGradle().getParent().getRootProject().getRootDir(); + + gitInfo = objectFactory.property(GitInfo.class).value(factory.provider(() -> + GitInfo.gitInfo(rootDir) + )); + gitInfo.disallowChanges(); + gitInfo.finalizeValueOnRead(); + + revision = gitInfo.map(info -> info.getRevision() == null ? info.getRevision() : "master"); + } + + public Property getGitInfo() { + return gitInfo; + } + + public Provider getRevision() { + return revision; + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java new file mode 100644 index 000000000000..96b9419ea182 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.provider.MapProperty; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; + +import javax.inject.Inject; +import java.util.Map; +import java.util.concurrent.Callable; + +public class LicensingPlugin implements Plugin { + final static String ELASTIC_LICENSE_URL_PREFIX = "https://raw.githubusercontent.com/elastic/elasticsearch/"; + final static String ELASTIC_LICENSE_URL_POSTFIX = "/licenses/ELASTIC-LICENSE-2.0.txt"; + + private ProviderFactory providerFactory; + + @Inject + public LicensingPlugin(ProviderFactory providerFactory) { + this.providerFactory = providerFactory; + } + + @Override + public void apply(Project project) { + Provider revision = project.getRootProject().getPlugins().apply(GitInfoPlugin.class).getRevision(); + Provider licenseCommitProvider = providerFactory.provider(() -> + isSnapshotVersion(project) ? revision.get() : "v" + project.getVersion().toString() + ); + + MapProperty licensesProperty = project.getObjects().mapProperty(String.class, String.class); + Provider projectLicenseURL = licenseCommitProvider.map(licenseCommit -> ELASTIC_LICENSE_URL_PREFIX + + licenseCommit + ELASTIC_LICENSE_URL_POSTFIX); + // But stick the Elastic license url in project.ext so we can get it if we need to switch to it + project.getExtensions().getExtraProperties().set("elasticLicenseUrl", projectLicenseURL); + + MapProperty convention = licensesProperty.convention( + providerFactory.provider((Callable>) () -> Map.of( + "Server Side Public License, v 1", "https://www.mongodb.com/licensing/server-side-public-license", + "Elastic License 2.0", projectLicenseURL.get()) + ) + ); + // Default to the SSPL+Elastic dual license + project.getExtensions().getExtraProperties().set("licenseCommit", licenseCommitProvider); + project.getExtensions().getExtraProperties().set("projectLicenses", convention); + } + + private boolean isSnapshotVersion(Project project) { + return project.getVersion().toString().endsWith("-SNAPSHOT"); + } + +} \ No newline at end of file diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java similarity index 62% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java index 3458f5cd5a3b..02d16c95b5c7 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java @@ -6,22 +6,26 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal; +package org.elasticsearch.gradle.internal.conventions; +import org.elasticsearch.gradle.internal.conventions.precommit.PomValidationPrecommitPlugin; import com.github.jengelman.gradle.plugins.shadow.ShadowExtension; import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin; import groovy.util.Node; -import org.elasticsearch.gradle.internal.info.BuildParams; -import org.elasticsearch.gradle.internal.precommit.PomValidationPrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; import org.gradle.api.NamedDomainObjectSet; import org.gradle.api.Plugin; -import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.Project; import org.gradle.api.XmlProvider; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.provider.MapProperty; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.MavenPublication; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; @@ -30,9 +34,10 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.gradle.language.base.plugins.LifecycleBasePlugin; -import java.util.concurrent.Callable; -import static org.elasticsearch.gradle.util.GradleUtils.maybeConfigure; +import java.io.File; +import java.util.Map; +import java.util.concurrent.Callable; public class PublishPlugin implements Plugin { @@ -41,15 +46,18 @@ public class PublishPlugin implements Plugin { project.getPluginManager().apply(BasePlugin.class); project.getPluginManager().apply(MavenPublishPlugin.class); project.getPluginManager().apply(PomValidationPrecommitPlugin.class); - configurePublications(project); + project.getPluginManager().apply(LicensingPlugin.class); + configureJavadocJar(project); configureSourcesJar(project); configurePomGeneration(project); + configurePublications(project); } private void configurePublications(Project project) { PublishingExtension publishingExtension = project.getExtensions().getByType(PublishingExtension.class); MavenPublication publication = publishingExtension.getPublications().create("elastic", MavenPublication.class); + project.afterEvaluate(project1 -> { if (project1.getPlugins().hasPlugin(ShadowPlugin.class)) { configureWithShadowPlugin(project1, publication); @@ -57,6 +65,25 @@ public class PublishPlugin implements Plugin { publication.from(project.getComponents().getByName("java")); } }); + publication.getPom().withXml(xml -> { + Node node = xml.asNode(); + node.appendNode("inceptionYear", "2009"); + Node licensesNode = node.appendNode("licenses"); + MapProperty projectLicenses = (MapProperty) project.getExtensions().getExtraProperties().get("projectLicenses"); + projectLicenses.get().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> { + Node license = licensesNode.appendNode("license"); + license.appendNode("name", entry.getKey()); + license.appendNode("url", entry.getValue()); + license.appendNode("distribution", "repo"); + }); + Node developer = node.appendNode("developers").appendNode("developer"); + developer.appendNode("name", "Elastic"); + developer.appendNode("url", "https://www.elastic.co"); + }); + publishingExtension.getRepositories().maven(mavenArtifactRepository -> { + mavenArtifactRepository.setName("test"); + mavenArtifactRepository.setUrl(new File(project.getRootProject().getBuildDir(), "local-test-repo")); + }); } private static String getArchivesBaseName(Project project) { @@ -67,27 +94,29 @@ public class PublishPlugin implements Plugin { * Configuration generation of maven poms. */ private static void configurePomGeneration(Project project) { + Property gitInfo = project.getRootProject().getPlugins().apply(GitInfoPlugin.class).getGitInfo(); + TaskProvider generatePomTask = project.getTasks().register("generatePom"); project.getTasks().named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).configure(assemble -> assemble.dependsOn(generatePomTask)); project.getTasks() - .withType(GenerateMavenPom.class) - .configureEach( - pomTask -> pomTask.setDestination( - (Callable) () -> String.format( - "%s/distributions/%s-%s.pom", - project.getBuildDir(), - getArchivesBaseName(project), - project.getVersion() - ) - ) - ); + .withType(GenerateMavenPom.class) + .configureEach( + pomTask -> pomTask.setDestination( + (Callable) () -> String.format( + "%s/distributions/%s-%s.pom", + project.getBuildDir(), + getArchivesBaseName(project), + project.getVersion() + ) + ) + ); PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - final var mavenPublications = publishing.getPublications().withType(MavenPublication.class); + final NamedDomainObjectSet mavenPublications = publishing.getPublications().withType(MavenPublication.class); addNameAndDescriptiontoPom(project, mavenPublications); mavenPublications.all(publication -> { // Add git origin info to generated POM files for internal builds - BuildParams.withInternalBuild(() -> publication.getPom().withXml(PublishPlugin::addScmInfo)); + publication.getPom().withXml((xmlProvider) -> addScmInfo(xmlProvider, gitInfo.get())); // have to defer this until archivesBaseName is set project.afterEvaluate(p -> publication.setArtifactId(getArchivesBaseName(project))); generatePomTask.configure(t -> t.dependsOn(project.getTasks().withType(GenerateMavenPom.class))); @@ -99,7 +128,7 @@ public class PublishPlugin implements Plugin { Node root = xml.asNode(); root.appendNode("name", project.getName()); String description = project.getDescription() != null ? project.getDescription() : ""; - root.appendNode("description", project.getDescription()); + root.appendNode("description", description); })); } @@ -108,18 +137,18 @@ public class PublishPlugin implements Plugin { shadow.component(publication); } - private static void addScmInfo(XmlProvider xml) { + private static void addScmInfo(XmlProvider xml, GitInfo gitInfo) { Node root = xml.asNode(); - root.appendNode("url", Util.urlFromOrigin(BuildParams.getGitOrigin())); + root.appendNode("url", gitInfo.urlFromOrigin()); Node scmNode = root.appendNode("scm"); - scmNode.appendNode("url", BuildParams.getGitOrigin()); + scmNode.appendNode("url", gitInfo.getOrigin()); } /** * Adds a javadocJar task to generate a jar containing javadocs. */ private static void configureJavadocJar(Project project) { - project.getPlugins().withId("elasticsearch.java", p -> { + project.getPlugins().withType(JavaLibraryPlugin.class, p -> { TaskProvider javadocJarTask = project.getTasks().register("javadocJar", Jar.class); javadocJarTask.configure(jar -> { jar.getArchiveClassifier().set("javadoc"); @@ -127,12 +156,12 @@ public class PublishPlugin implements Plugin { jar.setDescription("Assembles a jar containing javadocs."); jar.from(project.getTasks().named(JavaPlugin.JAVADOC_TASK_NAME)); }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(javadocJarTask)); + project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).configure(t -> t.dependsOn(javadocJarTask)); }); } static void configureSourcesJar(Project project) { - project.getPlugins().withId("elasticsearch.java", p -> { + project.getPlugins().withType(JavaLibraryPlugin.class, p -> { TaskProvider sourcesJarTask = project.getTasks().register("sourcesJar", Jar.class); sourcesJarTask.configure(jar -> { jar.getArchiveClassifier().set("sources"); @@ -141,7 +170,7 @@ public class PublishPlugin implements Plugin { SourceSet mainSourceSet = Util.getJavaMainSourceSet(project).get(); jar.from(mainSourceSet.getAllSource()); }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(sourcesJarTask)); + project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).configure(t -> t.dependsOn(sourcesJarTask)); }); } } diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java new file mode 100644 index 000000000000..c7307ce98f65 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +// Define this here because we need it early. +public class VersionPropertiesLoader { + static Properties loadBuildSrcVersion(File input) throws IOException { + Properties props = new Properties(); + InputStream is = new FileInputStream(input); + try { + props.load(is); + } finally { + is.close(); + } + loadBuildSrcVersion(props, System.getProperties()); + return props; + } + + protected static void loadBuildSrcVersion(Properties loadedProps, Properties systemProperties) { + String elasticsearch = loadedProps.getProperty("elasticsearch"); + if (elasticsearch == null) { + throw new IllegalStateException("Elasticsearch version is missing from properties."); + } + if (elasticsearch.matches("[0-9]+\\.[0-9]+\\.[0-9]+") == false) { + throw new IllegalStateException( + "Expected elasticsearch version to be numbers only of the form X.Y.Z but it was: " + + elasticsearch + ); + } + String qualifier = systemProperties.getProperty("build.version_qualifier", ""); + if (qualifier.isEmpty() == false) { + if (qualifier.matches("(alpha|beta|rc)\\d+") == false) { + throw new IllegalStateException("Invalid qualifier: " + qualifier); + } + elasticsearch += "-" + qualifier; + } + final String buildSnapshotSystemProperty = systemProperties.getProperty("build.snapshot", "true"); + switch (buildSnapshotSystemProperty) { + case "true": + elasticsearch += "-SNAPSHOT"; + break; + case "false": + // do nothing + break; + default: + throw new IllegalArgumentException( + "build.snapshot was set to [" + buildSnapshotSystemProperty + "] but can only be unset or [true|false]"); + } + loadedProps.put("elasticsearch", elasticsearch); + } +} + diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java new file mode 100644 index 000000000000..7ada49bdbd85 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java @@ -0,0 +1,186 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions.info; + +import org.gradle.api.GradleException; +import org.gradle.api.logging.Logging; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class GitInfo { + private static final Pattern GIT_PATTERN = Pattern.compile("git@([^:]+):([^\\.]+)\\.git"); + + private final String revision; + private final String origin; + + private GitInfo(String revision, String origin) { + this.revision = revision; + this.origin = origin; + } + + public String getRevision() { + return revision; + } + + public String getOrigin() { + return origin; + } + + public static GitInfo gitInfo(File rootDir) { + try { + /* + * We want to avoid forking another process to run git rev-parse HEAD. Instead, we will read the refs manually. The + * documentation for this follows from https://git-scm.com/docs/gitrepository-layout and https://git-scm.com/docs/git-worktree. + * + * There are two cases to consider: + * - a plain repository with .git directory at the root of the working tree + * - a worktree with a plain text .git file at the root of the working tree + * + * In each case, our goal is to parse the HEAD file to get either a ref or a bare revision (in the case of being in detached + * HEAD state). + * + * In the case of a plain repository, we can read the HEAD file directly, resolved directly from the .git directory. + * + * In the case of a worktree, we read the gitdir from the plain text .git file. This resolves to a directory from which we read + * the HEAD file and resolve commondir to the plain git repository. + */ + final Path dotGit = rootDir.toPath().resolve(".git"); + final String revision; + if (Files.exists(dotGit) == false) { + return new GitInfo("unknown", "unknown"); + } + final Path head; + final Path gitDir; + if (Files.isDirectory(dotGit)) { + // this is a git repository, we can read HEAD directly + head = dotGit.resolve("HEAD"); + gitDir = dotGit; + } else { + // this is a git worktree, follow the pointer to the repository + final Path workTree = Paths.get(readFirstLine(dotGit).substring("gitdir:".length()).trim()); + if (Files.exists(workTree) == false) { + return new GitInfo("unknown", "unknown"); + } + head = workTree.resolve("HEAD"); + final Path commonDir = Paths.get(readFirstLine(workTree.resolve("commondir"))); + if (commonDir.isAbsolute()) { + gitDir = commonDir; + } else { + // this is the common case + gitDir = workTree.resolve(commonDir); + } + } + final String ref = readFirstLine(head); + if (ref.startsWith("ref:")) { + String refName = ref.substring("ref:".length()).trim(); + Path refFile = gitDir.resolve(refName); + if (Files.exists(refFile)) { + revision = readFirstLine(refFile); + } else if (Files.exists(gitDir.resolve("packed-refs"))) { + // Check packed references for commit ID + Pattern p = Pattern.compile("^([a-f0-9]{40}) " + refName + "$"); + try (Stream lines = Files.lines(gitDir.resolve("packed-refs"))) { + revision = lines.map(p::matcher) + .filter(Matcher::matches) + .map(m -> m.group(1)) + .findFirst() + .orElseThrow(() -> new IOException("Packed reference not found for refName " + refName)); + } + } else { + File refsDir = gitDir.resolve("refs").toFile(); + if (refsDir.exists()) { + String foundRefs = Arrays.stream(refsDir.listFiles()).map(f -> f.getName()).collect(Collectors.joining("\n")); + Logging.getLogger(GitInfo.class).error("Found git refs\n" + foundRefs); + } else { + Logging.getLogger(GitInfo.class).error("No git refs dir found"); + } + throw new GradleException("Can't find revision for refName " + refName); + } + } else { + // we are in detached HEAD state + revision = ref; + } + return new GitInfo(revision, findOriginUrl(gitDir.resolve("config"))); + } catch (final IOException e) { + // for now, do not be lenient until we have better understanding of real-world scenarios where this happens + throw new GradleException("unable to read the git revision", e); + } + } + + + private static String findOriginUrl(final Path configFile) throws IOException { + Map props = new HashMap<>(); + + try (Stream stream = Files.lines(configFile, StandardCharsets.UTF_8)) { + Iterator lines = stream.iterator(); + boolean foundOrigin = false; + while (lines.hasNext()) { + String line = lines.next().trim(); + if (line.startsWith(";") || line.startsWith("#")) { + // ignore comments + continue; + } + if (foundOrigin) { + if (line.startsWith("[")) { + // we're on to the next config item so stop looking + break; + } + String[] pair = line.trim().split("=", 2); + props.put(pair[0].trim(), pair[1].trim()); + } else { + if (line.equals("[remote \"origin\"]")) { + foundOrigin = true; + } + } + } + } + + String originUrl = props.get("url"); + return originUrl == null ? "unknown" : originUrl; + } + + private static String readFirstLine(final Path path) throws IOException { + String firstLine; + try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { + firstLine = lines.findFirst().orElseThrow(() -> new IOException("file [" + path + "] is empty")); + } + return firstLine; + } + + /** Find the reponame. */ + public String urlFromOrigin() { + String oritin = getOrigin(); + if (origin == null) { + return null; // best effort, the url doesnt really matter, it is just required by maven central + } + if (origin.startsWith("https")) { + return origin; + } + Matcher matcher = GIT_PATTERN.matcher(origin); + if (matcher.matches()) { + return String.format("https://%s/%s", matcher.group(1), matcher.group(2)); + } else { + return origin; // best effort, the url doesnt really matter, it is just required by maven central + } + } + +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java new file mode 100644 index 000000000000..c4c0cb8f46d4 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions.info; + +import org.gradle.api.Project; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class ParallelDetector { + + private static Integer _defaultParallel = null; + + public static int findDefaultParallel(Project project) { + // Since it costs IO to compute this, and is done at configuration time we want to cache this if possible + // It's safe to store this in a static variable since it's just a primitive so leaking memory isn't an issue + if (_defaultParallel == null) { + File cpuInfoFile = new File("/proc/cpuinfo"); + if (cpuInfoFile.exists()) { + // Count physical cores on any Linux distro ( don't count hyper-threading ) + Map socketToCore = new HashMap<>(); + String currentID = ""; + + try (BufferedReader reader = new BufferedReader(new FileReader(cpuInfoFile))) { + for (String line = reader.readLine(); line != null; line = reader.readLine()) { + if (line.contains(":")) { + List parts = Arrays.stream(line.split(":", 2)).map(String::trim).collect(Collectors.toList()); + String name = parts.get(0); + String value = parts.get(1); + // the ID of the CPU socket + if (name.equals("physical id")) { + currentID = value; + } + // Number of cores not including hyper-threading + if (name.equals("cpu cores")) { + assert currentID.isEmpty() == false; + socketToCore.put("currentID", Integer.valueOf(value)); + currentID = ""; + } + } + } + } catch (IOException e) { + throw new UncheckedIOException(e); + } + _defaultParallel = socketToCore.values().stream().mapToInt(i -> i).sum(); + } else if (isMac()) { + // Ask macOS to count physical CPUs for us + ByteArrayOutputStream stdout = new ByteArrayOutputStream(); + project.exec(spec -> { + spec.setExecutable("sysctl"); + spec.args("-n", "hw.physicalcpu"); + spec.setStandardOutput(stdout); + }); + + _defaultParallel = Integer.parseInt(stdout.toString().trim()); + } + + _defaultParallel = Runtime.getRuntime().availableProcessors() / 2; + } + + return _defaultParallel; + } + + private static boolean isMac() { + return System.getProperty("os.name", "").startsWith("Mac"); + } + +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java similarity index 80% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java index 9d65aadb6894..e93c6bab74f0 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java @@ -6,14 +6,12 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.plugins.JavaBasePlugin; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.provider.ProviderFactory; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskProvider; @@ -21,7 +19,7 @@ import org.gradle.api.tasks.TaskProvider; import javax.inject.Inject; import java.util.stream.Collectors; -public class LicenseHeadersPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { +public class LicenseHeadersPrecommitPlugin extends PrecommitPlugin { @Inject public LicenseHeadersPrecommitPlugin(ProviderFactory providerFactory) { this.providerFactory = providerFactory; @@ -31,7 +29,7 @@ public class LicenseHeadersPrecommitPlugin extends PrecommitPlugin implements In public TaskProvider createTask(Project project) { return project.getTasks().register("licenseHeaders", LicenseHeadersTask.class, licenseHeadersTask -> { project.getPlugins().withType(JavaBasePlugin.class, javaBasePlugin -> { - final SourceSetContainer sourceSets = GradleUtils.getJavaSourceSets(project); + final SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); licenseHeadersTask.getSourceFolders() .addAll(providerFactory.provider(() -> sourceSets.stream().map(s -> s.getAllJava()).collect(Collectors.toList()))); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java index a7a34a2d729c..83a1b79f5749 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.apache.rat.Defaults; import org.apache.rat.ReportConfiguration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java similarity index 87% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java index 752b73f9c5fa..0f7de8573e3c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java @@ -6,10 +6,9 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.GUtils; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.publish.PublishingExtension; @@ -26,7 +25,7 @@ public class PomValidationPrecommitPlugin extends PrecommitPlugin { TaskProvider validatePom = project.getTasks().register("validatePom"); PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); publishing.getPublications().all(publication -> { - String publicationName = Util.capitalize(publication.getName()); + String publicationName = GUtils.capitalize(publication.getName()); TaskProvider validateTask = project.getTasks() .register("validate" + publicationName + "Pom", PomValidationTask.class); validatePom.configure(t -> t.dependsOn(validateTask)); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java index 45daa084f55d..ac7d4c787313 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java @@ -6,11 +6,11 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.apache.maven.model.Model; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.elasticsearch.gradle.precommit.PrecommitTask; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTask; import org.gradle.api.GradleException; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.tasks.InputFile; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java similarity index 79% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java index b12a7cae15d6..6bf3cc5e93b9 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java @@ -6,12 +6,12 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.TaskProvider; /** @@ -27,10 +27,11 @@ public abstract class PrecommitPlugin implements Plugin { TaskProvider task = createTask(project); TaskProvider precommit = project.getTasks().named(PRECOMMIT_TASK_NAME); precommit.configure(t -> t.dependsOn(task)); - project.getPluginManager().withPlugin("java", p -> { // We want to get any compilation error before running the pre-commit checks. - GradleUtils.getJavaSourceSets(project).all(sourceSet -> task.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName()))); + project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> + task.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName())) + ); }); } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java index 7046df15b9e9..5cdc291895ff 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.gradle.api.DefaultTask; import org.gradle.api.file.ProjectLayout; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java similarity index 71% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java index f5d554dca271..0493b30149bf 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java @@ -6,13 +6,13 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.plugins.JavaBasePlugin; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.testing.Test; import org.gradle.language.base.plugins.LifecycleBasePlugin; @@ -27,14 +27,15 @@ public class PrecommitTaskPlugin implements Plugin { }); project.getPluginManager() - .withPlugin( - "lifecycle-base", - p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(precommit)) - ); + .withPlugin( + "lifecycle-base", + p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(precommit)) + ); project.getPluginManager().withPlugin("java", p -> { // run compilation as part of precommit - GradleUtils.getJavaSourceSets(project).all(sourceSet -> precommit.configure(t -> t.dependsOn(sourceSet.getClassesTaskName()))); - + project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> + precommit.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName())) + ); // make sure tests run after all precommit tasks project.getTasks().withType(Test.class).configureEach(t -> t.mustRunAfter(precommit)); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/FileUtils.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/FileUtils.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/FileUtils.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/FileUtils.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java similarity index 65% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java index f00c32bda3ec..3c90df54c0db 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java @@ -6,30 +6,22 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.util; +package org.elasticsearch.gradle.internal.conventions.util; -import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.file.FileTree; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.SourceSet; +import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.util.PatternFilterable; import javax.annotation.Nullable; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.UncheckedIOException; import java.net.URI; import java.net.URISyntaxException; -import java.util.Locale; import java.util.Optional; import java.util.function.Supplier; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class Util { @@ -47,36 +39,6 @@ public class Util { } } - public static String getResourceContents(String resourcePath) { - try ( - BufferedReader reader = new BufferedReader(new InputStreamReader(GlobalBuildInfoPlugin.class.getResourceAsStream(resourcePath))) - ) { - StringBuilder b = new StringBuilder(); - for (String line = reader.readLine(); line != null; line = reader.readLine()) { - if (b.length() != 0) { - b.append('\n'); - } - b.append(line); - } - - return b.toString(); - } catch (IOException e) { - throw new UncheckedIOException("Error trying to read classpath resource: " + resourcePath, e); - } - } - - public static String capitalize(String s) { - return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1); - } - - public static URI getBuildSrcCodeSource() { - try { - return Util.class.getProtectionDomain().getCodeSource().getLocation().toURI(); - } catch (URISyntaxException e) { - throw new GradleException("Error determining build tools JAR location", e); - } - } - /** * @param project The project to look for resources. * @param filter Optional filter function to filter the returned resources @@ -125,7 +87,7 @@ public class Util { public static Optional getJavaTestSourceSet(Project project) { return project.getConvention().findPlugin(JavaPluginConvention.class) == null ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME)); + : Optional.ofNullable(getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME)); } /** @@ -135,26 +97,9 @@ public class Util { public static Optional getJavaMainSourceSet(Project project) { return project.getConvention().findPlugin(JavaPluginConvention.class) == null ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME)); + : Optional.ofNullable(getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME)); } - static final Pattern GIT_PATTERN = Pattern.compile("git@([^:]+):([^\\.]+)\\.git"); - - /** Find the reponame. */ - public static String urlFromOrigin(String origin) { - if (origin == null) { - return null; // best effort, the url doesnt really matter, it is just required by maven central - } - if (origin.startsWith("https")) { - return origin; - } - Matcher matcher = GIT_PATTERN.matcher(origin); - if (matcher.matches()) { - return String.format("https://%s/%s", matcher.group(1), matcher.group(2)); - } else { - return origin; // best effort, the url doesnt really matter, it is just required by maven central - } - } public static Object toStringable(Supplier getter) { return new Object() { @@ -164,4 +109,9 @@ public class Util { } }; } + + public static SourceSetContainer getJavaSourceSets(Project project) { + return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); + } + } diff --git a/buildSrc/.gitignore b/build-tools-internal/.gitignore similarity index 100% rename from buildSrc/.gitignore rename to build-tools-internal/.gitignore diff --git a/buildSrc/build.gradle b/build-tools-internal/build.gradle similarity index 50% rename from buildSrc/build.gradle rename to build-tools-internal/build.gradle index 534199bfe574..ae716a38e789 100644 --- a/buildSrc/build.gradle +++ b/build-tools-internal/build.gradle @@ -8,30 +8,18 @@ import org.gradle.internal.jvm.Jvm import org.gradle.util.GradleVersion +import org.elasticsearch.gradle.internal.conventions.VersionPropertiesLoader plugins { id 'java-gradle-plugin' + id 'groovy-gradle-plugin' id 'groovy' - id 'java-test-fixtures' + id 'elasticsearch.internal-licenseheaders' + id 'elasticsearch.basic-build-tool-conventions' } group = 'org.elasticsearch.gradle' -String minimumGradleVersion = file('src/main/resources/minimumGradleVersion').text.trim() -if (GradleVersion.current() < GradleVersion.version(minimumGradleVersion)) { - throw new GradleException("Gradle ${minimumGradleVersion}+ is required to build elasticsearch") -} - -if (project == rootProject) { - // change the build dir used during build init, so that doing a clean - // won't wipe out the buildscript jar - buildDir = 'build-bootstrap' -} - -/***************************************************************************** - * Propagating version.properties to the rest of the build * - *****************************************************************************/ - // we update the version property to reflect if we are building a snapshot or a release build // we write this back out below to load it in the Build.java which will be shown in rest main action // to indicate this being a snapshot build or a release build. @@ -47,10 +35,6 @@ gradlePlugin { id = 'elasticsearch.build' implementationClass = 'org.elasticsearch.gradle.internal.BuildPlugin' } - distributionDownload { - id = 'elasticsearch.distribution-download' - implementationClass = 'org.elasticsearch.gradle.DistributionDownloadPlugin' - } distroTest { id = 'elasticsearch.distro-test' implementationClass = 'org.elasticsearch.gradle.internal.test.DistroTestPlugin' @@ -63,10 +47,6 @@ gradlePlugin { id = 'elasticsearch.docs-test' implementationClass = 'org.elasticsearch.gradle.internal.doc.DocsTestPlugin' } - esPlugin { - id = 'elasticsearch.esplugin' - implementationClass = 'org.elasticsearch.gradle.plugin.PluginBuildPlugin' - } globalBuildInfo { id = 'elasticsearch.global-build-info' implementationClass = 'org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin' @@ -95,10 +75,6 @@ gradlePlugin { id = 'elasticsearch.internal-distribution-download' implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionDownloadPlugin' } - internalLicenseheaders { - id = 'elasticsearch.internal-licenseheaders' - implementationClass = 'org.elasticsearch.gradle.internal.precommit.LicenseHeadersPrecommitPlugin' - } internalPlugin { id = 'elasticsearch.internal-es-plugin' implementationClass = 'org.elasticsearch.gradle.internal.InternalPluginBuildPlugin' @@ -127,18 +103,6 @@ gradlePlugin { id = 'elasticsearch.java-rest-test' implementationClass = 'org.elasticsearch.gradle.internal.test.rest.JavaRestTestPlugin' } - jdkDownload { - id = 'elasticsearch.jdk-download' - implementationClass = 'org.elasticsearch.gradle.internal.JdkDownloadPlugin' - } - publish { - id = 'elasticsearch.publish' - implementationClass = 'org.elasticsearch.gradle.internal.PublishPlugin' - } - reaper { - id = 'elasticsearch.reaper' - implementationClass = 'org.elasticsearch.gradle.ReaperPlugin' - } repositories { id = 'elasticsearch.repositories' implementationClass = 'org.elasticsearch.gradle.internal.RepositoriesSetupPlugin' @@ -175,33 +139,16 @@ gradlePlugin { id = 'elasticsearch.test-with-ssl' implementationClass = 'org.elasticsearch.gradle.internal.test.TestWithSslPlugin' } - testclusters { - id = 'elasticsearch.testclusters' - implementationClass = 'org.elasticsearch.gradle.testclusters.TestClustersPlugin' - } validateRestSpec { id = 'elasticsearch.validate-rest-spec' implementationClass = 'org.elasticsearch.gradle.internal.precommit.ValidateRestSpecPlugin' } - yamlRestCompatTest { - id = 'elasticsearch.yaml-rest-compat-test' - implementationClass = 'org.elasticsearch.gradle.internal.rest.compat.YamlRestCompatTestPlugin' - } yamlRestTest { id = 'elasticsearch.yaml-rest-test' implementationClass = 'org.elasticsearch.gradle.internal.test.rest.YamlRestTestPlugin' } } } -def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { - outputFile = "${buildDir}/version.properties" - comment = 'Generated version properties' - properties(props) -} - -tasks.named("processResources").configure { - from(generateVersionProperties) -} /***************************************************************************** * Java version * @@ -211,11 +158,8 @@ if (JavaVersion.current() < JavaVersion.VERSION_11) { throw new GradleException('At least Java 11 is required to build elasticsearch gradle tools') } -allprojects { - apply plugin: 'java' - targetCompatibility = '11' - sourceCompatibility = '11' -} +targetCompatibility = 11 +sourceCompatibility = 11 sourceSets { integTest { @@ -228,6 +172,10 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' } +tasks.named('licenseHeaders').configure { + // ignore gradle generated binary script plugins + excludes << "Elasticsearch*Plugin.java" +} /***************************************************************************** * Dependencies used by the entire build * *****************************************************************************/ @@ -244,6 +192,9 @@ dependencies { api localGroovy() + api "org.elasticsearch:build-conventions:$version" + api "org.elasticsearch:build-tools:$version" + api 'commons-codec:commons-codec:1.12' api 'org.apache.commons:commons-compress:1.19' api 'org.apache.ant:ant:1.10.8' @@ -265,22 +216,26 @@ dependencies { compileOnly "com.puppycrawl.tools:checkstyle:${props.getProperty('checkstyle')}" testImplementation "com.puppycrawl.tools:checkstyle:${props.getProperty('checkstyle')}" - testFixturesApi "junit:junit:${props.getProperty('junit')}" - testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" - testFixturesApi gradleApi() - testFixturesApi gradleTestKit() + testImplementation "junit:junit:${props.getProperty('junit')}" +// testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" +// testFixturesApi gradleApi() +// testFixturesApi gradleTestKit() testImplementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2' testImplementation 'org.mockito:mockito-core:1.9.5' testImplementation "org.hamcrest:hamcrest:${props.getProperty('hamcrest')}" + testImplementation testFixtures("org.elasticsearch:build-tools:$version") + integTestImplementation(platform("org.junit:junit-bom:${props.getProperty('junit5')}")) integTestImplementation("org.junit.jupiter:junit-jupiter") { because 'allows to write and run Jupiter tests' } + integTestImplementation("net.bytebuddy:byte-buddy:1.11.0") { + because 'Generating dynamic mocks of internal libraries like JdkJarHell' + } testRuntimeOnly("org.junit.vintage:junit-vintage-engine") { because 'allows JUnit 3 and JUnit 4 tests to run' } - integTestRuntimeOnly("org.junit.platform:junit-platform-launcher") { because 'allows tests to run from IDEs that bundle older version of launcher' } @@ -298,183 +253,10 @@ dependencies { integTestImplementation "org.xmlunit:xmlunit-core:2.8.2" } -/***************************************************************************** - * Bootstrap repositories * - *****************************************************************************/ -// this will only happen when buildSrc is built on its own during build init -if (project == rootProject) { - apply plugin: 'groovy-gradle-plugin' - - repositories { - if (System.getProperty("repos.mavenLocal") != null) { - mavenLocal() - } - } - dependencies { - // add this so the runtime classpath so Gradle will properly track it as a build runtime classpath input - runtimeOnly project('reaper') - } - // only run tests as build-tools - tasks.named("test").configure { - enabled = false - } -} - -/***************************************************************************** - * Normal project checks * - *****************************************************************************/ - -// this happens when included as a normal project in the build, which we do -// to enforce precommit checks like forbidden apis, as well as setup publishing -if (project != rootProject) { - apply plugin: 'elasticsearch.build' - apply plugin: 'elasticsearch.publish' - - // We have to set this again down here since the elasticsearch.java plugin defaults to minimumRuntimeVersion - targetCompatibility = '11' - sourceCompatibility = '11' - - // groovydoc succeeds, but has some weird internal exception... - tasks.named("groovydoc").configure { - enabled = false - } - - // build-tools is not ready for primetime with these... - tasks.named("dependencyLicenses").configure { enabled = false } - tasks.named("dependenciesInfo").configure {enabled = false } - disableTasks('forbiddenApisMain', 'forbiddenApisTest', 'forbiddenApisIntegTest', 'forbiddenApisTestFixtures') - tasks.named("jarHell").configure { - enabled = false - } - tasks.named("thirdPartyAudit").configure { - enabled = false - } - configurations.register("distribution") - configurations.register("reaper") - - dependencies { - reaper project('reaper') - distribution project(':distribution:archives:windows-zip') - distribution project(':distribution:archives:darwin-tar') - distribution project(':distribution:archives:darwin-aarch64-tar') - distribution project(':distribution:archives:linux-aarch64-tar') - distribution project(':distribution:archives:linux-tar') - integTestRuntimeOnly(project(":libs:elasticsearch-core")) - } - - // for external projects we want to remove the marker file indicating we are running the Elasticsearch project - tasks.named("processResources").configure { - exclude 'buildSrc.marker' - into('META-INF') { - from configurations.reaper - } - } - - tasks.withType(Test).configureEach { - // Track reaper jar as a test input using runtime classpath normalization strategy - inputs.files(configurations.reaper).withNormalizer(ClasspathNormalizer) - useJUnitPlatform() - } - - tasks.named("test").configure { - include("**/*TestSpec.class") - } - - normalization { - runtimeClasspath { - // We already include the reaper jar as part of our runtime classpath. Ignore the copy in META-INF. - ignore('META-INF/reaper.jar') - } - } - - tasks.named("forbiddenPatterns").configure { - exclude '**/*.wav' - exclude '**/*.p12' - exclude '**/*.jks' - exclude '**/*.crt' - // the file that actually defines nocommit - exclude '**/ForbiddenPatternsTask.java' - exclude '**/*.bcfks' - } - - tasks.named("testingConventions") { - naming.clear() - naming { - Tests { - baseClass 'org.elasticsearch.gradle.internal.test.GradleUnitTestCase' - } - TestSpec { - baseClass 'spock.lang.Specification' - } - } - } - - tasks.register("integTest", Test) { - inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) - systemProperty 'test.version_under_test', version - testClassesDirs = sourceSets.integTest.output.classesDirs - classpath = sourceSets.integTest.runtimeClasspath - useJUnitPlatform() - } - tasks.named("check").configure { dependsOn("integTest") } - - // for now we hardcode the tests for our build to use the gradle jvm. - tasks.withType(Test).configureEach { - onlyIf { org.elasticsearch.gradle.internal.info.BuildParams.inFipsJvm == false } - it.executable = Jvm.current().getJavaExecutable() - maxParallelForks = providers.systemProperty('tests.jvms').forUseAtConfigurationTime().getOrElse(org.elasticsearch.gradle.internal.info.BuildParams.defaultParallel.toString()) as Integer - } - - publishing.publications.named("elastic").configure { - suppressPomMetadataWarningsFor("testFixturesApiElements") - suppressPomMetadataWarningsFor("testFixturesRuntimeElements") - } -} - -// Define this here because we need it early. -class VersionPropertiesLoader { - static Properties loadBuildSrcVersion(File input) throws IOException { - Properties props = new Properties(); - InputStream is = new FileInputStream(input) - try { - props.load(is) - } finally { - is.close() - } - loadBuildSrcVersion(props, System.getProperties()) - return props - } - - protected static void loadBuildSrcVersion(Properties loadedProps, Properties systemProperties) { - String elasticsearch = loadedProps.getProperty("elasticsearch") - if (elasticsearch == null) { - throw new IllegalStateException("Elasticsearch version is missing from properties.") - } - if (elasticsearch.matches("[0-9]+\\.[0-9]+\\.[0-9]+") == false) { - throw new IllegalStateException( - "Expected elasticsearch version to be numbers only of the form X.Y.Z but it was: " + - elasticsearch - ) - } - String qualifier = systemProperties.getProperty("build.version_qualifier", "") - if (qualifier.isEmpty() == false) { - if (qualifier.matches("(alpha|beta|rc)\\d+") == false) { - throw new IllegalStateException("Invalid qualifier: " + qualifier) - } - elasticsearch += "-" + qualifier - } - final String buildSnapshotSystemProperty = systemProperties.getProperty("build.snapshot", "true"); - switch (buildSnapshotSystemProperty) { - case "true": - elasticsearch += "-SNAPSHOT" - break; - case "false": - // do nothing - break; - default: - throw new IllegalArgumentException( - "build.snapshot was set to [" + buildSnapshotSystemProperty + "] but can only be unset or [true|false]"); - } - loadedProps.put("elasticsearch", elasticsearch) - } +tasks.register("integTest", Test) { + inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) + systemProperty 'test.version_under_test', version + testClassesDirs = sourceSets.integTest.output.classesDirs + classpath = sourceSets.integTest.runtimeClasspath + useJUnitPlatform() } diff --git a/build-tools-internal/elastic.importorder b/build-tools-internal/elastic.importorder new file mode 100644 index 000000000000..78e051ed1e2a --- /dev/null +++ b/build-tools-internal/elastic.importorder @@ -0,0 +1,7 @@ +#Eclipse configuration for import order for Elasticsearch +0= +1=com +2=org +3=java +4=javax +5=\# diff --git a/buildSrc/formatterConfig.xml b/build-tools-internal/formatterConfig.xml similarity index 100% rename from buildSrc/formatterConfig.xml rename to build-tools-internal/formatterConfig.xml diff --git a/build-tools-internal/settings.gradle b/build-tools-internal/settings.gradle new file mode 100644 index 000000000000..6981f837d4a2 --- /dev/null +++ b/build-tools-internal/settings.gradle @@ -0,0 +1,2 @@ +includeBuild '../build-conventions' +includeBuild '../build-tools' diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy similarity index 96% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy index b0eea457df0c..fd486051d74d 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.fixtures import org.apache.commons.io.FileUtils +import org.elasticsearch.gradle.internal.test.InternalAwareGradleRunner import org.gradle.testkit.runner.GradleRunner import org.junit.Rule import org.junit.rules.TemporaryFolder diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy similarity index 58% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy index 6155e858780a..9b9a9e9b7064 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy @@ -10,8 +10,10 @@ package org.elasticsearch.gradle.internal import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome +import org.junit.Ignore import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input +import spock.lang.IgnoreRest class PublishPluginFuncTest extends AbstractGradleFuncTest { @@ -38,16 +40,42 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { file("build/distributions/hello-world-1.0-sources.jar").exists() file("build/distributions/hello-world-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """ - - 4.0.0 - org.acme - hello-world - 1.0 - hello-world - custom project description - """ + + + + + + + 4.0.0 + org.acme + hello-world + 1.0 + hello-world + custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + +""" ) } @@ -99,6 +127,29 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { 1.0 hello-world some description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + org.slf4j @@ -160,6 +211,29 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { 1.0 hello-world some description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + org.acme @@ -216,15 +290,41 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { file("build/distributions/hello-world-plugin-1.0-sources.jar").exists() file("build/distributions/hello-world-plugin-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-plugin-1.0.pom").text, """ - + + + + + + 4.0.0 org.acme hello-world-plugin 1.0 hello-world custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + """ ) @@ -250,7 +350,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { tasks.named('bundlePlugin').configure { enabled = false } licenseFile = file('license.txt') noticeFile = file('notice.txt') - version = "1.0" + version = "2.0" group = 'org.acme' """ @@ -259,22 +359,48 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { then: result.task(":generatePom").outcome == TaskOutcome.SUCCESS - file("build/distributions/hello-world-plugin-1.0.pom").exists() - assertXmlEquals(file("build/distributions/hello-world-plugin-1.0.pom").text, """ - + file("build/distributions/hello-world-plugin-2.0.pom").exists() + assertXmlEquals(file("build/distributions/hello-world-plugin-2.0.pom").text, """ + + + + + + 4.0.0 org.acme hello-world-plugin - 1.0 + 2.0 hello-world custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v2.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + """ ) } - def "generated pom can be tweaked and validated"() { + def "generated pom can be validated"() { given: // scm info only added for internal builds internalBuild() @@ -288,68 +414,47 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { group = 'org.acme' description = "just a test project" - // this is currently required to have validation passed - // In our elasticsearch build this is currently setup in the - // root build.gradle file. - plugins.withType(MavenPublishPlugin) { - publishing { - publications { - // add license information to generated poms - all { - pom.withXml { XmlProvider xml -> - Node node = xml.asNode() - node.appendNode('inceptionYear', '2009') - - Node license = node.appendNode('licenses').appendNode('license') - license.appendNode('name', "The Apache Software License, Version 2.0") - license.appendNode('url', "http://www.apache.org/licenses/LICENSE-2.0.txt") - license.appendNode('distribution', 'repo') - - Node developer = node.appendNode('developers').appendNode('developer') - developer.appendNode('name', 'Elastic') - developer.appendNode('url', 'https://www.elastic.co') - } - } - } - } - } + ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) """ when: - def result = gradleRunner('generatePom', 'validatElasticPom').build() + def result = gradleRunner('generatePom', 'validateElasticPom').build() then: result.task(":generatePom").outcome == TaskOutcome.SUCCESS file("build/distributions/hello-world-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """ - - 4.0.0 - org.acme - hello-world - 1.0 - hello-world - just a test project - https://some-repo.com/repo.git - - https://some-repo.com/repo.git - - 2009 - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - Elastic - https://www.elastic.co - - - """ + + + + + + + 4.0.0 + org.acme + hello-world + 1.0 + hello-world + just a test project + unknown + + unknown + + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + Elastic + https://www.elastic.co + + + """ ) } diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy new file mode 100644 index 000000000000..d176f7897a68 --- /dev/null +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy @@ -0,0 +1,368 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.test.rest + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SequenceWriter +import com.fasterxml.jackson.databind.node.ObjectNode +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory +import org.elasticsearch.gradle.Version +import org.elasticsearch.gradle.fixtures.AbstractRestResourcesFuncTest +import org.elasticsearch.gradle.VersionProperties +import org.gradle.testkit.runner.TaskOutcome + +class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest { + + def compatibleVersion = Version.fromString(VersionProperties.getVersions().get("elasticsearch")).getMajor() - 1 + def specIntermediateDir = "restResources/v${compatibleVersion}/yamlSpecs" + def testIntermediateDir = "restResources/v${compatibleVersion}/yamlTests" + def transformTask = ":transformV${compatibleVersion}RestTests" + def YAML_FACTORY = new YAMLFactory() + def MAPPER = new ObjectMapper(YAML_FACTORY) + def READER = MAPPER.readerFor(ObjectNode.class) + def WRITER = MAPPER.writerFor(ObjectNode.class) + + def "yamlRestCompatTest does nothing when there are no tests"() { + given: + addSubProject(":distribution:bwc:minor") << """ + configurations { checkout } + artifacts { + checkout(new File(projectDir, "checkoutDir")) + } + """ + + buildFile << """ + plugins { + id 'elasticsearch.yaml-rest-compat-test' + } + """ + + when: + def result = gradleRunner("yamlRestCompatTest").build() + + then: + result.task(':yamlRestCompatTest').outcome == TaskOutcome.NO_SOURCE + result.task(':copyRestCompatApiTask').outcome == TaskOutcome.NO_SOURCE + result.task(':copyRestCompatTestTask').outcome == TaskOutcome.NO_SOURCE + result.task(transformTask).outcome == TaskOutcome.NO_SOURCE + } + + def "yamlRestCompatTest executes and copies api and transforms tests from :bwc:minor"() { + given: + internalBuild() + + addSubProject(":distribution:bwc:minor") << """ + configurations { checkout } + artifacts { + checkout(new File(projectDir, "checkoutDir")) + } + """ + + buildFile << """ + apply plugin: 'elasticsearch.yaml-rest-compat-test' + + // avoids a dependency problem in this test, the distribution in use here is inconsequential to the test + import org.elasticsearch.gradle.testclusters.TestDistribution; + + dependencies { + yamlRestTestImplementation "junit:junit:4.12" + } + + // can't actually spin up test cluster from this test + tasks.withType(Test).configureEach{ enabled = false } + """ + + String wrongApi = "wrong_version.json" + String wrongTest = "wrong_version.yml" + String additionalTest = "additional_test.yml" + setupRestResources([wrongApi], [wrongTest]) //setups up resources for current version, which should not be used for this test + addRestTestsToProject([additionalTest], "yamlRestCompatTest") + //intentionally adding to yamlRestTest source set since the .classes are copied from there + file("src/yamlRestTest/java/MockIT.java") << "import org.junit.Test;class MockIT { @Test public void doNothing() { }}" + + String api = "foo.json" + String test = "10_basic.yml" + //add the compatible test and api files, these are the prior version's normal yaml rest tests + file("distribution/bwc/minor/checkoutDir/rest-api-spec/src/main/resources/rest-api-spec/api/" + api) << "" + file("distribution/bwc/minor/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/" + test) << "" + + when: + def result = gradleRunner("yamlRestCompatTest").build() + + then: + result.task(':yamlRestCompatTest').outcome == TaskOutcome.SKIPPED + result.task(':copyRestCompatApiTask').outcome == TaskOutcome.SUCCESS + result.task(':copyRestCompatTestTask').outcome == TaskOutcome.SUCCESS + result.task(transformTask).outcome == TaskOutcome.SUCCESS + + file("/build/${specIntermediateDir}/rest-api-spec/api/" + api).exists() + file("/build/${testIntermediateDir}/original/rest-api-spec/test/" + test).exists() + file("/build/${testIntermediateDir}/transformed/rest-api-spec/test/" + test).exists() + file("/build/${testIntermediateDir}/original/rest-api-spec/test/" + test).exists() + file("/build/${testIntermediateDir}/transformed/rest-api-spec/test/" + test).exists() + file("/build/${testIntermediateDir}/transformed/rest-api-spec/test/" + test).text.contains("headers") //transformation adds this + file("/build/resources/yamlRestCompatTest/rest-api-spec/test/" + additionalTest).exists() + + //additionalTest is not copied from the prior version, and thus not in the intermediate directory, nor transformed + file("/build/resources/yamlRestCompatTest/" + testIntermediateDir + "/rest-api-spec/test/" + additionalTest).exists() == false + file("/build/resources/yamlRestCompatTest/rest-api-spec/test/" + additionalTest).text.contains("headers") == false + + file("/build/classes/java/yamlRestTest/MockIT.class").exists() //The "standard" runner is used to execute the compat test + + file("/build/resources/yamlRestCompatTest/rest-api-spec/api/" + wrongApi).exists() == false + file("/build/resources/yamlRestCompatTest/" + testIntermediateDir + "/rest-api-spec/test/" + wrongTest).exists() == false + file("/build/resources/yamlRestCompatTest/rest-api-spec/test/" + wrongTest).exists() == false + + result.task(':copyRestApiSpecsTask').outcome == TaskOutcome.NO_SOURCE + result.task(':copyYamlTestsTask').outcome == TaskOutcome.NO_SOURCE + + when: + result = gradleRunner("yamlRestCompatTest").build() + + then: + result.task(':yamlRestCompatTest').outcome == TaskOutcome.SKIPPED + result.task(':copyRestCompatApiTask').outcome == TaskOutcome.UP_TO_DATE + result.task(':copyRestCompatTestTask').outcome == TaskOutcome.UP_TO_DATE + result.task(transformTask).outcome == TaskOutcome.UP_TO_DATE + } + + def "yamlRestCompatTest is wired into check and checkRestCompat"() { + given: + + addSubProject(":distribution:bwc:minor") << """ + configurations { checkout } + artifacts { + checkout(new File(projectDir, "checkoutDir")) + } + """ + + buildFile << """ + plugins { + id 'elasticsearch.yaml-rest-compat-test' + } + + """ + + when: + def result = gradleRunner("check").build() + + then: + result.task(':check').outcome == TaskOutcome.UP_TO_DATE + result.task(':checkRestCompat').outcome == TaskOutcome.UP_TO_DATE + result.task(':yamlRestCompatTest').outcome == TaskOutcome.NO_SOURCE + result.task(':copyRestCompatApiTask').outcome == TaskOutcome.NO_SOURCE + result.task(':copyRestCompatTestTask').outcome == TaskOutcome.NO_SOURCE + result.task(transformTask).outcome == TaskOutcome.NO_SOURCE + + when: + buildFile << """ + ext.bwc_tests_enabled = false + """ + result = gradleRunner("check").build() + + then: + result.task(':check').outcome == TaskOutcome.UP_TO_DATE + result.task(':checkRestCompat').outcome == TaskOutcome.UP_TO_DATE + result.task(':yamlRestCompatTest').outcome == TaskOutcome.SKIPPED + result.task(':copyRestCompatApiTask').outcome == TaskOutcome.SKIPPED + result.task(':copyRestCompatTestTask').outcome == TaskOutcome.SKIPPED + result.task(transformTask).outcome == TaskOutcome.SKIPPED + } + + def "transform task executes and works as configured"() { + given: + internalBuild() + + addSubProject(":distribution:bwc:minor") << """ + configurations { checkout } + artifacts { + checkout(new File(projectDir, "checkoutDir")) + } + """ + + buildFile << """ + apply plugin: 'elasticsearch.yaml-rest-compat-test' + + // avoids a dependency problem in this test, the distribution in use here is inconsequential to the test + import org.elasticsearch.gradle.testclusters.TestDistribution; + + dependencies { + yamlRestTestImplementation "junit:junit:4.12" + } + tasks.named("transformV7RestTests").configure({ task -> + task.replaceValueInMatch("_type", "_doc") + task.replaceValueInMatch("_source.values", ["z", "x", "y"], "one") + task.removeMatch("_source.blah") + task.removeMatch("_source.junk", "two") + task.addMatch("_source.added", [name: 'jake', likes: 'cheese'], "one") + task.addWarning("one", "warning1", "warning2") + task.addWarningRegex("two", "regex warning here .* [a-z]") + task.addAllowedWarning("added allowed warning") + task.addAllowedWarningRegex("added allowed warning regex .* [0-9]") + task.removeWarning("one", "warning to remove") + task.replaceIsTrue("value_to_replace", "replaced_value") + task.replaceIsFalse("value_to_replace", "replaced_value") + task.replaceKeyInDo("do_.some.key_to_replace", "do_.some.key_that_was_replaced") + task.replaceKeyInMatch("match_.some.key_to_replace", "match_.some.key_that_was_replaced") + task.replaceKeyInLength("key.in_length_to_replace", "key.in_length_that_was_replaced") + }) + // can't actually spin up test cluster from this test + tasks.withType(Test).configureEach{ enabled = false } + """ + + setupRestResources([], []) + + file("distribution/bwc/minor/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/test.yml" ) << """ + "one": + - do: + do_.some.key_to_replace: + index: test + id: 1 + warnings: + - "warning to remove" + - match: { _source.values: ["foo"] } + - match: { _type: "_foo" } + - match: { _source.blah: 1234 } + - match: { _source.junk: true } + - match: { match_.some.key_to_replace: true } + - is_true: "value_to_replace" + - is_false: "value_to_replace" + - is_true: "value_not_to_replace" + - is_false: "value_not_to_replace" + - length: { key.in_length_to_replace: 1 } + --- + "two": + - do: + get: + index: test + id: 1 + - match: { _source.values: ["foo"] } + - match: { _type: "_foo" } + - match: { _source.blah: 1234 } + - match: { _source.junk: true } + - is_true: "value_to_replace" + - is_false: "value_to_replace" + - is_true: "value_not_to_replace" + - is_false: "value_not_to_replace" + + """.stripIndent() + when: + def result = gradleRunner("yamlRestCompatTest").build() + + then: + + result.task(transformTask).outcome == TaskOutcome.SUCCESS + + + file("/build/${testIntermediateDir}/transformed/rest-api-spec/test/test.yml" ).exists() + List actual = READER.readValues(file("/build/${testIntermediateDir}/transformed/rest-api-spec/test/test.yml")).readAll() + List expectedAll = READER.readValues( + """ + --- + setup: + - skip: + features: + - "headers" + - "warnings" + - "warnings_regex" + - "allowed_warnings" + - "allowed_warnings_regex" + --- + one: + - do: + do_.some.key_that_was_replaced: + index: "test" + id: 1 + warnings: + - "warning1" + - "warning2" + headers: + Content-Type: "application/vnd.elasticsearch+json;compatible-with=7" + Accept: "application/vnd.elasticsearch+json;compatible-with=7" + allowed_warnings: + - "added allowed warning" + allowed_warnings_regex: + - "added allowed warning regex .* [0-9]" + - match: + _source.values: + - "z" + - "x" + - "y" + - match: + _type: "_doc" + - match: {} + - match: + _source.junk: true + - match: + match_.some.key_that_was_replaced: true + - is_true: "replaced_value" + - is_false: "replaced_value" + - is_true: "value_not_to_replace" + - is_false: "value_not_to_replace" + - length: { key.in_length_that_was_replaced: 1 } + - match: + _source.added: + name: "jake" + likes: "cheese" + + --- + two: + - do: + get: + index: "test" + id: 1 + headers: + Content-Type: "application/vnd.elasticsearch+json;compatible-with=7" + Accept: "application/vnd.elasticsearch+json;compatible-with=7" + warnings_regex: + - "regex warning here .* [a-z]" + allowed_warnings: + - "added allowed warning" + allowed_warnings_regex: + - "added allowed warning regex .* [0-9]" + - match: + _source.values: + - "foo" + - match: + _type: "_doc" + - match: {} + - match: {} + - is_true: "replaced_value" + - is_false: "replaced_value" + - is_true: "value_not_to_replace" + - is_false: "value_not_to_replace" + """.stripIndent()).readAll() + + expectedAll.eachWithIndex{ ObjectNode expected, int i -> + if(expected != actual.get(i)) { + println("\nTransformed Test:") + SequenceWriter sequenceWriter = WRITER.writeValues(System.out) + for (ObjectNode transformedTest : actual) { + sequenceWriter.write(transformedTest) + } + sequenceWriter.close() + } + assert expected == actual.get(i) + } + + when: + result = gradleRunner(transformTask).build() + + then: + result.task(transformTask).outcome == TaskOutcome.UP_TO_DATE + + when: + buildFile.write(buildFile.text.replace("blah", "baz")) + result = gradleRunner(transformTask).build() + + then: + result.task(transformTask).outcome == TaskOutcome.SUCCESS + } + +} diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java similarity index 99% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java index 44ce9e3f44f5..f57dfa4ca97b 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java @@ -46,11 +46,8 @@ public class BuildPluginIT extends GradleIntegrationTestCase { public void testLicenseAndNotice() throws IOException { BuildResult result = getGradleRunner().withArguments("clean", "assemble").build(); - assertTaskSuccessful(result, ":assemble"); - assertBuildFileExists(result, projectName(), "distributions/elasticsearch.build.jar"); - try (ZipFile zipFile = new ZipFile(new File(getBuildDir(projectName()), "distributions/elasticsearch.build.jar"))) { ZipEntry licenseEntry = zipFile.getEntry("META-INF/LICENSE.txt"); ZipEntry noticeEntry = zipFile.getEntry("META-INF/NOTICE.txt"); diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java diff --git a/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java new file mode 100644 index 000000000000..0dc47b456ae1 --- /dev/null +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.test; + +import java.io.File; +import java.io.IOException; + +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.description.modifier.Ownership; +import net.bytebuddy.description.modifier.Visibility; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.dynamic.scaffold.InstrumentedType; +import net.bytebuddy.implementation.ExceptionMethod; +import net.bytebuddy.implementation.FixedValue; +import net.bytebuddy.implementation.Implementation; +import net.bytebuddy.implementation.bytecode.ByteCodeAppender; + +import static org.junit.Assert.fail; + +public class TestClasspathUtils { + + public static void setupJarJdkClasspath(File projectRoot) { + generateJdkJarHellCheck(projectRoot, FixedValue.value(TypeDescription.VOID)); + } + + public static void setupJarJdkClasspath(File projectRoot, String errorMessage) { + generateJdkJarHellCheck(projectRoot, + ExceptionMethod.throwing(IllegalStateException.class, errorMessage)); + } + + private static void generateJdkJarHellCheck(File projectRoot, Implementation mainImplementation) { + DynamicType.Unloaded dynamicType = new ByteBuddy() + .subclass(Object.class) + .name("org.elasticsearch.bootstrap.JdkJarHellCheck") + .defineMethod("main", void.class, Visibility.PUBLIC, Ownership.STATIC) + .withParameters(String[].class) + .intercept(mainImplementation) + .make(); + try { + dynamicType.toJar(targetFile(projectRoot)); + } catch (IOException e) { + e.printStackTrace(); + fail("Cannot setup jdk jar hell classpath"); + } + } + + private static File targetFile(File projectRoot) { + File targetFile = new File( + projectRoot, + "sample_jars/build/testrepo/org/elasticsearch/elasticsearch-core/current/elasticsearch-core-current.jar" + ); + + targetFile.getParentFile().mkdirs(); + return targetFile; + } + + + private static class InconsistentParameterReferenceMethod implements net.bytebuddy.implementation.Implementation { + @Override + public ByteCodeAppender appender(Target implementationTarget) { + return null; + } + + @Override + public InstrumentedType prepare(InstrumentedType instrumentedType) { + return null; + } + } + + public static class JdkJarHellBase { + public static void main(String[] args) { + System.out.println("args = " + args); + } + } +} diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java similarity index 99% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java index 6ecf6582e723..ae85c8d68131 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; import org.gradle.testkit.runner.BuildResult; diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java similarity index 55% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java index 5bd91e0bf3ac..5a3a968c3f6a 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; import org.gradle.testkit.runner.BuildResult; @@ -26,32 +26,33 @@ public class ThirdPartyAuditTaskIT extends GradleIntegrationTestCase { // Build the sample jars getGradleRunner().withArguments(":sample_jars:build", "-s").build(); // propagate jdkjarhell jar - setupJarJdkClasspath(getProjectDir()); } public void testElasticsearchIgnored() { BuildResult result = getGradleRunner().withArguments( - ":clean", - ":empty", - "-s", - "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=elasticsearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":empty", + "-s", + "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=elasticsearch.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).build(); assertTaskNoSource(result, ":empty"); assertNoDeprecationWarning(result); } public void testViolationFoundAndCompileOnlyIgnored() { + setupJarJdkClasspath(getProjectDir()); + BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=other.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=other.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileOnlyGroup=other.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=other.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); @@ -61,44 +62,49 @@ public class ThirdPartyAuditTaskIT extends GradleIntegrationTestCase { } public void testClassNotFoundAndCompileOnlyIgnored() { + setupJarJdkClasspath(getProjectDir()); BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:broken-log4j", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileGroup=other.gradle:broken-log4j", + "-PcompileVersion=0.0.1", + "-PcompileOnlyGroup=other.gradle:dummy-io", + "-PcompileOnlyVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); assertOutputContains( - result.getOutput(), - "Missing classes:", - " * org.apache.logging.log4j.LogManager", - "> Audit of third party dependencies failed" + result.getOutput(), + "Missing classes:", + " * org.apache.logging.log4j.LogManager", + "> Audit of third party dependencies failed" ); assertOutputMissing(result.getOutput(), "Classes with violations:"); assertNoDeprecationWarning(result); } public void testJarHellWithJDK() { + setupJarJdkClasspath(getProjectDir(), "> Audit of third party dependencies failed:" + + " Jar Hell with the JDK:" + + " * java.lang.String" + ); BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:jarhellJdk", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileGroup=other.gradle:jarhellJdk", + "-PcompileVersion=0.0.1", + "-PcompileOnlyGroup=other.gradle:dummy-io", + "-PcompileOnlyVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); assertOutputContains( - result.getOutput(), - "> Audit of third party dependencies failed:", - " Jar Hell with the JDK:", - " * java.lang.String" + result.getOutput(), + "> Audit of third party dependencies failed:", + " Jar Hell with the JDK:", + " * java.lang.String" ); assertOutputMissing(result.getOutput(), "Classes with violations:"); assertNoDeprecationWarning(result); @@ -106,13 +112,13 @@ public class ThirdPartyAuditTaskIT extends GradleIntegrationTestCase { public void testElasticsearchIgnoredWithViolations() { BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=elasticsearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=elasticsearch.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).build(); assertTaskNoSource(result, ":absurd"); assertNoDeprecationWarning(result); diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip diff --git a/buildSrc/src/main/groovy/elasticsearch.build-complete.gradle b/build-tools-internal/src/main/groovy/elasticsearch.build-complete.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.build-complete.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.build-complete.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.build-scan.gradle b/build-tools-internal/src/main/groovy/elasticsearch.build-scan.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.build-scan.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.build-scan.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.bwc-test.gradle b/build-tools-internal/src/main/groovy/elasticsearch.bwc-test.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.bwc-test.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.bwc-test.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.fips.gradle b/build-tools-internal/src/main/groovy/elasticsearch.fips.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.fips.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.fips.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.forbidden-dependencies.gradle b/build-tools-internal/src/main/groovy/elasticsearch.forbidden-dependencies.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.forbidden-dependencies.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.forbidden-dependencies.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.formatting.gradle b/build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle similarity index 98% rename from buildSrc/src/main/groovy/elasticsearch.formatting.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle index 881a14ae2a48..71819cf845e1 100644 --- a/buildSrc/src/main/groovy/elasticsearch.formatting.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle @@ -170,7 +170,7 @@ subprojects { target 'src/**/*.java' removeUnusedImports() - eclipse().configFile rootProject.file('buildSrc/formatterConfig.xml') + eclipse().configFile rootProject.file('build-tools-internal/formatterConfig.xml') trimTrailingWhitespace() // See CONTRIBUTING.md for details of when to enabled this. diff --git a/buildSrc/src/main/groovy/elasticsearch.ide.gradle b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle similarity index 94% rename from buildSrc/src/main/groovy/elasticsearch.ide.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.ide.gradle index 09c16adcb433..545f5fef2207 100644 --- a/buildSrc/src/main/groovy/elasticsearch.ide.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle @@ -13,17 +13,6 @@ import java.nio.file.Files import java.nio.file.Paths import java.nio.file.StandardCopyOption -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:0.7" - } -} - allprojects { apply plugin: 'idea' @@ -36,9 +25,9 @@ tasks.register('configureIdeCheckstyle') { group = 'ide' description = 'Generated a suitable checkstyle config for IDEs' - String checkstyleConfig = 'buildSrc/src/main/resources/checkstyle.xml' - String checkstyleSuppressions = 'buildSrc/src/main/resources/checkstyle_suppressions.xml' - String checkstyleIdeFragment = 'buildSrc/src/main/resources/checkstyle_ide_fragment.xml' + String checkstyleConfig = 'build-tools-internal/src/main/resources/checkstyle.xml' + String checkstyleSuppressions = 'build-tools-internal/src/main/resources/checkstyle_suppressions.xml' + String checkstyleIdeFragment = 'build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml' String checkstyleIdeConfig = "$rootDir/checkstyle_ide.xml" inputs.files(file(checkstyleConfig), file(checkstyleIdeFragment)) diff --git a/buildSrc/src/main/groovy/elasticsearch.local-distribution.gradle b/build-tools-internal/src/main/groovy/elasticsearch.local-distribution.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.local-distribution.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.local-distribution.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.run.gradle b/build-tools-internal/src/main/groovy/elasticsearch.run.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.run.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.run.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle similarity index 93% rename from buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle index 4aaa5e825587..9e1da136cd22 100644 --- a/buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle @@ -16,7 +16,7 @@ import org.elasticsearch.gradle.internal.info.BuildParams // apply plugin: 'elasticsearch.jdk-download' if (BuildParams.getIsRuntimeJavaHomeSet()) { - configure(allprojects - project(':build-tools')) { + configure(allprojects) { project.tasks.withType(Test).configureEach { Test test -> if (BuildParams.getIsRuntimeJavaHomeSet()) { test.executable = "${BuildParams.runtimeJavaHome}/bin/java" @@ -33,7 +33,7 @@ if (BuildParams.getIsRuntimeJavaHomeSet()) { } } - configure(allprojects - project(':build-tools')) { +configure(allprojects) { project.tasks.withType(Test).configureEach { Test test -> test.dependsOn(rootProject.jdks.provisioned_runtime) test.executable = rootProject.jdks.provisioned_runtime.getBinJavaPath() diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy similarity index 97% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy index 71ef7f0c306c..09077cb2a9ea 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy +++ b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy @@ -9,7 +9,6 @@ package org.elasticsearch.gradle.internal import org.apache.tools.ant.taskdefs.condition.Os -import org.elasticsearch.gradle.FixtureStop import org.elasticsearch.gradle.LoggedExec import org.elasticsearch.gradle.internal.test.AntFixture import org.gradle.api.file.FileSystemOperations diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/NodeInfo.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/NodeInfo.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/test/NodeInfo.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/test/NodeInfo.groovy diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java index 1de94522cb31..d45e3b623603 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java @@ -13,9 +13,9 @@ import nebula.plugin.info.InfoBrokerPlugin; import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; -import org.elasticsearch.gradle.precommit.PrecommitTaskPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTaskPlugin; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; @@ -49,7 +49,7 @@ import java.util.Objects; import java.util.function.Consumer; import java.util.stream.Stream; -import static org.elasticsearch.gradle.internal.util.Util.toStringable; +import static org.elasticsearch.gradle.internal.conventions.util.Util.toStringable; /** * A wrapper around Gradle's Java plugin that applies our common configuration. diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java index 13fbd8a30be7..7a7619e61f45 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java @@ -15,7 +15,7 @@ import org.elasticsearch.gradle.internal.test.SystemPropertyCommandLineArgumentP import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; import org.elasticsearch.gradle.internal.test.ErrorReportingTestListener; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; @@ -46,10 +46,6 @@ public class ElasticsearchTestBasePlugin implements Plugin { maybeConfigure(project.getTasks(), "test", Test.class, task -> task.include("**/*Tests.class")); // none of this stuff is applicable to the `:buildSrc` project tests - if (project.getPath().equals(":build-tools")) { - return; - } - File heapdumpDir = new File(project.getBuildDir(), "heapdump"); project.getTasks().withType(Test.class).configureEach(test -> { diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java similarity index 90% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java index c98d6110dc85..cc5a3bc2bcf2 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle; +package org.elasticsearch.gradle.internal; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java index d5e410129453..5a84538a6bd9 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java @@ -10,7 +10,7 @@ package org.elasticsearch.gradle.internal; import org.apache.commons.io.FileUtils; import org.elasticsearch.gradle.LoggedExec; -import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Plugin; @@ -123,7 +123,7 @@ public class InternalBwcGitPlugin implements Plugin { spec.commandLine("git", "checkout", effectiveRefSpec); }); - String checkoutHash = GlobalBuildInfoPlugin.gitInfo(checkoutDir).getRevision(); + String checkoutHash = GitInfo.gitInfo(checkoutDir).getRevision(); logger.lifecycle("Checkout hash for {} is {}", project.getPath(), checkoutHash); writeFile(new File(project.getBuildDir(), "refspec"), checkoutHash); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java index 358fc62cfdd3..3c6bc089274b 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal; import org.elasticsearch.gradle.VersionProperties; +import org.elasticsearch.gradle.internal.conventions.LicensingPlugin; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; @@ -28,8 +29,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; - -import static org.elasticsearch.gradle.internal.util.Util.capitalize; +import org.elasticsearch.gradle.internal.conventions.GUtils; public class InternalDistributionArchiveCheckPlugin implements InternalPlugin { @@ -43,6 +43,7 @@ public class InternalDistributionArchiveCheckPlugin implements InternalPlugin { @Override public void apply(Project project) { project.getPlugins().apply(BasePlugin.class); + project.getPlugins().apply(LicensingPlugin.class); String buildTaskName = calculateBuildTask(project.getName()); TaskProvider buildDistTask = project.getParent().getTasks().named(buildTaskName); DistributionArchiveCheckExtension distributionArchiveCheckExtension = project.getExtensions() @@ -238,7 +239,7 @@ public class InternalDistributionArchiveCheckPlugin implements InternalPlugin { } private String calculateBuildTask(String projectName) { - return "build" + Arrays.stream(projectName.split("-")).map(f -> capitalize(f)).collect(Collectors.joining()); + return "build" + Arrays.stream(projectName.split("-")).map(f -> GUtils.capitalize(f)).collect(Collectors.joining()); } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java index b4ce2ff41ae2..182c8145b0db 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java @@ -20,8 +20,8 @@ import org.gradle.api.tasks.bundling.Compression; import org.gradle.api.tasks.bundling.Zip; import java.io.File; +import static org.elasticsearch.gradle.internal.conventions.GUtils.capitalize; -import static org.elasticsearch.gradle.internal.util.Util.capitalize; import static org.gradle.api.internal.artifacts.ArtifactAttributes.ARTIFACT_FORMAT; /** diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java similarity index 86% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java index e6285626999e..a1a86b2a66b2 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java @@ -11,12 +11,16 @@ package org.elasticsearch.gradle.internal; import groovy.lang.Closure; import org.elasticsearch.gradle.internal.precommit.TestingConventionsTasks; import org.elasticsearch.gradle.internal.test.RestTestBasePlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.elasticsearch.gradle.plugin.PluginBuildPlugin; import org.elasticsearch.gradle.plugin.PluginPropertiesExtension; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.tasks.bundling.Zip; +import org.gradle.api.tasks.TaskProvider; +import org.gradle.api.tasks.TaskContainer; +import org.gradle.api.Task; +import java.io.File; import java.util.Optional; @@ -32,7 +36,7 @@ public class InternalPluginBuildPlugin implements InternalPlugin { project.getConfigurations().getByName("testImplementation").getDependencies().clear(); project.getPluginManager().apply(RestTestBasePlugin.class); - var extension = project.getExtensions().getByType(PluginPropertiesExtension.class); + PluginPropertiesExtension extension = project.getExtensions().getByType(PluginPropertiesExtension.class); // We've ported this from multiple build scripts where we see this pattern into // an extension method as a first step of consolidation. @@ -43,7 +47,7 @@ public class InternalPluginBuildPlugin implements InternalPlugin { public void doCall(Object it) { project.afterEvaluate(project1 -> { // let check depend on check tasks of qa sub-projects - final var checkTaskProvider = project1.getTasks().named("check"); + final TaskProvider checkTaskProvider = project1.getTasks().named("check"); Optional qaSubproject = project1.getSubprojects() .stream() .filter(p -> p.getPath().equals(project1.getPath() + ":qa")) @@ -84,8 +88,8 @@ public class InternalPluginBuildPlugin implements InternalPlugin { * Configure the pom for the main jar of this plugin */ protected static void addNoticeGeneration(final Project project, PluginPropertiesExtension extension) { - final var licenseFile = extension.getLicenseFile(); - var tasks = project.getTasks(); + final File licenseFile = extension.getLicenseFile(); + TaskContainer tasks = project.getTasks(); if (licenseFile != null) { tasks.withType(Zip.class).named("bundlePlugin").configure(zip -> zip.from(licenseFile.getParentFile(), copySpec -> { copySpec.include(licenseFile.getName()); @@ -93,9 +97,9 @@ public class InternalPluginBuildPlugin implements InternalPlugin { })); } - final var noticeFile = extension.getNoticeFile(); + final File noticeFile = extension.getNoticeFile(); if (noticeFile != null) { - final var generateNotice = tasks.register("generateNotice", NoticeTask.class, noticeTask -> { + final TaskProvider generateNotice = tasks.register("generateNotice", NoticeTask.class, noticeTask -> { noticeTask.setInputFile(noticeFile); noticeTask.source(Util.getJavaMainSourceSet(project).get().getAllJava()); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java similarity index 75% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java index 21332013a6ce..e0da9de8f525 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java @@ -25,7 +25,6 @@ import java.util.regex.Pattern; public class RepositoriesSetupPlugin implements Plugin { - private static final List SECURE_URL_SCHEMES = Arrays.asList("file", "https", "s3"); private static final Pattern LUCENE_SNAPSHOT_REGEX = Pattern.compile("\\w+-snapshot-([a-z0-9]+)"); @Override @@ -66,24 +65,4 @@ public class RepositoriesSetupPlugin implements Plugin { }); } } - - private static void assertRepositoryURIIsSecure(final String repositoryName, final String projectPath, final URI uri) { - if (uri != null && SECURE_URL_SCHEMES.contains(uri.getScheme()) == false && uri.getHost().equals("localhost") == false) { - String url; - try { - url = uri.toURL().toString(); - } catch (MalformedURLException e) { - throw new IllegalStateException(e); - } - final String message = String.format( - Locale.ROOT, - "repository [%s] on project with path [%s] is not using a secure protocol for artifacts on [%s]", - repositoryName, - projectPath, - url - ); - throw new GradleException(message); - } - } - } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java similarity index 72% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java index 9c38b5d29bd9..2bd7309f5d28 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java @@ -10,7 +10,9 @@ package org.elasticsearch.gradle.internal.info; import org.apache.commons.io.IOUtils; import org.elasticsearch.gradle.internal.BwcVersions; import org.elasticsearch.gradle.OS; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; +import org.elasticsearch.gradle.internal.conventions.info.ParallelDetector; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.GradleException; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; @@ -26,6 +28,7 @@ import org.gradle.internal.jvm.inspection.JvmVendor; import org.gradle.jvm.toolchain.internal.InstallationLocation; import org.gradle.jvm.toolchain.internal.JavaInstallationRegistry; import org.gradle.util.GradleVersion; +import org.jetbrains.annotations.NotNull; import javax.inject.Inject; import java.io.BufferedReader; @@ -34,22 +37,17 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -79,22 +77,22 @@ public class GlobalBuildInfoPlugin implements Plugin { if (project != project.getRootProject()) { throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); } - GradleVersion minimumGradleVersion = GradleVersion.version(Util.getResourceContents("/minimumGradleVersion")); + GradleVersion minimumGradleVersion = GradleVersion.version(getResourceContents("/minimumGradleVersion")); if (GradleVersion.current().compareTo(minimumGradleVersion) < 0) { throw new GradleException("Gradle " + minimumGradleVersion.getVersion() + "+ is required"); } - JavaVersion minimumCompilerVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumCompilerVersion")); - JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumRuntimeVersion")); + JavaVersion minimumCompilerVersion = JavaVersion.toVersion(getResourceContents("/minimumCompilerVersion")); + JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(getResourceContents("/minimumRuntimeVersion")); File runtimeJavaHome = findRuntimeJavaHome(); File rootDir = project.getRootDir(); - GitInfo gitInfo = gitInfo(rootDir); + GitInfo gitInfo = GitInfo.gitInfo(rootDir); BuildParams.init(params -> { // Initialize global build parameters - boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null; + boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null && explicitDisabledInternal(project) == false; params.reset(); params.setRuntimeJavaHome(runtimeJavaHome); @@ -112,7 +110,7 @@ public class GlobalBuildInfoPlugin implements Plugin { params.setTestSeed(getTestSeed()); params.setIsCi(System.getenv("JENKINS_URL") != null); params.setIsInternal(isInternal); - params.setDefaultParallel(findDefaultParallel(project)); + params.setDefaultParallel(ParallelDetector.findDefaultParallel(project)); params.setInFipsJvm(Util.getBooleanProperty("tests.fips.enabled", false)); params.setIsSnapshotBuild(Util.getBooleanProperty("build.snapshot", true)); if (isInternal) { @@ -127,6 +125,14 @@ public class GlobalBuildInfoPlugin implements Plugin { project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo()); } + @NotNull + private Boolean explicitDisabledInternal(Project project) { + return project.getProviders().systemProperty("test.external") + .forUseAtConfigurationTime() + .map(sysProp -> sysProp.equals("true")) + .getOrElse(false); + } + private String formatJavaVendorDetails(JvmInstallationMetadata runtimeJdkMetaData) { JvmVendor vendor = runtimeJdkMetaData.getVendor(); return runtimeJdkMetaData.getVendor().getKnownVendor().name() + "/" + vendor.getRawVendor(); @@ -354,134 +360,23 @@ public class GlobalBuildInfoPlugin implements Plugin { return _defaultParallel; } - public static GitInfo gitInfo(File rootDir) { - try { - /* - * We want to avoid forking another process to run git rev-parse HEAD. Instead, we will read the refs manually. The - * documentation for this follows from https://git-scm.com/docs/gitrepository-layout and https://git-scm.com/docs/git-worktree. - * - * There are two cases to consider: - * - a plain repository with .git directory at the root of the working tree - * - a worktree with a plain text .git file at the root of the working tree - * - * In each case, our goal is to parse the HEAD file to get either a ref or a bare revision (in the case of being in detached - * HEAD state). - * - * In the case of a plain repository, we can read the HEAD file directly, resolved directly from the .git directory. - * - * In the case of a worktree, we read the gitdir from the plain text .git file. This resolves to a directory from which we read - * the HEAD file and resolve commondir to the plain git repository. - */ - final Path dotGit = rootDir.toPath().resolve(".git"); - final String revision; - if (Files.exists(dotGit) == false) { - return new GitInfo("unknown", "unknown"); - } - final Path head; - final Path gitDir; - if (Files.isDirectory(dotGit)) { - // this is a git repository, we can read HEAD directly - head = dotGit.resolve("HEAD"); - gitDir = dotGit; - } else { - // this is a git worktree, follow the pointer to the repository - final Path workTree = Paths.get(readFirstLine(dotGit).substring("gitdir:".length()).trim()); - if (Files.exists(workTree) == false) { - return new GitInfo("unknown", "unknown"); - } - head = workTree.resolve("HEAD"); - final Path commonDir = Paths.get(readFirstLine(workTree.resolve("commondir"))); - if (commonDir.isAbsolute()) { - gitDir = commonDir; - } else { - // this is the common case - gitDir = workTree.resolve(commonDir); + public static String getResourceContents(String resourcePath) { + try ( + BufferedReader reader = new BufferedReader(new InputStreamReader(GlobalBuildInfoPlugin.class.getResourceAsStream(resourcePath))) + ) { + StringBuilder b = new StringBuilder(); + for (String line = reader.readLine(); line != null; line = reader.readLine()) { + if (b.length() != 0) { + b.append('\n'); } + b.append(line); } - final String ref = readFirstLine(head); - if (ref.startsWith("ref:")) { - String refName = ref.substring("ref:".length()).trim(); - Path refFile = gitDir.resolve(refName); - if (Files.exists(refFile)) { - revision = readFirstLine(refFile); - } else if (Files.exists(gitDir.resolve("packed-refs"))) { - // Check packed references for commit ID - Pattern p = Pattern.compile("^([a-f0-9]{40}) " + refName + "$"); - try (Stream lines = Files.lines(gitDir.resolve("packed-refs"))) { - revision = lines.map(p::matcher) - .filter(Matcher::matches) - .map(m -> m.group(1)) - .findFirst() - .orElseThrow(() -> new IOException("Packed reference not found for refName " + refName)); - } - } else { - throw new GradleException("Can't find revision for refName " + refName); - } - } else { - // we are in detached HEAD state - revision = ref; - } - return new GitInfo(revision, findOriginUrl(gitDir.resolve("config"))); - } catch (final IOException e) { - // for now, do not be lenient until we have better understanding of real-world scenarios where this happens - throw new GradleException("unable to read the git revision", e); + + return b.toString(); + } catch (IOException e) { + throw new UncheckedIOException("Error trying to read classpath resource: " + resourcePath, e); } } - private static String findOriginUrl(final Path configFile) throws IOException { - Map props = new HashMap<>(); - try (Stream stream = Files.lines(configFile, StandardCharsets.UTF_8)) { - Iterator lines = stream.iterator(); - boolean foundOrigin = false; - while (lines.hasNext()) { - String line = lines.next().trim(); - if (line.startsWith(";") || line.startsWith("#")) { - // ignore comments - continue; - } - if (foundOrigin) { - if (line.startsWith("[")) { - // we're on to the next config item so stop looking - break; - } - String[] pair = line.trim().split("="); - props.put(pair[0].trim(), pair[1].trim()); - } else { - if (line.equals("[remote \"origin\"]")) { - foundOrigin = true; - } - } - } - } - - String originUrl = props.get("url"); - return originUrl == null ? "unknown" : originUrl; - } - - private static String readFirstLine(final Path path) throws IOException { - String firstLine; - try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { - firstLine = lines.findFirst().orElseThrow(() -> new IOException("file [" + path + "] is empty")); - } - return firstLine; - } - - public static class GitInfo { - private final String revision; - private final String origin; - - GitInfo(String revision, String origin) { - this.revision = revision; - this.origin = origin; - } - - public String getRevision() { - return revision; - } - - public String getOrigin() { - return origin; - } - } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java similarity index 88% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java index b03a0d2c5053..d2baacc11445 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java @@ -10,9 +10,10 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; +import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.dsl.DependencyHandler; @@ -25,6 +26,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; import java.net.JarURLConnection; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; import java.nio.file.StandardCopyOption; @@ -86,7 +89,7 @@ public class CheckstylePrecommitPlugin extends PrecommitPlugin implements Intern DependencyHandler dependencies = project.getDependencies(); String checkstyleVersion = VersionProperties.getVersions().get("checkstyle"); dependencies.add("checkstyle", "com.puppycrawl.tools:checkstyle:" + checkstyleVersion); - dependencies.add("checkstyle", project.files(Util.getBuildSrcCodeSource())); + dependencies.add("checkstyle", project.files(getBuildSrcCodeSource())); project.getTasks().withType(Checkstyle.class).configureEach(t -> { t.dependsOn(copyCheckstyleConf); @@ -95,4 +98,12 @@ public class CheckstylePrecommitPlugin extends PrecommitPlugin implements Intern return checkstyleTask; } + + private static URI getBuildSrcCodeSource() { + try { + return CheckstylePrecommitPlugin.class.getProtectionDomain().getCodeSource().getLocation().toURI(); + } catch (URISyntaxException e) { + throw new GradleException("Error determining build tools JAR location", e); + } + } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java similarity index 96% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java index 748553349dc9..669ecc0eb2de 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java @@ -10,7 +10,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java index a371fc38cfcd..df39b9088c97 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java index ce74a0450e34..24d5bb7177e0 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java @@ -14,7 +14,7 @@ import groovy.lang.Closure; import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.JavaVersion; import org.gradle.api.Project; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java index b26a2b109abe..4a3a4f0c5745 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java similarity index 78% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java index d74c03fc161c..5eaf30ef55dc 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java @@ -8,8 +8,7 @@ package org.elasticsearch.gradle.internal.precommit; -import org.elasticsearch.gradle.internal.info.BuildParams; -import org.elasticsearch.gradle.precommit.PrecommitTasks; +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin; import org.gradle.api.Project; /** @@ -21,13 +20,7 @@ public class InternalPrecommitTasks { * Adds a precommit task, which depends on non-test verification tasks. */ public static void create(Project project, boolean includeDependencyLicenses) { - PrecommitTasks.create(project); - if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { - // ideally we would configure this as a default dependency. But Default dependencies do not work correctly - // with gradle project dependencies as they're resolved to late in the build and don't setup according task - // dependencies properly - project.getDependencies().add("jarHell", project.project(":libs:elasticsearch-core")); - } + project.getPluginManager().apply(JarHellPrecommitPlugin.class); project.getPluginManager().apply(ThirdPartyAuditPrecommitPlugin.class); project.getPluginManager().apply(CheckstylePrecommitPlugin.class); project.getPluginManager().apply(ForbiddenApisPrecommitPlugin.class); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java new file mode 100644 index 000000000000..3efd37b85bb0 --- /dev/null +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.precommit; + +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.info.BuildParams; +import org.elasticsearch.gradle.jarhell.JarHellPlugin; +import org.elasticsearch.gradle.jarhell.JarHellTask; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.tasks.TaskProvider; + +public class JarHellPrecommitPlugin extends PrecommitPlugin { + @Override + public TaskProvider createTask(Project project) { + project.getPluginManager().apply(JarHellPlugin.class); + + if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { + // ideally we would configure this as a default dependency. But Default dependencies do not work correctly + // with gradle project dependencies as they're resolved to late in the build and don't setup according task + // dependencies properly + project.getDependencies().add("jarHell", project.project(":libs:elasticsearch-core")); + } + + return project.getTasks().withType(JarHellTask.class).named("jarHell"); + } +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java index 1f1e458f97cd..2e52346a10b1 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java index 89020f87e297..69487778ebce 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.LoggedExec; -import org.elasticsearch.gradle.precommit.PrecommitTask; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTask; import org.gradle.api.file.FileCollection; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.CacheableTask; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java index 8f4af8616b6e..48c40ba65f95 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.tasks.TaskProvider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java index 7e4e18b49ec2..0177564e6ebb 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import groovy.lang.Closure; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.DefaultTask; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java index 137953596d40..11a8b3b0a904 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java @@ -12,7 +12,7 @@ import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java index 138b3148dce8..76c105be7ab8 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Project; import org.gradle.api.provider.Provider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java index f19c02f81c03..e36ee9d4bb8d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java @@ -13,8 +13,8 @@ import org.elasticsearch.gradle.DistributionDownloadPlugin; import org.elasticsearch.gradle.ElasticsearchDistribution; import org.elasticsearch.gradle.ElasticsearchDistribution.Platform; import org.elasticsearch.gradle.ElasticsearchDistributionType; -import org.elasticsearch.gradle.internal.Jdk; -import org.elasticsearch.gradle.internal.JdkDownloadPlugin; +import org.elasticsearch.gradle.Jdk; +import org.elasticsearch.gradle.JdkDownloadPlugin; import org.elasticsearch.gradle.Version; import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.docker.DockerSupportPlugin; @@ -22,9 +22,10 @@ import org.elasticsearch.gradle.internal.docker.DockerSupportService; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalDistributionDownloadPlugin; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.elasticsearch.gradle.internal.vagrant.VagrantBasePlugin; import org.elasticsearch.gradle.internal.vagrant.VagrantExtension; +import org.elasticsearch.gradle.internal.conventions.GUtils; import org.gradle.api.Action; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Plugin; @@ -265,7 +266,7 @@ public class DistroTestPlugin implements Plugin { jdk.setPlatform(platform); jdk.setArchitecture(architecture); - String taskname = "copy" + Util.capitalize(platform) + Util.capitalize(purpose) + "Jdk"; + String taskname = "copy" + GUtils.capitalize(platform) + GUtils.capitalize(purpose) + "Jdk"; TaskProvider copyTask = project.getTasks().register(taskname, Copy.class); copyTask.configure(t -> { t.from(jdk); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java index 824153764da3..ae6b7e70343a 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.test; import org.elasticsearch.gradle.internal.ElasticsearchTestBasePlugin; -import org.elasticsearch.gradle.FixtureStop; +import org.elasticsearch.gradle.internal.FixtureStop; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java index f4f5e26ace2f..86e0aa19b168 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java @@ -14,7 +14,6 @@ import org.elasticsearch.gradle.internal.RepositoriesSetupPlugin; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; import org.elasticsearch.gradle.internal.precommit.InternalPrecommitTasks; -import org.elasticsearch.gradle.precommit.PrecommitTasks; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; import org.gradle.api.InvalidUserDataException; import org.gradle.api.Plugin; @@ -87,6 +86,6 @@ public class StandaloneRestTestPlugin implements Plugin { "TEST", Map.of("plus", Arrays.asList(project.getConfigurations().getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME))) ); - BuildParams.withInternalBuild(() -> InternalPrecommitTasks.create(project, false)).orElse(() -> PrecommitTasks.create(project)); + BuildParams.withInternalBuild(() -> InternalPrecommitTasks.create(project, false)); } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java index c748532f828d..80b7144e45e3 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java @@ -16,7 +16,7 @@ import org.elasticsearch.gradle.internal.precommit.ForbiddenPatternsTask; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.TestClustersAware; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Plugin; import org.gradle.api.Project; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java index 4ee6cf90ac1f..18b8d7076415 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaders.java @@ -147,4 +147,4 @@ public class InjectHeaders implements RestTestTransformByObjectKey, RestTestTran skipNode.set("skip", featuresNode); } } -} +} \ No newline at end of file diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByObjectKey.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByObjectKey.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByObjectKey.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByObjectKey.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java index 757db5719f23..df2bcc3e2a96 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java @@ -12,7 +12,7 @@ import org.apache.commons.io.output.TeeOutputStream; import org.elasticsearch.gradle.LoggedExec; import org.elasticsearch.gradle.internal.LoggingOutputStream; import org.elasticsearch.gradle.ReaperService; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.provider.Provider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/test/JNAKernel32Library.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/test/JNAKernel32Library.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/test/JNAKernel32Library.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/test/JNAKernel32Library.java diff --git a/buildSrc/src/main/resources/buildSrc.marker b/build-tools-internal/src/main/resources/buildSrc.marker similarity index 100% rename from buildSrc/src/main/resources/buildSrc.marker rename to build-tools-internal/src/main/resources/buildSrc.marker diff --git a/buildSrc/src/main/resources/cacerts.bcfks b/build-tools-internal/src/main/resources/cacerts.bcfks similarity index 100% rename from buildSrc/src/main/resources/cacerts.bcfks rename to build-tools-internal/src/main/resources/cacerts.bcfks diff --git a/buildSrc/src/main/resources/checkstyle.xml b/build-tools-internal/src/main/resources/checkstyle.xml similarity index 100% rename from buildSrc/src/main/resources/checkstyle.xml rename to build-tools-internal/src/main/resources/checkstyle.xml diff --git a/buildSrc/src/main/resources/checkstyle_ide_fragment.xml b/build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml similarity index 100% rename from buildSrc/src/main/resources/checkstyle_ide_fragment.xml rename to build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/build-tools-internal/src/main/resources/checkstyle_suppressions.xml similarity index 96% rename from buildSrc/src/main/resources/checkstyle_suppressions.xml rename to build-tools-internal/src/main/resources/checkstyle_suppressions.xml index b51ae0e2fb82..0d60afafd467 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/build-tools-internal/src/main/resources/checkstyle_suppressions.xml @@ -48,5 +48,5 @@ - + diff --git a/buildSrc/src/main/resources/deb/README b/build-tools-internal/src/main/resources/deb/README similarity index 100% rename from buildSrc/src/main/resources/deb/README rename to build-tools-internal/src/main/resources/deb/README diff --git a/buildSrc/src/main/resources/deb/conffiles.ftl b/build-tools-internal/src/main/resources/deb/conffiles.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/conffiles.ftl rename to build-tools-internal/src/main/resources/deb/conffiles.ftl diff --git a/buildSrc/src/main/resources/deb/postinst.ftl b/build-tools-internal/src/main/resources/deb/postinst.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/postinst.ftl rename to build-tools-internal/src/main/resources/deb/postinst.ftl diff --git a/buildSrc/src/main/resources/deb/preinst.ftl b/build-tools-internal/src/main/resources/deb/preinst.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/preinst.ftl rename to build-tools-internal/src/main/resources/deb/preinst.ftl diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs diff --git a/buildSrc/src/main/resources/elasticsearch.properties b/build-tools-internal/src/main/resources/elasticsearch.properties similarity index 100% rename from buildSrc/src/main/resources/elasticsearch.properties rename to build-tools-internal/src/main/resources/elasticsearch.properties diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_11.policy b/build-tools-internal/src/main/resources/fips_java.policy similarity index 100% rename from buildSrc/src/main/resources/fips_java_bcjsse_11.policy rename to build-tools-internal/src/main/resources/fips_java.policy diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_11.security b/build-tools-internal/src/main/resources/fips_java.security similarity index 100% rename from buildSrc/src/main/resources/fips_java_bcjsse_11.security rename to build-tools-internal/src/main/resources/fips_java.security diff --git a/build-tools-internal/src/main/resources/fips_java_bcjsse_11.policy b/build-tools-internal/src/main/resources/fips_java_bcjsse_11.policy new file mode 100644 index 000000000000..af4f62eaf009 --- /dev/null +++ b/build-tools-internal/src/main/resources/fips_java_bcjsse_11.policy @@ -0,0 +1,18 @@ +// Security Policy for JDK 11 and higher, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode + +grant { + permission java.security.SecurityPermission "putProviderProperty.BCFIPS"; + permission java.security.SecurityPermission "putProviderProperty.BCJSSE"; + permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.util.PropertyPermission "java.runtime.name", "read"; + permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAlgorithmsEnabled"; + //io.netty.handler.codec.DecoderException + permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; + //java.security.InvalidAlgorithmParameterException: Cannot process GCMParameterSpec + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.util.PropertyPermission "intellij.debug.agent", "read"; + permission java.util.PropertyPermission "intellij.debug.agent", "write"; + permission org.bouncycastle.crypto.CryptoServicesPermission "exportSecretKey"; + permission org.bouncycastle.crypto.CryptoServicesPermission "exportPrivateKey"; + permission java.io.FilePermission "${javax.net.ssl.trustStore}", "read"; +}; diff --git a/build-tools-internal/src/main/resources/fips_java_bcjsse_11.security b/build-tools-internal/src/main/resources/fips_java_bcjsse_11.security new file mode 100644 index 000000000000..e6a025e7eb10 --- /dev/null +++ b/build-tools-internal/src/main/resources/fips_java_bcjsse_11.security @@ -0,0 +1,53 @@ +# Security Properties for JDK 11 and higher, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode + +security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider C:HYBRID;ENABLE{All}; +security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS +security.provider.3=SUN +security.provider.4=SunJGSS +securerandom.source=file:/dev/urandom +securerandom.strongAlgorithms=NativePRNGBlocking:SUN,DRBG:SUN +securerandom.drbg.config= +login.configuration.provider=sun.security.provider.ConfigFile +policy.provider=sun.security.provider.PolicyFile +policy.expandProperties=true +policy.allowSystemProperty=true +policy.ignoreIdentityScope=false +keystore.type=BCFKS +keystore.type.compat=true +package.access=sun.misc.,\ + sun.reflect. +package.definition=sun.misc.,\ + sun.reflect. +security.overridePropertiesFile=true +ssl.KeyManagerFactory.algorithm=PKIX +ssl.TrustManagerFactory.algorithm=PKIX +networkaddress.cache.negative.ttl=10 +krb5.kdc.bad.policy = tryLast +jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ + RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 +jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ + DSA keySize < 1024 +jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ + EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC +jdk.tls.legacyAlgorithms= \ + K_NULL, C_NULL, M_NULL, \ + DH_anon, ECDH_anon, \ + RC4_128, RC4_40, DES_CBC, DES40_CBC, \ + 3DES_EDE_CBC +jdk.tls.keyLimits=AES/GCM/NoPadding KeyUpdate 2^37 +crypto.policy=unlimited +jdk.xml.dsig.secureValidationPolicy=\ + disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ + disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ + maxTransforms 5,\ + maxReferences 30,\ + disallowReferenceUriSchemes file http https,\ + minKeySize RSA 1024,\ + minKeySize DSA 1024,\ + minKeySize EC 224,\ + noDuplicateIds,\ + noRetrievalMethodLoops +jceks.key.serialFilter = java.base/java.lang.Enum;java.base/java.security.KeyRep;\ + java.base/java.security.KeyRep$Type;java.base/javax.crypto.spec.SecretKeySpec;!* diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_8.policy b/build-tools-internal/src/main/resources/fips_java_bcjsse_8.policy similarity index 100% rename from buildSrc/src/main/resources/fips_java_bcjsse_8.policy rename to build-tools-internal/src/main/resources/fips_java_bcjsse_8.policy diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_8.security b/build-tools-internal/src/main/resources/fips_java_bcjsse_8.security similarity index 100% rename from buildSrc/src/main/resources/fips_java_bcjsse_8.security rename to build-tools-internal/src/main/resources/fips_java_bcjsse_8.security diff --git a/buildSrc/src/main/resources/fips_java_oracle.security b/build-tools-internal/src/main/resources/fips_java_oracle.security similarity index 100% rename from buildSrc/src/main/resources/fips_java_oracle.security rename to build-tools-internal/src/main/resources/fips_java_oracle.security diff --git a/buildSrc/src/main/resources/fips_java_sunjsse.policy b/build-tools-internal/src/main/resources/fips_java_sunjsse.policy similarity index 100% rename from buildSrc/src/main/resources/fips_java_sunjsse.policy rename to build-tools-internal/src/main/resources/fips_java_sunjsse.policy diff --git a/buildSrc/src/main/resources/fips_java_sunjsse.security b/build-tools-internal/src/main/resources/fips_java_sunjsse.security similarity index 100% rename from buildSrc/src/main/resources/fips_java_sunjsse.security rename to build-tools-internal/src/main/resources/fips_java_sunjsse.security diff --git a/buildSrc/src/main/resources/forbidden/es-all-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-all-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/es-server-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-server-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-server-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-server-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/es-test-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-test-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-test-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-test-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/http-signatures.txt b/build-tools-internal/src/main/resources/forbidden/http-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/http-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/http-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/jdk-signatures.txt b/build-tools-internal/src/main/resources/forbidden/jdk-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/jdk-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/jdk-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/snakeyaml-signatures.txt b/build-tools-internal/src/main/resources/forbidden/snakeyaml-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/snakeyaml-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/snakeyaml-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/third-party-audit.txt b/build-tools-internal/src/main/resources/forbidden/third-party-audit.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/third-party-audit.txt rename to build-tools-internal/src/main/resources/forbidden/third-party-audit.txt diff --git a/buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt b/build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt similarity index 100% rename from buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt rename to build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt diff --git a/buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt b/build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt similarity index 100% rename from buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt rename to build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt diff --git a/buildSrc/src/main/resources/minimumCompilerVersion b/build-tools-internal/src/main/resources/minimumCompilerVersion similarity index 100% rename from buildSrc/src/main/resources/minimumCompilerVersion rename to build-tools-internal/src/main/resources/minimumCompilerVersion diff --git a/buildSrc/src/main/resources/minimumGradleVersion b/build-tools-internal/src/main/resources/minimumGradleVersion similarity index 100% rename from buildSrc/src/main/resources/minimumGradleVersion rename to build-tools-internal/src/main/resources/minimumGradleVersion diff --git a/buildSrc/src/main/resources/minimumRuntimeVersion b/build-tools-internal/src/main/resources/minimumRuntimeVersion similarity index 100% rename from buildSrc/src/main/resources/minimumRuntimeVersion rename to build-tools-internal/src/main/resources/minimumRuntimeVersion diff --git a/buildSrc/src/main/resources/test/ssl/README.md b/build-tools-internal/src/main/resources/test/ssl/README.md similarity index 100% rename from buildSrc/src/main/resources/test/ssl/README.md rename to build-tools-internal/src/main/resources/test/ssl/README.md diff --git a/buildSrc/src/main/resources/test/ssl/test-client.crt b/build-tools-internal/src/main/resources/test/ssl/test-client.crt similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.crt rename to build-tools-internal/src/main/resources/test/ssl/test-client.crt diff --git a/buildSrc/src/main/resources/test/ssl/test-client.jks b/build-tools-internal/src/main/resources/test/ssl/test-client.jks similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.jks rename to build-tools-internal/src/main/resources/test/ssl/test-client.jks diff --git a/buildSrc/src/main/resources/test/ssl/test-client.key b/build-tools-internal/src/main/resources/test/ssl/test-client.key similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.key rename to build-tools-internal/src/main/resources/test/ssl/test-client.key diff --git a/buildSrc/src/main/resources/test/ssl/test-node.crt b/build-tools-internal/src/main/resources/test/ssl/test-node.crt similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.crt rename to build-tools-internal/src/main/resources/test/ssl/test-node.crt diff --git a/buildSrc/src/main/resources/test/ssl/test-node.jks b/build-tools-internal/src/main/resources/test/ssl/test-node.jks similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.jks rename to build-tools-internal/src/main/resources/test/ssl/test-node.jks diff --git a/buildSrc/src/main/resources/test/ssl/test-node.key b/build-tools-internal/src/main/resources/test/ssl/test-node.key similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.key rename to build-tools-internal/src/main/resources/test/ssl/test-node.key diff --git a/buildSrc/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy b/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy similarity index 100% rename from buildSrc/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy rename to build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/VersionTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/VersionTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java similarity index 90% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java index 76a276819cf3..7123ba4d8290 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/InjectHeaderTests.java @@ -37,10 +37,10 @@ public class InjectHeaderTests extends GradleUnitTestCase { private static final YAMLFactory yaml = new YAMLFactory(); private static final ObjectMapper mapper = new ObjectMapper(yaml); private static final Map headers = Map.of( - "Content-Type", - "application/vnd.elasticsearch+json;compatible-with=7", - "Accept", - "application/vnd.elasticsearch+json;compatible-with=7" + "Content-Type", + "application/vnd.elasticsearch+json;compatible-with=7", + "Accept", + "application/vnd.elasticsearch+json;compatible-with=7" ); private static final boolean humanDebug = false; // useful for humans trying to debug these tests @@ -58,8 +58,8 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(tests.stream().filter(node -> node.get("setup") != null).count(), CoreMatchers.equalTo(0L)); List transformedTests = transformer.transformRestTests( - new LinkedList<>(tests), - Collections.singletonList(new InjectHeaders(headers)) + new LinkedList<>(tests), + Collections.singletonList(new InjectHeaders(headers)) ); printTest(testName, transformedTests); // ensure setup is correct @@ -93,8 +93,8 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(tests.stream().filter(node -> node.get("setup") != null).count(), CoreMatchers.equalTo(1L)); List transformedTests = transformer.transformRestTests( - new LinkedList<>(tests), - Collections.singletonList(new InjectHeaders(headers)) + new LinkedList<>(tests), + Collections.singletonList(new InjectHeaders(headers)) ); printTest(testName, transformedTests); // ensure setup is correct @@ -128,10 +128,10 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(tests.stream().filter(node -> node.get("setup") != null).count(), CoreMatchers.equalTo(1L)); List skipNodes = tests.stream() - .filter(node -> node.get("setup") != null) - .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) - .map(node -> getSkipNode((ArrayNode) node.get("setup"))) - .collect(Collectors.toList()); + .filter(node -> node.get("setup") != null) + .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) + .map(node -> getSkipNode((ArrayNode) node.get("setup"))) + .collect(Collectors.toList()); // validate skip node exists assertThat(skipNodes.size(), CoreMatchers.equalTo(1)); @@ -139,8 +139,8 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertNull(skipNodes.get(0).get("features")); List transformedTests = transformer.transformRestTests( - new LinkedList<>(tests), - Collections.singletonList(new InjectHeaders(headers)) + new LinkedList<>(tests), + Collections.singletonList(new InjectHeaders(headers)) ); printTest(testName, transformedTests); // ensure setup is correct @@ -175,10 +175,10 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(tests.stream().filter(node -> node.get("setup") != null).count(), CoreMatchers.equalTo(1L)); List skipNodes = tests.stream() - .filter(node -> node.get("setup") != null) - .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) - .map(node -> getSkipNode((ArrayNode) node.get("setup"))) - .collect(Collectors.toList()); + .filter(node -> node.get("setup") != null) + .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) + .map(node -> getSkipNode((ArrayNode) node.get("setup"))) + .collect(Collectors.toList()); // validate skip node exists assertThat(skipNodes.size(), CoreMatchers.equalTo(1)); @@ -186,8 +186,8 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(skipNodes.get(0).get("features"), CoreMatchers.notNullValue()); List transformedTests = transformer.transformRestTests( - new LinkedList<>(tests), - Collections.singletonList(new InjectHeaders(headers)) + new LinkedList<>(tests), + Collections.singletonList(new InjectHeaders(headers)) ); printTest(testName, transformedTests); // ensure setup is correct @@ -221,10 +221,10 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(tests.stream().filter(node -> node.get("setup") != null).count(), CoreMatchers.equalTo(1L)); List skipNodes = tests.stream() - .filter(node -> node.get("setup") != null) - .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) - .map(node -> getSkipNode((ArrayNode) node.get("setup"))) - .collect(Collectors.toList()); + .filter(node -> node.get("setup") != null) + .filter(node -> getSkipNode((ArrayNode) node.get("setup")) != null) + .map(node -> getSkipNode((ArrayNode) node.get("setup"))) + .collect(Collectors.toList()); // validate skip node exists assertThat(skipNodes.size(), CoreMatchers.equalTo(1)); @@ -246,8 +246,8 @@ public class InjectHeaderTests extends GradleUnitTestCase { assertThat(features, IsCollectionContaining.hasItem("headers")); List transformedTests = transformer.transformRestTests( - new LinkedList<>(tests), - Collections.singletonList(new InjectHeaders(headers)) + new LinkedList<>(tests), + Collections.singletonList(new InjectHeaders(headers)) ); printTest(testName, transformedTests); // ensure setup is correct @@ -344,4 +344,4 @@ public class InjectHeaderTests extends GradleUnitTestCase { } } } -} +} \ No newline at end of file diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java diff --git a/buildSrc/src/test/resources/ca.p12 b/build-tools-internal/src/test/resources/ca.p12 similarity index 100% rename from buildSrc/src/test/resources/ca.p12 rename to build-tools-internal/src/test/resources/ca.p12 diff --git a/buildSrc/src/test/resources/ca.pem b/build-tools-internal/src/test/resources/ca.pem similarity index 100% rename from buildSrc/src/test/resources/ca.pem rename to build-tools-internal/src/test/resources/ca.pem diff --git a/buildSrc/src/test/resources/rest/header_inject/no_setup.yml b/build-tools-internal/src/test/resources/rest/header_inject/no_setup.yml similarity index 100% rename from buildSrc/src/test/resources/rest/header_inject/no_setup.yml rename to build-tools-internal/src/test/resources/rest/header_inject/no_setup.yml diff --git a/buildSrc/src/test/resources/rest/header_inject/with_features.yml b/build-tools-internal/src/test/resources/rest/header_inject/with_features.yml similarity index 100% rename from buildSrc/src/test/resources/rest/header_inject/with_features.yml rename to build-tools-internal/src/test/resources/rest/header_inject/with_features.yml diff --git a/buildSrc/src/test/resources/rest/header_inject/with_headers.yml b/build-tools-internal/src/test/resources/rest/header_inject/with_headers.yml similarity index 100% rename from buildSrc/src/test/resources/rest/header_inject/with_headers.yml rename to build-tools-internal/src/test/resources/rest/header_inject/with_headers.yml diff --git a/buildSrc/src/test/resources/rest/header_inject/with_setup.yml b/build-tools-internal/src/test/resources/rest/header_inject/with_setup.yml similarity index 100% rename from buildSrc/src/test/resources/rest/header_inject/with_setup.yml rename to build-tools-internal/src/test/resources/rest/header_inject/with_setup.yml diff --git a/buildSrc/src/test/resources/rest/header_inject/with_skip.yml b/build-tools-internal/src/test/resources/rest/header_inject/with_skip.yml similarity index 100% rename from buildSrc/src/test/resources/rest/header_inject/with_skip.yml rename to build-tools-internal/src/test/resources/rest/header_inject/with_skip.yml diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/build.gradle b/build-tools-internal/src/testKit/elasticsearch-build-resources/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/build.gradle rename to build-tools-internal/src/testKit/elasticsearch-build-resources/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/gradle.properties b/build-tools-internal/src/testKit/elasticsearch-build-resources/gradle.properties similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/gradle.properties rename to build-tools-internal/src/testKit/elasticsearch-build-resources/gradle.properties diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/settings.gradle b/build-tools-internal/src/testKit/elasticsearch-build-resources/settings.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/settings.gradle rename to build-tools-internal/src/testKit/elasticsearch-build-resources/settings.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/LICENSE b/build-tools-internal/src/testKit/elasticsearch.build/LICENSE similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/LICENSE rename to build-tools-internal/src/testKit/elasticsearch.build/LICENSE diff --git a/buildSrc/src/testKit/elasticsearch.build/NOTICE b/build-tools-internal/src/testKit/elasticsearch.build/NOTICE similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/NOTICE rename to build-tools-internal/src/testKit/elasticsearch.build/NOTICE diff --git a/buildSrc/src/testKit/elasticsearch.build/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/gradle.properties b/build-tools-internal/src/testKit/elasticsearch.build/gradle.properties similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/gradle.properties rename to build-tools-internal/src/testKit/elasticsearch.build/gradle.properties diff --git a/buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/settings.gradle b/build-tools-internal/src/testKit/elasticsearch.build/settings.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/settings.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/settings.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java b/build-tools-internal/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java rename to build-tools-internal/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java diff --git a/buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/test/logger-usage/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/test/logger-usage/build.gradle diff --git a/buildSrc/src/testKit/reaper/build.gradle b/build-tools-internal/src/testKit/reaper/build.gradle similarity index 100% rename from buildSrc/src/testKit/reaper/build.gradle rename to build-tools-internal/src/testKit/reaper/build.gradle diff --git a/buildSrc/src/testKit/reaper/gradle.properties b/build-tools-internal/src/testKit/reaper/gradle.properties similarity index 100% rename from buildSrc/src/testKit/reaper/gradle.properties rename to build-tools-internal/src/testKit/reaper/gradle.properties diff --git a/buildSrc/src/testKit/reaper/settings.gradle b/build-tools-internal/src/testKit/reaper/settings.gradle similarity index 100% rename from buildSrc/src/testKit/reaper/settings.gradle rename to build-tools-internal/src/testKit/reaper/settings.gradle diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle b/build-tools-internal/src/testKit/symbolic-link-preserving-tar/build.gradle similarity index 100% rename from buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle rename to build-tools-internal/src/testKit/symbolic-link-preserving-tar/build.gradle diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle b/build-tools-internal/src/testKit/symbolic-link-preserving-tar/settings.gradle similarity index 100% rename from buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle rename to build-tools-internal/src/testKit/symbolic-link-preserving-tar/settings.gradle diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/build.gradle b/build-tools-internal/src/testKit/testingConventions/build.gradle similarity index 100% rename from buildSrc/src/testKit/testingConventions/build.gradle rename to build-tools-internal/src/testKit/testingConventions/build.gradle diff --git a/buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore b/build-tools-internal/src/testKit/testingConventions/empty_test_task/.gitignore similarity index 100% rename from buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore rename to build-tools-internal/src/testKit/testingConventions/empty_test_task/.gitignore diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java b/build-tools-internal/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java rename to build-tools-internal/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java diff --git a/buildSrc/src/testKit/testingConventions/settings.gradle b/build-tools-internal/src/testKit/testingConventions/settings.gradle similarity index 100% rename from buildSrc/src/testKit/testingConventions/settings.gradle rename to build-tools-internal/src/testKit/testingConventions/settings.gradle diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/build.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/build.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/build.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/build.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/gradle.properties b/build-tools-internal/src/testKit/thirdPartyAudit/gradle.properties similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/gradle.properties rename to build-tools-internal/src/testKit/thirdPartyAudit/gradle.properties diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/build.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/build.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/settings.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/settings.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/settings.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/settings.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt b/build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt rename to build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt b/build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-empty.txt similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt rename to build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-empty.txt diff --git a/build-tools-internal/version.properties b/build-tools-internal/version.properties new file mode 100644 index 000000000000..fb96a8a26a96 --- /dev/null +++ b/build-tools-internal/version.properties @@ -0,0 +1,55 @@ +elasticsearch = 7.14.0 +lucene = 8.9.0-snapshot-ddc238e5df8 + +bundled_jdk_vendor = adoptopenjdk +bundled_jdk = 16.0.1+9 + +checkstyle = 8.42 + +# optional dependencies +spatial4j = 0.7 +jts = 1.15.0 +jackson = 2.12.2 +snakeyaml = 1.27 +icu4j = 62.1 +supercsv = 2.4.0 +# when updating log4j, please update also docs/java-api/index.asciidoc +log4j = 2.11.1 +slf4j = 1.6.2 + +# when updating the JNA version, also update the version in buildSrc/build.gradle +jna = 5.7.0-1 + +netty = 4.1.63.Final +joda = 2.10.10 + +commons_lang3 = 3.9 + +# when updating this version, you need to ensure compatibility with: +# - plugins/ingest-attachment (transitive dependency, check the upstream POM) +# - distribution/tools/plugin-cli +# - x-pack/plugin/security +bouncycastle=1.64 +# test dependencies +randomizedrunner = 2.7.1 +junit = 4.12 +junit5 = 5.7.1 +httpclient = 4.5.10 +httpcore = 4.4.12 +httpasyncclient = 4.1.4 +commonslogging = 1.1.3 +commonscodec = 1.11 +hamcrest = 2.1 +securemock = 1.2 +mocksocket = 1.2 + +# benchmark dependencies +jmh = 1.26 + +# test dependencies +# when updating this version, also update :qa:evil-tests +jimfs = 1.2 +jimfs_guava = 30.1-jre + +# test framework +networknt_json_schema_validator = 1.0.48 diff --git a/build-tools/build.gradle b/build-tools/build.gradle new file mode 100644 index 000000000000..a0525a773e23 --- /dev/null +++ b/build-tools/build.gradle @@ -0,0 +1,220 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import org.elasticsearch.gradle.internal.conventions.VersionPropertiesLoader + +plugins { + id 'java-gradle-plugin' + id 'groovy' + id 'java-test-fixtures' + id 'elasticsearch.publish' + id 'elasticsearch.internal-licenseheaders' + id 'elasticsearch.basic-build-tool-conventions' +} + +description = "The elasticsearch build tools" + +// we update the version property to reflect if we are building a snapshot or a release build +// we write this back out below to load it in the Build.java which will be shown in rest main action +// to indicate this being a snapshot build or a release build. +Properties props = VersionPropertiesLoader.loadBuildSrcVersion(project.file('../build-tools-internal/version.properties')) +allprojects { + group = "org.elasticsearch" + version = props.getProperty("elasticsearch") + + apply plugin: 'java' + targetCompatibility = 11 + sourceCompatibility = 11 +} + +gradlePlugin { + // We already configure publication and we don't need or want the one that comes + // with the java-gradle-plugin + automatedPublishing = false + plugins { + distributionDownload { + id = 'elasticsearch.distribution-download' + implementationClass = 'org.elasticsearch.gradle.DistributionDownloadPlugin' + } + jdkDownload { + id = 'elasticsearch.jdk-download' + implementationClass = 'org.elasticsearch.gradle.JdkDownloadPlugin' + } + esPlugin { + id = 'elasticsearch.esplugin' + implementationClass = 'org.elasticsearch.gradle.plugin.PluginBuildPlugin' + } + testclusters { + id = 'elasticsearch.testclusters' + implementationClass = 'org.elasticsearch.gradle.testclusters.TestClustersPlugin' + } + reaper { + id = 'elasticsearch.reaper' + implementationClass = 'org.elasticsearch.gradle.ReaperPlugin' + } + } +} + +def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { + outputFile = "${buildDir}/version.properties" + comment = 'Generated version properties' + properties(props) +} + +tasks.named("processResources").configure { + from(generateVersionProperties) + exclude 'buildSrc.marker' + into('META-INF') { + from configurations.reaper + } +} + +sourceSets { + integTest { + compileClasspath += sourceSets["main"].output + configurations["testRuntimeClasspath"] + runtimeClasspath += output + compileClasspath + } +} + +// we do not publish the test fixtures of build-tools +components.java.withVariantsFromConfiguration(configurations.testFixturesApiElements) { skip() } +components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) { skip() } + +publishing.publications.named("elastic").configure { + suppressPomMetadataWarningsFor("testFixturesApiElements") + suppressPomMetadataWarningsFor("testFixturesRuntimeElements") +} + +configurations { + integTestImplementation.extendsFrom(testFixturesApi) + integTestRuntimeOnly.extendsFrom(testRuntimeOnly) + register("reaper") +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +dependencies { + reaper project('reaper') + + api localGroovy() + api gradleApi() + api 'org.apache.commons:commons-compress:1.19' + api 'org.apache.ant:ant:1.10.8' + api 'commons-io:commons-io:2.2' + api 'gradle.plugin.com.github.jengelman.gradle.plugins:shadow:7.0.0' + + runtimeOnly project(":reaper") + + testFixturesApi "junit:junit:${props.getProperty('junit')}" + testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" + testFixturesApi gradleApi() + testFixturesApi gradleTestKit() + testFixturesApi 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2' + testFixturesApi platform("org.spockframework:spock-bom:2.0-M5-groovy-3.0") + testFixturesApi("org.spockframework:spock-core") { + exclude module: "groovy" + } + + integTestImplementation("org.spockframework:spock-junit4") { + because 'required as we rely on junit4 rules' + } + + integTestImplementation(platform("org.junit:junit-bom:${props.getProperty('junit5')}")) + integTestImplementation("org.junit.jupiter:junit-jupiter") { + because 'allows to write and run Jupiter tests' + } + integTestRuntimeOnly("org.junit.vintage:junit-vintage-engine") { + because 'allows JUnit 3 and JUnit 4 tests to run' + } + + integTestRuntimeOnly("org.junit.platform:junit-platform-launcher") { + because 'allows tests to run from IDEs that bundle older version of launcher' + } +} + +tasks.register("integTest", Test) { + inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) + systemProperty 'test.version_under_test', version + testClassesDirs = sourceSets.integTest.output.classesDirs + classpath = sourceSets.integTest.runtimeClasspath + useJUnitPlatform() +} + +normalization { + runtimeClasspath { + // We already include the reaper jar as part of our runtime classpath. Ignore the copy in META-INF. + ignore('META-INF/reaper.jar') + } +} + +tasks.named("check").configure { dependsOn("integTest") } + +// TODO These additional conventions will be applied once those plugins have been ported to build-conventions and +// +// apply plugin: 'elasticsearch.build' +// +// // groovydoc succeeds, but has some weird internal exception... +// tasks.named("groovydoc").configure { +// enabled = false +// } +// +// // build-tools is not ready for primetime with these... +// tasks.named("dependencyLicenses").configure { enabled = false } +// tasks.named("dependenciesInfo").configure {enabled = false } +// tasks.named("dependenciesGraph").configure {enabled = false } +// disableTasks('forbiddenApisMain', 'forbiddenApisTest', 'forbiddenApisIntegTest', 'forbiddenApisTestFixtures') +// tasks.named("jarHell").configure { +// enabled = false +// } +// tasks.named("thirdPartyAudit").configure { +// enabled = false +// } +// configurations.register("distribution") +// +// +// tasks.withType(Test).configureEach { +// // Track reaper jar as a test input using runtime classpath normalization strategy +// inputs.files(configurations.reaper).withNormalizer(ClasspathNormalizer) +// useJUnitPlatform() +// } +// +// tasks.named("test").configure { +// include("**/*TestSpec.class") +// } +// + +// +// tasks.named("forbiddenPatterns").configure { +// exclude '**/*.wav' +// exclude '**/*.p12' +// exclude '**/*.jks' +// exclude '**/*.crt' +// // the file that actually defines nocommit +// exclude '**/ForbiddenPatternsTask.java' +// exclude '**/*.bcfks' +// } +// +// eclipse { +// classpath { +// plusConfigurations += [configurations.integTestRuntimeClasspath] +// } +// } +// +// tasks.named("testingConventions") { +// naming.clear() +// naming { +// Tests { +// baseClass 'org.elasticsearch.gradle.internal.test.GradleUnitTestCase' +// } +// TestSpec { +// baseClass 'spock.lang.Specification' +// } +// } +// } \ No newline at end of file diff --git a/buildSrc/reaper/build.gradle b/build-tools/reaper/build.gradle similarity index 87% rename from buildSrc/reaper/build.gradle rename to build-tools/reaper/build.gradle index 5a1da72c4208..47f6d36cce2a 100644 --- a/buildSrc/reaper/build.gradle +++ b/build-tools/reaper/build.gradle @@ -1,4 +1,6 @@ -apply plugin: 'java' +plugins { + id 'java' +} tasks.named("jar").configure { archiveFileName = "${project.name}.jar" diff --git a/buildSrc/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java b/build-tools/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java similarity index 100% rename from buildSrc/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java rename to build-tools/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java diff --git a/build-tools/settings.gradle b/build-tools/settings.gradle new file mode 100644 index 000000000000..57da38826417 --- /dev/null +++ b/build-tools/settings.gradle @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +include 'reaper' \ No newline at end of file diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy rename to build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy rename to build-tools/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy diff --git a/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java b/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java new file mode 100644 index 000000000000..1ca241bc01aa --- /dev/null +++ b/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +package org.elasticsearch.gradle; + +import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; +import org.gradle.testkit.runner.BuildResult; + +public class ReaperPluginIT extends GradleIntegrationTestCase { + @Override + public String projectName() { + return "reaper"; + } + + public void testCanLaunchReaper() { + BuildResult result = getGradleRunner().withArguments(":launchReaper", "-S", "--info").build(); + assertTaskSuccessful(result, ":launchReaper"); + assertOutputContains(result.getOutput(), "Copying reaper.jar..."); + } + +} diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b1f5d4fc37a5478137bd61dc425644797f3b4b1 GIT binary patch literal 1236 zcmV;_1S|U=iwFRve{5g?1MOLDZ`(Ey?q~lBw%#yc^^0W5*5JV(y1XqNyaY*BWS;^? zI@xR`Q6Q<<-mw3^JIaxh)N!)L@X$?%Abh_&-gD1|b|B%}h)@Gp;k4~`dL6I(YRlp{ zPSEc&+YZXs>G@^56y|z?8w9@RyDoEF-}k&%tiNqX)=8laSLlj@3^wh(b9@gD?z{Ehhcdp)Pde;2Y2|4?SJm~1Zvo`t{fc%Bmkeb*=a2Z3MX zzYAH1e*2ordK?C7T!Eew~|+n1^KC(GX4_GoYpc*dAq54+vjY}Q%Qs}suZq!1Bw zA?x0wTvtI1n0p~~!$M)lbjfC$eCR5Mf&)u2F1*sP&3D7D@k@Rr&kF9V?;L5 z+sdtXNmA)#*O15=UQtkng%o?n5euY@Mnn}vbOP=>(qa2D`wr6)vkDZO2{WZ2rL4#j z(BvmuVEz^vD!|Hu$vT^IW9LYBBvHwh5N@)gy$AgMq3wFZ_T}a9?Qa_PWEPIO`gA@6 z$dC3`i+khqW19(dqmwW!a-M~YL&a?jMnV69p0(RgvSd*@;i4OR_uOa_vkDD%t%bn| zWtw6>*>uWaj-8ogiO4`(J{Nh!4cOHi3>yJ~KR9d+0RIjO5yEJ&#^J1 z;$&g0iWsKIFx%6Q`(mgt^3@W1B#TIn^>CcUdB_&X6|i{UN@U zM>N%)>MPuEm5b=xyn{2h)WhzC*xbIv-f$9r-}n8Pk#O%RPVn* z-=p`RJLuJ)|8^qH*A{L)Z9q7cY(4Buhf3rISq5Q&w0~WHI{dH5v-tl)8&C7Uzx@A? y+xG_a{cjNTdo}-eA$RzXR&D=aQvlmN?eUZKhJ`@xz-UvRFK9u^T1QZNHHLX^P1?fYPYQ;Ad z!H0VJ&up^Ern%H+i5B-ycF)W?=f9l)`@erD8=_&`QDvK8Di=Z`AK{~6UxP&ughVWc zyfI!Kg@{xgX9S7SgqTQ3QAre$AWBj+>O-+c2eO#Bwu32zLWx0^+XveeWtsJvbJWKB zM93oekEupOYv8W&k0)aA4*16+5uu6yTF7Gf%ch~I`NoyNKfzy$2n_#(AT{w{3t0?* zO&wc%{!2nMD#QgT?%^-SV@>?mLYBhcHg&=uh0HWSARlo_S`vRzloE6JixS`;k4K^Z z3ypBTlKju{9~x+F>-2SWboe$Ndu4e3%6ea$FVmat3iTgMhyVQC=WB({?Hz2XWkuyq zc-53MT?hNqy(3vZlm0a`{l!xQA^ysSfzY1I(_eltEL@G=_@43yGQs}L758kL|Bauv z{kZMX!oK%!Zaw|`)`=e~AC|{|p+D1gp8LSzUEij__+xeM+ZVXs1g{aO;BKgHo0r-9 z{@=`Nk8>P1&OOg_yE&!EZQ0Hp;^JxUx$mQG)NZfCR3fT@={m=>ze&sb-jT51W9=38KyogdhyIt!C` z=6Pt~0gf%T!p}!AzP@hdB5caPCd)kk9WCm-X*sHC*sJrgLjR8@ghc)GUqlciQnUZB zg#-fVz@ZGPLhe$`;P(3is}wMR`ZGg=!`ZHb*`(*8K(K{u^(E2>1sKI zwGyt_$R-YQ3Iyq@fv}N7Ixg2-GY#e)Ii|PA#yUYotht0oX_F#S#=51EAX^7JY&+ZL zMGaFD>U$!{7LqgGL!-Ja4zToH@v#LOVx=9IA4Y<^+AbAc~nMr>D!8s5m79}?Lw!K5E zhU%zTtLDp8;QS8URROfHOgydfLM_O)s=NBqT7H%@G0%oF3=Ju=-m*og!+>#ABX2jV zwz@Q}W)qDO%`CwYRaRj#%RRz?1yIHYL@CKJ4N@Nnk9thw5hzEfDne07bqXv=I&uw- z*ep&|f%TXqzi{hk6wv@B@C^49NLbYZ`;byP zw_WkH5A+OxN-g@(B3W3ty!7EjDOAe=J4kJ!PaFn%&>|TkREA@vBC*=qoUtc?AT@)t zJEMY^GuFHuqFW}#w1RRfh4M3L#UJW9ii?<6P2SNhm`?3F);n?}n;GiqA3pABdbG>A zx@9wt=i#%BveeVe+9Whj&6GVrkU~wpnjkP=-Kt7~@9EI`{LvZ_?7;W&gE5KoaH3j=Lf z^PBU&9}&ZLX|)RG+>x?sJ6@HrSTQiwRTNcLSv6I=4~t?ph#|0>f?C3NbpJhn{x9|YZ~go@ zso0R`Wgn21mKDGMiPxV0;;|@u{uASo=HLHoB7q$q+;+iFiHBl>1-)26K(nnE)gJ0A{~U7ytkO literal 0 HcmV?d00001 diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c86378d8f9b03a9c714c6ee4a28acf1755fd2313 GIT binary patch literal 1174 zcmV;H1Zn#piwFQ5$3I^H1MOFBZ`(Ey?q~lBw%#yc^^0Un_Ta%Ey1XqNJO@cuWS;_t zKFMq)Q6MS5Y}kL_9p%V%=A>EUWh>@G5K`pv?s(5VX9*H+tP}>g7SpER>a@D;7dsZu z^ZH@P+}JBeuM?ExN|@j6`~7~<4Sb(@eh_rKFIc$iK(}$$vz@gZ%e)bH#_{ ze~y2>&fdNou@dq^bAr28t3OfD06QI>jn6ON{CqiZ9;U!^X5??M3*%(}S5+`GRYfvk zJel*QVFoO-Q(&pg7|$jw<%`NSognYbDyL(33T(!c0$S`?X$A|P<_R=tAMKDjskx|e zDPSi*G-zY6^4`2kO%ShU3pb;O3&1nh=4Q}t&*$^jie4?D+HoN#(1xtNLAkbu2(b19 zv_+wDV%y}iNwK!3HciNCgaM{X1Ctp}(-I`-@QInM)fwJ{X~;Dg^ljXwWhSlUNtrJd z;r%T>l>p{kfIGFgdkV8H(;~h9RE=`x$22T(*h!HcEppJ7fUz=*&8}+eO_EeL*$pIW zj#rdaVS;kcIAVd6F^H&!37vq=Kw9ijW#3>qVpV}=b7`lPq?8p|0*2ybORV1_Lj%}Z zuvq6)ZrvK$o+vc3BZTYhXAGB_V6b>Qbpg~l7+k5 z_g~HrnpFi46I>&wyE;pzDw?xdsLq)2l^9FOt0O;hUldIJj%s7+$? zOq6hdut=-4Oc0tcRUR3`%8{u> z6iFeen#%4&QQQV`hIWToOZ+ju351AKF9QmfB?|itS#!}J%LInB)SjAaRJhLNY`{k4G|Gnz{uNQXd{m<{w_y7L=@1K|Y zO9!`^)<8@Z+YUQ3Ld)DD%Rm%J`4!0-QlKkV%J o{~YoW|B>9xHGx+f;QxjEulDTU%U<@fmoH!b1Qy=ydH@~(0D~A^)&Kwi literal 0 HcmV?d00001 diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip new file mode 100644 index 0000000000000000000000000000000000000000..42b572e37f3fbfbb90dee93ecbff745d37988879 GIT binary patch literal 568 zcmWIWW@h1H00E1zJ$_&Yln`N%VMxtMEH24RE>2A>O3u(V)HBjE)(;KgWMJM?@;2u7 zG^W_n3T_5QmamKq3@jo*eF1ROtk6u8z+qZaW*)@E1EiX$ipNA0cY_@aGJYa92QxCs zG2;pV320CVFuZjHF;R?#2L~%8I52_&VKQc5Ae#&db!;X>f(B?h$n7MUuF3#2oq=IV e;{rUUqu3f6g3BsaHlP^{%s{9NjOhO$4g&zPL2_UK literal 0 HcmV?d00001 diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java b/build-tools/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java rename to build-tools/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/Architecture.java b/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/Architecture.java rename to build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDependency.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionDependency.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDependency.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionDependency.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionResolution.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionResolution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionResolution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionResolution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FileSupplier.java b/build-tools/src/main/java/org/elasticsearch/gradle/FileSupplier.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FileSupplier.java rename to build-tools/src/main/java/org/elasticsearch/gradle/FileSupplier.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java b/build-tools/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java rename to build-tools/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/Jdk.java b/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/Jdk.java rename to build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java index 5688d61a1a91..a07301c79a03 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/Jdk.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal; +package org.elasticsearch.gradle; import org.gradle.api.Buildable; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java index 391139dd1df1..2a36dcb214ee 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal; +package org.elasticsearch.gradle; import org.elasticsearch.gradle.transform.SymbolicLinkPreservingUntarTransform; import org.elasticsearch.gradle.transform.UnzipTransform; @@ -20,7 +20,6 @@ import org.gradle.api.artifacts.repositories.IvyArtifactRepository; import org.gradle.api.artifacts.type.ArtifactTypeDefinition; import org.gradle.api.attributes.Attribute; import org.gradle.api.internal.artifacts.ArtifactAttributes; -import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -170,7 +169,6 @@ public class JdkDownloadPlugin implements Plugin { } } - @NotNull private String azulPlatform(Jdk jdk) { switch (jdk.getPlatform()) { case "linux": diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LoggedExec.java b/build-tools/src/main/java/org/elasticsearch/gradle/LoggedExec.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LoggedExec.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LoggedExec.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/OS.java b/build-tools/src/main/java/org/elasticsearch/gradle/OS.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/OS.java rename to build-tools/src/main/java/org/elasticsearch/gradle/OS.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java b/build-tools/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java rename to build-tools/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java similarity index 92% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java index 7a81284a2654..a76a79feba0c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java @@ -20,11 +20,14 @@ import java.io.File; */ public class ReaperPlugin implements Plugin { + /** + * The unique identifier to register the reaper shared service within a gradle build + * */ public static final String REAPER_SERVICE_NAME = "reaper"; private final ProjectLayout projectLayout; @Inject - public ReaperPlugin(ProjectLayout projectLayout) { + ReaperPlugin(ProjectLayout projectLayout) { this.projectLayout = projectLayout; } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java index 78d7f23c7daa..1b67f9ff6af2 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java @@ -151,6 +151,7 @@ public abstract class ReaperService implements BuildService { + + @Override + public void apply(Project project) { + TaskProvider jarHellTask = createTask(project); + project.getPluginManager().withPlugin( + "lifecycle-base", + p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(jarHellTask)) + ); + } + + private TaskProvider createTask(Project project) { + Configuration jarHellConfig = project.getConfigurations().create("jarHell"); + TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); + jarHell.configure(t -> { + SourceSet testSourceSet = getJavaTestSourceSet(project); + t.setClasspath(testSourceSet.getRuntimeClasspath()); + t.setJarHellRuntimeClasspath(jarHellConfig); + }); + + return jarHell; + } + + /** + * @param project The project to look for test Java resources. + */ + private static SourceSet getJavaTestSourceSet(Project project) { + return GradleUtils.getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME); + } + +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java similarity index 69% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java index c68bda1822f4..cfafab8cd03b 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java @@ -6,42 +6,61 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.LoggedExec; +import org.gradle.api.DefaultTask; import org.gradle.api.file.FileCollection; +import org.gradle.api.file.ProjectLayout; import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.CompileClasspath; +import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; import org.gradle.process.ExecOperations; import javax.inject.Inject; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; /** * Runs CheckJarHell on a classpath. */ @CacheableTask -public class JarHellTask extends PrecommitTask { +public class JarHellTask extends DefaultTask { private FileCollection jarHellRuntimeClasspath; private FileCollection classpath; private ExecOperations execOperations; + private ProjectLayout projectLayout; + @Inject - public JarHellTask(ExecOperations execOperations) { + public JarHellTask(ExecOperations execOperations, ProjectLayout projectLayout) { this.execOperations = execOperations; + this.projectLayout = projectLayout; setDescription("Runs CheckJarHell on the configured classpath"); } + @OutputFile + public File getSuccessMarker() { + return new File(projectLayout.getBuildDirectory().getAsFile().get(), "markers/" + this.getName()); + } + @TaskAction - public void runJarHellCheck() { + public void runJarHellCheck() throws IOException{ LoggedExec.javaexec(execOperations, spec -> { spec.environment("CLASSPATH", getJarHellRuntimeClasspath().plus(getClasspath()).getAsPath()); spec.setMain("org.elasticsearch.bootstrap.JarHell"); }); + writeMarker(); + } + + private void writeMarker() throws IOException { + Files.write(getSuccessMarker().toPath(), new byte[] {}, StandardOpenOption.CREATE); } // We use compile classpath normalization here because class implementation changes are irrelevant for the purposes of jar hell. diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java similarity index 88% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java index 2efef63197c3..19a443f8545c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java @@ -15,7 +15,7 @@ import org.apache.commons.io.IOUtils; import org.elasticsearch.gradle.Version; import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; -import org.elasticsearch.gradle.precommit.PrecommitTasks; +import org.elasticsearch.gradle.jarhell.JarHellPlugin; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.RunTask; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; @@ -43,6 +43,8 @@ import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Zip; import org.gradle.jvm.tasks.Jar; +import org.gradle.api.artifacts.dsl.DependencyHandler; +import org.gradle.api.tasks.SourceSet; import java.io.File; import java.io.IOException; @@ -58,15 +60,15 @@ import java.util.stream.Collectors; public class PluginBuildPlugin implements Plugin { @Override public void apply(final Project project) { - PrecommitTasks.create(project); project.getPluginManager().apply(JavaPlugin.class); project.getPluginManager().apply(TestClustersPlugin.class); project.getPluginManager().apply(CompileOnlyResolvePlugin.class); + project.getPluginManager().apply(JarHellPlugin.class); - var extension = project.getExtensions().create(PLUGIN_EXTENSION_NAME, PluginPropertiesExtension.class, project); + PluginPropertiesExtension extension = project.getExtensions().create(PLUGIN_EXTENSION_NAME, PluginPropertiesExtension.class, project); configureDependencies(project); - final var bundleTask = createBundleTasks(project, extension); + final TaskProvider bundleTask = createBundleTasks(project, extension); project.afterEvaluate(project1 -> { project1.getExtensions().getByType(PluginPropertiesExtension.class).getExtendedPlugins().forEach(pluginName -> { // Auto add dependent modules to the test cluster @@ -75,9 +77,9 @@ public class PluginBuildPlugin implements Plugin { testClusters.all(elasticsearchCluster -> elasticsearchCluster.module(":modules:" + pluginName)); } }); - final var extension1 = project1.getExtensions().getByType(PluginPropertiesExtension.class); + final PluginPropertiesExtension extension1 = project1.getExtensions().getByType(PluginPropertiesExtension.class); configurePublishing(project1, extension1); - var name = extension1.getName(); + String name = extension1.getName(); project1.setProperty("archivesBaseName", name); project1.setDescription(extension1.getDescription()); @@ -114,8 +116,8 @@ public class PluginBuildPlugin implements Plugin { project.getConfigurations().getByName("default").extendsFrom(project.getConfigurations().getByName("runtimeClasspath")); // allow running ES with this plugin in the foreground of a build - var testClusters = testClusters(project, TestClustersPlugin.EXTENSION_NAME); - final var runCluster = testClusters.create("runTask", cluster -> { + NamedDomainObjectContainer testClusters = testClusters(project, TestClustersPlugin.EXTENSION_NAME); + final ElasticsearchCluster runCluster = testClusters.create("runTask", cluster -> { if (GradleUtils.isModuleProject(project.getPath())) { cluster.module(bundleTask.flatMap((Transformer, Zip>) zip -> zip.getArchiveFile())); } else { @@ -156,7 +158,7 @@ public class PluginBuildPlugin implements Plugin { } private static void configureDependencies(final Project project) { - var dependencies = project.getDependencies(); + DependencyHandler dependencies = project.getDependencies(); dependencies.add("compileOnly", "org.elasticsearch:elasticsearch:" + VersionProperties.getElasticsearch()); dependencies.add("testImplementation", "org.elasticsearch.test:framework:" + VersionProperties.getElasticsearch()); @@ -174,11 +176,11 @@ public class PluginBuildPlugin implements Plugin { * metadata, properties, and packaging files */ private static TaskProvider createBundleTasks(final Project project, PluginPropertiesExtension extension) { - final var pluginMetadata = project.file("src/main/plugin-metadata"); - final var templateFile = new File(project.getBuildDir(), "templates/plugin-descriptor.properties"); + final File pluginMetadata = project.file("src/main/plugin-metadata"); + final File templateFile = new File(project.getBuildDir(), "templates/plugin-descriptor.properties"); // create tasks to build the properties file for this plugin - final var copyPluginPropertiesTemplate = project.getTasks().register("copyPluginPropertiesTemplate", new Action() { + final TaskProvider copyPluginPropertiesTemplate = project.getTasks().register("copyPluginPropertiesTemplate", new Action() { @Override public void execute(Task task) { task.getOutputs().file(templateFile); @@ -197,20 +199,20 @@ public class PluginBuildPlugin implements Plugin { }); } }); - final var buildProperties = project.getTasks().register("pluginProperties", Copy.class, copy -> { + final TaskProvider buildProperties = project.getTasks().register("pluginProperties", Copy.class, copy -> { copy.dependsOn(copyPluginPropertiesTemplate); copy.from(templateFile); copy.into(new File(project.getBuildDir(), "generated-resources")); }); // add the plugin properties and metadata to test resources, so unit tests can // know about the plugin (used by test security code to statically initialize the plugin in unit tests) - var testSourceSet = project.getExtensions().getByType(SourceSetContainer.class).getByName("test"); + SourceSet testSourceSet = project.getExtensions().getByType(SourceSetContainer.class).getByName("test"); Map map = Map.of("builtBy", buildProperties); testSourceSet.getOutput().dir(map, new File(project.getBuildDir(), "generated-resources")); testSourceSet.getResources().srcDir(pluginMetadata); // create the actual bundle task, which zips up all the files for the plugin - final var bundle = project.getTasks().register("bundlePlugin", Zip.class, zip -> { + final TaskProvider bundle = project.getTasks().register("bundlePlugin", Zip.class, zip -> { zip.from(buildProperties); zip.from(pluginMetadata, copySpec -> { // metadata (eg custom security policy) diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java index 8cc1adb5d4b1..51658eea326b 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java @@ -8,7 +8,7 @@ package org.elasticsearch.gradle.testclusters; import org.elasticsearch.gradle.FileSupplier; -import org.elasticsearch.gradle.internal.Jdk; +import org.elasticsearch.gradle.Jdk; import org.elasticsearch.gradle.PropertyNormalization; import org.elasticsearch.gradle.ReaperService; import org.gradle.api.Named; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java index f8d12b6eaee4..9f83f43aa7cc 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java @@ -12,7 +12,7 @@ import org.elasticsearch.gradle.Architecture; import org.elasticsearch.gradle.DistributionDownloadPlugin; import org.elasticsearch.gradle.ElasticsearchDistribution; import org.elasticsearch.gradle.FileSupplier; -import org.elasticsearch.gradle.internal.Jdk; +import org.elasticsearch.gradle.Jdk; import org.elasticsearch.gradle.LazyPropertyList; import org.elasticsearch.gradle.LazyPropertyMap; import org.elasticsearch.gradle.distribution.ElasticsearchDistributionTypes; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java index 84385e886823..591c3cac15a1 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java @@ -7,7 +7,7 @@ */ package org.elasticsearch.gradle.testclusters; -import org.elasticsearch.gradle.internal.Jdk; +import org.elasticsearch.gradle.Jdk; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.tasks.Nested; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java index 84c1320c4bd8..c145b626247f 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java @@ -9,8 +9,8 @@ package org.elasticsearch.gradle.testclusters; import org.elasticsearch.gradle.Architecture; import org.elasticsearch.gradle.DistributionDownloadPlugin; -import org.elasticsearch.gradle.internal.Jdk; -import org.elasticsearch.gradle.internal.JdkDownloadPlugin; +import org.elasticsearch.gradle.Jdk; +import org.elasticsearch.gradle.JdkDownloadPlugin; import org.elasticsearch.gradle.OS; import org.elasticsearch.gradle.ReaperPlugin; import org.elasticsearch.gradle.ReaperService; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java new file mode 100644 index 000000000000..534d28c02c08 --- /dev/null +++ b/build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.util; + +import org.gradle.api.UncheckedIOException; + +import java.io.File; +import java.io.IOException; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +public final class FileUtils { + + /** + * Like {@link java.io.File#mkdirs()}, except throws an informative error if a dir cannot be created. + * + * @param dir The dir to create, including any non existent parent dirs. + */ + public static void mkdirs(File dir) { + dir = dir.getAbsoluteFile(); + if (dir.isDirectory()) { + return; + } + + if (dir.exists() && dir.isDirectory() == false) { + throw new UncheckedIOException(String.format("Cannot create directory '%s' as it already exists, but is not a directory", dir)); + } + + List toCreate = new LinkedList(); + File parent = dir.getParentFile(); + while (parent.exists() == false) { + toCreate.add(parent); + parent = parent.getParentFile(); + } + Collections.reverse(toCreate); + for (File parentDirToCreate : toCreate) { + if (parentDirToCreate.isDirectory()) { + continue; + } + File parentDirToCreateParent = parentDirToCreate.getParentFile(); + if (parentDirToCreateParent.isDirectory() == false) { + throw new UncheckedIOException( + String.format( + "Cannot create parent directory '%s' when creating directory '%s' as '%s' is not a directory", + parentDirToCreate, + dir, + parentDirToCreateParent + ) + ); + } + if (parentDirToCreate.mkdir() == false && parentDirToCreate.isDirectory() == false) { + throw new UncheckedIOException( + String.format("Failed to create parent directory '%s' when creating directory '%s'", parentDirToCreate, dir) + ); + } + } + if (dir.mkdir() == false && dir.isDirectory() == false) { + throw new UncheckedIOException(String.format("Failed to create directory '%s'", dir)); + } + } + + public static String read(File file, String encoding) { + try { + return org.apache.commons.io.FileUtils.readFileToString(file, encoding); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + public static List readLines(File file, String encoding) { + try { + return org.apache.commons.io.FileUtils.readLines(file, encoding); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + public static void write(File outputFile, CharSequence content, String encoding) { + try { + org.apache.commons.io.FileUtils.write(outputFile, content, encoding); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java index e9b24136e78f..e9d462dfff10 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java @@ -7,11 +7,11 @@ */ package org.elasticsearch.gradle.util; -import org.elasticsearch.gradle.internal.ElasticsearchJavaPlugin; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.UnknownTaskException; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.Dependency; @@ -107,7 +107,7 @@ public abstract class GradleUtils { * @return A task provider for the newly created test task */ public static TaskProvider addTestSourceSet(Project project, String sourceSetName) { - project.getPluginManager().apply(ElasticsearchJavaPlugin.class); + project.getPluginManager().apply(JavaPlugin.class); // create our test source set and task SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/Pair.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/Pair.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/Pair.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/Pair.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java diff --git a/build-tools/src/main/resources/plugin-descriptor.properties b/build-tools/src/main/resources/plugin-descriptor.properties new file mode 100644 index 000000000000..e313c0f4692d --- /dev/null +++ b/build-tools/src/main/resources/plugin-descriptor.properties @@ -0,0 +1,63 @@ +# Elasticsearch plugin descriptor file +# This file must exist as 'plugin-descriptor.properties' inside a plugin. +# +### example plugin for "foo" +# +# foo.zip <-- zip file for the plugin, with this structure: +# |____ .jar <-- classes, resources, dependencies +# |____ .jar <-- any number of jars +# |____ plugin-descriptor.properties <-- example contents below: +# +# classname=foo.bar.BazPlugin +# description=My cool plugin +# version=6.0 +# elasticsearch.version=6.0 +# java.version=1.8 +# +### mandatory elements for all plugins: +# +# 'type': the type of this plugin. 'isolated' indicated a typical sandboxed plugin, +# whereas 'bootstrap' indicates a plugin whose jars are added to the JVM's boot +# classpath. +type=${type} +# +# 'description': simple summary of the plugin +description=${description} +# +# 'version': plugin's version +version=${version} +# +# 'name': the plugin name +name=${name} +<% if (type != "bootstrap") { %> +# +# 'classname': the name of the class to load, fully-qualified. Only applies to +# "isolated" plugins +classname=${classname} +<% } %> +# +# 'java.version': version of java the code is built against +# use the system property java.specification.version +# version string must be a sequence of nonnegative decimal integers +# separated by "."'s and may have leading zeros +java.version=${javaVersion} +# +# 'elasticsearch.version': version of elasticsearch compiled against +elasticsearch.version=${elasticsearchVersion} +### optional elements for plugins: +# +# 'extended.plugins': other plugins this plugin extends through SPI +extended.plugins=${extendedPlugins} +# +# 'has.native.controller': whether or not the plugin has a native controller +has.native.controller=${hasNativeController} +<% if (type == "bootstrap") { %> +# +# 'java.opts': any additional command line parameters to pass to the JVM when +# Elasticsearch starts. Only applies to "bootstrap" plugins. +java.opts=${javaOpts} +<% } %> +<% if (licensed) { %> +# This plugin requires that a license agreement be accepted before installation +licensed=${licensed} +<% } %> diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java new file mode 100644 index 000000000000..389d18ed6f29 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.elasticsearch.gradle.ElasticsearchDistribution.Platform; +import org.elasticsearch.gradle.distribution.ElasticsearchDistributionTypes; +import org.gradle.api.Project; +import org.gradle.testfixtures.ProjectBuilder; +import org.gradle.api.NamedDomainObjectContainer; + +import java.io.File; + +import static org.hamcrest.core.StringContains.containsString; + +public class DistributionDownloadPluginTests extends GradleUnitTestCase { + + protected static Project rootProject; + + public void testVersionDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + null, + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true + ); + assertEquals(distro.getVersion(), VersionProperties.getElasticsearch()); + } + + public void testBadVersionFormat() { + assertDistroError( + createProject(), + "testdistro", + "badversion", + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true, + "Invalid version format: 'badversion'" + ); + } + + public void testTypeDefault() { + ElasticsearchDistribution distro = checkDistro(createProject(), "testdistro", "5.0.0", null, Platform.LINUX, true); + assertEquals(distro.getType(), ElasticsearchDistributionTypes.ARCHIVE); + } + + public void testPlatformDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.ARCHIVE, + null, + true + ); + assertEquals(distro.getPlatform(), ElasticsearchDistribution.CURRENT_PLATFORM); + } + + public void testPlatformForIntegTest() { + assertDistroError( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.INTEG_TEST_ZIP, + Platform.LINUX, + null, + "platform cannot be set on elasticsearch distribution [testdistro]" + ); + } + + public void testBundledJdkDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true + ); + assertTrue(distro.getBundledJdk()); + } + + public void testBundledJdkForIntegTest() { + assertDistroError( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.INTEG_TEST_ZIP, + null, + true, + "bundledJdk cannot be set on elasticsearch distribution [testdistro]" + ); + } + + private void assertDistroError( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + Platform platform, + Boolean bundledJdk, + String message + ) { + IllegalArgumentException e = expectThrows( + IllegalArgumentException.class, + () -> checkDistro(project, name, version, type, platform, bundledJdk) + ); + assertThat(e.getMessage(), containsString(message)); + } + + // create a distro and finalize its configuration + private ElasticsearchDistribution checkDistro( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + Platform platform, + Boolean bundledJdk + ) { + ElasticsearchDistribution distribution = createDistro(project, name, version, type, platform, bundledJdk); + distribution.finalizeValues(); + return distribution; + } + + + protected ElasticsearchDistribution createDistro( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + ElasticsearchDistribution.Platform platform, + Boolean bundledJdk + ) { + NamedDomainObjectContainer distros = DistributionDownloadPlugin.getContainer(project); + return distros.create(name, distro -> { + if (version != null) { + distro.setVersion(version); + } + if (type != null) { + distro.setType(type); + } + if (platform != null) { + distro.setPlatform(platform); + } + if (bundledJdk != null) { + distro.setBundledJdk(bundledJdk); + } + }).maybeFreeze(); + } + + protected Project createProject() { + rootProject = ProjectBuilder.builder().build(); +// Project distributionProject = ProjectBuilder.builder().withParent(rootProject).withName("distribution").build(); +// archivesProject = ProjectBuilder.builder().withParent(distributionProject).withName("archives").build(); +// packagesProject = ProjectBuilder.builder().withParent(distributionProject).withName("packages").build(); +// bwcProject = ProjectBuilder.builder().withParent(distributionProject).withName("bwc").build(); + Project project = ProjectBuilder.builder().withParent(rootProject).build(); + project.getPlugins().apply("elasticsearch.distribution-download"); + return project; + } + +} diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java similarity index 99% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java rename to build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java index 35e2b42b4bba..97ac0a044b3a 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java +++ b/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal; +package org.elasticsearch.gradle; import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; import org.gradle.api.NamedDomainObjectContainer; diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java new file mode 100644 index 000000000000..37aa5cf9d21d --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java @@ -0,0 +1,115 @@ +package org.elasticsearch.gradle; + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.junit.Rule; +import org.junit.rules.ExpectedException; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class VersionTests extends GradleUnitTestCase { + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + public void testVersionParsing() { + assertVersionEquals("7.0.1", 7, 0, 1); + assertVersionEquals("7.0.1-alpha2", 7, 0, 1); + assertVersionEquals("5.1.2-rc3", 5, 1, 2); + assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2); + assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2); + assertVersionEquals("17.03.11", 17, 3, 11); + } + + public void testRelaxedVersionParsing() { + assertVersionEquals("6.1.2", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-foo", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-foo-bar", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("16.01.22", 16, 1, 22, Version.Mode.RELAXED); + } + + public void testCompareWithStringVersions() { + assertTrue("1.10.20 is not interpreted as before 2.0.0", Version.fromString("1.10.20").before("2.0.0")); + assertTrue( + "7.0.0-alpha1 should be equal to 7.0.0-alpha1", + Version.fromString("7.0.0-alpha1").equals(Version.fromString("7.0.0-alpha1")) + ); + assertTrue( + "7.0.0-SNAPSHOT should be equal to 7.0.0-SNAPSHOT", + Version.fromString("7.0.0-SNAPSHOT").equals(Version.fromString("7.0.0-SNAPSHOT")) + ); + } + + public void testCollections() { + assertTrue( + Arrays.asList( + Version.fromString("5.2.0"), + Version.fromString("5.2.1-SNAPSHOT"), + Version.fromString("6.0.0"), + Version.fromString("6.0.1"), + Version.fromString("6.1.0") + ).containsAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))) + ); + Set versions = new HashSet<>(); + versions.addAll( + Arrays.asList( + Version.fromString("5.2.0"), + Version.fromString("5.2.1-SNAPSHOT"), + Version.fromString("6.0.0"), + Version.fromString("6.0.1"), + Version.fromString("6.1.0") + ) + ); + Set subset = new HashSet<>(); + subset.addAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))); + assertTrue(versions.containsAll(subset)); + } + + public void testToString() { + assertEquals("7.0.1", new Version(7, 0, 1).toString()); + } + + public void testCompareVersions() { + assertEquals(0, new Version(7, 0, 0).compareTo(new Version(7, 0, 0))); + assertOrder(Version.fromString("19.0.1"), Version.fromString("20.0.3")); + } + + public void testExceptionEmpty() { + expectedEx.expect(IllegalArgumentException.class); + expectedEx.expectMessage("Invalid version format"); + Version.fromString(""); + } + + public void testExceptionSyntax() { + expectedEx.expect(IllegalArgumentException.class); + expectedEx.expectMessage("Invalid version format"); + Version.fromString("foo.bar.baz"); + } + + private void assertOrder(Version smaller, Version bigger) { + assertEquals(smaller + " should be smaller than " + bigger, -1, smaller.compareTo(bigger)); + } + + private void assertVersionEquals(String stringVersion, int major, int minor, int revision) { + assertVersionEquals(stringVersion, major, minor, revision, Version.Mode.STRICT); + } + + private void assertVersionEquals(String stringVersion, int major, int minor, int revision, Version.Mode mode) { + Version version = Version.fromString(stringVersion, mode); + assertEquals(major, version.getMajor()); + assertEquals(minor, version.getMinor()); + assertEquals(revision, version.getRevision()); + } + +} diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java new file mode 100644 index 000000000000..cbb3d4eb1183 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.plugin; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.gradle.api.Project; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.testfixtures.ProjectBuilder; + +public class PluginPropertiesExtensionTests extends GradleUnitTestCase { + + public void testCreatingPluginPropertiesExtensionWithNameAndVersion() { + String projectName = "Test"; + String projectVersion = "5.0"; + + PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension( + this.createProject(projectName, projectVersion) + ); + + assertEquals(projectName, pluginPropertiesExtension.getName()); + assertEquals(projectVersion, pluginPropertiesExtension.getVersion()); + } + + public void testCreatingPluginPropertiesExtensionWithNameWithoutVersion() { + String projectName = "Test"; + + PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension(this.createProject(projectName, null)); + + assertEquals(projectName, pluginPropertiesExtension.getName()); + assertEquals("unspecified", pluginPropertiesExtension.getVersion()); + } + + private Project createProject(String projectName, String version) { + Project project = ProjectBuilder.builder().withName(projectName).build(); + project.setVersion(version); + + project.getPlugins().apply(JavaPlugin.class); + + return project; + } +} diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java new file mode 100644 index 000000000000..a94eca15d1c8 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.testclusters; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; + +import java.net.URL; +import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.notNullValue; + +public class WaitForHttpResourceTests extends GradleUnitTestCase { + + public void testBuildTrustStoreFromFile() throws Exception { + final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); + final URL ca = getClass().getResource("/ca.p12"); + assertThat(ca, notNullValue()); + http.setTrustStoreFile(Paths.get(ca.toURI()).toFile()); + http.setTrustStorePassword("password"); + final KeyStore store = http.buildTrustStore(); + final Certificate certificate = store.getCertificate("ca"); + assertThat(certificate, notNullValue()); + assertThat(certificate, instanceOf(X509Certificate.class)); + assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); + } + + public void testBuildTrustStoreFromCA() throws Exception { + final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); + final URL ca = getClass().getResource("/ca.pem"); + assertThat(ca, notNullValue()); + http.setCertificateAuthorities(Paths.get(ca.toURI()).toFile()); + final KeyStore store = http.buildTrustStore(); + final Certificate certificate = store.getCertificate("cert-0"); + assertThat(certificate, notNullValue()); + assertThat(certificate, instanceOf(X509Certificate.class)); + assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); + } +} diff --git a/build-tools/src/test/resources/ca.p12 b/build-tools/src/test/resources/ca.p12 new file mode 100644 index 0000000000000000000000000000000000000000..cc44494515b9f415b10e5a1680a351004f36336e GIT binary patch literal 1130 zcmV-w1eN>`YKzq*P z3y>M9*-ScP?1G-yVrojUCy_ALnwg}ca60EThMM9YrH`bM(eT@AOI>a^M^U!^s2%az zrPQgnSOrO6=k;|gH>|m$R5&%)w(cY^zJv(c$#cHvXZYU5thBcru&BI=EIUFjS!R2>kujzOGMgd?)`w3RP8sF^jF`%@< zC2leR<(U!v>Vpdc8?^P?y(?yX7~Q-DK$zzh@9scpmNili{S9kae_0$UviHYUHkwLJ zmB?Aegqu!`e>iOJO$V(GPY3cW;(OU{aEwqk`_=&@JuX^W5mru5m3(VY7Tb;3A6u@` zCbt^A)%YsHuSwmuiPei=Mn}Nol$aR5>2V)0T03^>96pBgXxA=&LN&6=1Od0obZ$LC z9k%l=Yfq)jlH1>WEbj?#x$zugDT5=*d4VxyyaA_dOsL&leFbs~*rNJ?oM0wYZkr&w z6j~LIZ&XQ}1@b|m`}>cHOmLu&P?_lmlG+=S{-s-j%`4*sbZIPyxx&7YF8hH3n-8U( zw9AX*Box9=@bd~T;$T+ore@}|0#G=pwF&V8xg39DzX5|+&qEZDXfEu28LCl=;Ex@x zrafigSLJn#r{=ZBPV>`7Zx~&I7#)yO^EQGV0-p);N$^Vb$s3AC5D4`R$E{QTY@eJg zf<>EFC9d=ndoy%S{?q(;3d%t^IMHcoMyW$GwT5(SvR4$Zcn4QvX{R)AK1Sd(^PrI; zG_*Ji{3HO*z$bB>JOHvq$R%s=Qn9y6iu2C+7u7_TLNNrZog6HzS_KT!KkHE$65maB z-4#<)UeY2()Ai>Rv!54{y;tjU*s1ZNG~ z3#wsfdzy0zT5@hdR#AExpO_Hew~Mc!cZaYpHoW+dT!HPXW4RrM9RS}K&*K`=frAutIB1uG5%0vZJX1QZ{H wm_-g$!e*DmGljOO=GL*I@+JfnfnL+d3d7|K`}9pm4!>XT-tEOT0s{etpmUoKWB>pF literal 0 HcmV?d00001 diff --git a/build-tools/src/test/resources/ca.pem b/build-tools/src/test/resources/ca.pem new file mode 100644 index 000000000000..8dda1767e483 --- /dev/null +++ b/build-tools/src/test/resources/ca.pem @@ -0,0 +1,25 @@ +Bag Attributes + friendlyName: ca + localKeyID: 54 69 6D 65 20 31 35 35 33 37 34 33 38 39 30 38 33 35 +subject=/CN=Elastic Certificate Tool Autogenerated CA +issuer=/CN=Elastic Certificate Tool Autogenerated CA +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIVAMQMmDRcXfXLaTp6ep1H8rC3tOrwMA0GCSqGSIb3DQEB +CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu +ZXJhdGVkIENBMB4XDTE5MDMyODAzMzEyNloXDTIyMDMyNzAzMzEyNlowNDEyMDAG +A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT73N6JZeBPyzahc0aNcra +BpUROVGB9wXQqf8JeU4GtH+1qfqUKYKUJTe/DZWc+5Qz1WAKGZEvBySAlgbuncuq +VpLzWxpEui1vRW8JB3gjZgeY3vfErrEWWr95YM0e8rWu4AoAchzqsrG0/+po2eui +cN+8hI6jRKiBv/ZeQqja6KZ8y4Wt4VaNVL53+I7+eWA/aposu6/piUg2wZ/FNhVK +hypcJwDdp3fQaugtPj3y76303jTRgutgd3rtWFuy3MCDLfs3mSQUjO10s93zwLdC +XokyIywijS5CpO8mEuDRu9rb5J1DzwUpUfk+GMObb6rHjFKzSqnM3s+nasypQQ9L +AgMBAAGjUzBRMB0GA1UdDgQWBBQZEW88R95zSzO2tLseEWgI7ugvLzAfBgNVHSME +GDAWgBQZEW88R95zSzO2tLseEWgI7ugvLzAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBCwUAA4IBAQBEJN0UbL77usVnzIvxKa3GpLBgJQAZtD1ifZppC4w46Bul +1G7Fdc+XMbzZlI4K6cWEdd5dfEssKA8btEtRzdNOqgggBpqrUU0mNlQ+vC22XORU +ykHAu2TsRwoHmuxkd9Et/QyuTFXR4fTiU8rsJuLFOgn+RdEblA0J0gJeIqdWI5Z1 +z13OyZEl6BCQFyrntu2eERxaHEfsJOSBZE4RcecnLNGhIJBXE0Pk4iTiViJF/h7d ++kUUegKx0qewZif2eEZgrz12Vuen9a6bh2i2pNS95vABVVMr8uB+J1BGkNA5YT7J +qtZA2tN//Evng7YDiR+KkB1kvXVZVIi2WPDLD/zu +-----END CERTIFICATE----- diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy similarity index 96% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy index 27677f6894ec..69ba96c49a82 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy +++ b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy @@ -8,6 +8,7 @@ package org.elasticsearch.gradle.fixtures +import org.elasticsearch.gradle.internal.test.InternalAwareGradleRunner import org.gradle.testkit.runner.GradleRunner import org.junit.Rule import org.junit.rules.TemporaryFolder @@ -45,12 +46,12 @@ abstract class AbstractGradleFuncTest extends Specification { } GradleRunner gradleRunner(File projectDir, String... arguments) { - GradleRunner.create() + new InternalAwareGradleRunner(GradleRunner.create() .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0) .withProjectDir(projectDir) - .withArguments(arguments) .withPluginClasspath() .forwardOutput() + ).withArguments(arguments) } def assertOutputContains(String givenOutput, String expected) { @@ -132,4 +133,4 @@ abstract class AbstractGradleFuncTest extends Specification { System.err.println("Syserr: " + proc.errorStream.text) } } -} +} \ No newline at end of file diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java similarity index 98% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java index b98468073f7a..58760d72c1c8 100644 --- a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java @@ -63,15 +63,14 @@ public abstract class GradleIntegrationTestCase extends GradleUnitTestCase { File testkit; try { testkit = testkitTmpDir.newFolder(); - } catch (IOException e) { throw new UncheckedIOException(e); } - return GradleRunner.create() + return new InternalAwareGradleRunner(GradleRunner.create() .withProjectDir(getProjectDir()) .withPluginClasspath() .withTestKitDir(testkit) - .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0); + .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0)); } protected File getBuildDir(String name) { @@ -219,4 +218,5 @@ public abstract class GradleIntegrationTestCase extends GradleUnitTestCase { } } } + } diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java diff --git a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java new file mode 100644 index 000000000000..789780511c73 --- /dev/null +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.test; + +import org.gradle.testkit.runner.BuildResult; +import org.gradle.testkit.runner.GradleRunner; +import org.gradle.testkit.runner.InvalidPluginMetadataException; +import org.gradle.testkit.runner.InvalidRunnerConfigurationException; +import org.gradle.testkit.runner.UnexpectedBuildFailure; +import org.gradle.testkit.runner.UnexpectedBuildSuccess; +import org.jetbrains.annotations.Nullable; + +import java.io.File; +import java.io.Writer; +import java.net.URI; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class InternalAwareGradleRunner extends GradleRunner { + private GradleRunner delegate; + + public InternalAwareGradleRunner(GradleRunner delegate) { + this.delegate = delegate; + } + + @Override + public GradleRunner withGradleVersion(String gradleVersion) { + return delegate.withGradleVersion(gradleVersion); + } + + @Override + public GradleRunner withGradleInstallation(File file) { + return delegate.withGradleInstallation(file); + } + + @Override + public GradleRunner withGradleDistribution(URI uri) { + return delegate.withGradleDistribution(uri); + } + + @Override + public GradleRunner withTestKitDir(File file) { + return delegate.withTestKitDir(file); + } + + @Override + public File getProjectDir() { + return delegate.getProjectDir(); + } + + @Override + public GradleRunner withProjectDir(File projectDir) { + return delegate.withProjectDir(projectDir); + } + + @Override + public List getArguments() { + return delegate.getArguments(); + } + + @Override + public GradleRunner withArguments(List arguments) { + List collect = Stream.concat(arguments.stream(), Stream.of("-Dtest.external=true")) + .collect(Collectors.toList()); + return delegate.withArguments(collect); + } + + @Override + public GradleRunner withArguments(String... arguments) { + return withArguments(List.of(arguments)); + } + + @Override + public List getPluginClasspath() { + return delegate.getPluginClasspath(); + } + + @Override + public GradleRunner withPluginClasspath() throws InvalidPluginMetadataException { + return delegate.withPluginClasspath(); + } + + @Override + public GradleRunner withPluginClasspath(Iterable iterable) { + return delegate.withPluginClasspath(iterable); + } + + @Override + public boolean isDebug() { + return delegate.isDebug(); + } + + @Override + public GradleRunner withDebug(boolean b) { + return delegate.withDebug(b); + } + + @Nullable + @Override + public Map getEnvironment() { + return delegate.getEnvironment(); + } + + @Override + public GradleRunner withEnvironment(@Nullable Map map) { + return delegate.withEnvironment(map); + } + + @Override + public GradleRunner forwardStdOutput(Writer writer) { + return delegate.forwardStdOutput(writer); + } + + @Override + public GradleRunner forwardStdError(Writer writer) { + return delegate.forwardStdOutput(writer); + } + + @Override + public GradleRunner forwardOutput() { + return delegate.forwardOutput(); + } + + @Override + public BuildResult build() throws InvalidRunnerConfigurationException, UnexpectedBuildFailure { + return delegate.build(); + } + + @Override + public BuildResult buildAndFail() throws InvalidRunnerConfigurationException, UnexpectedBuildSuccess { + return delegate.buildAndFail(); + } +} diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java diff --git a/build-tools/src/testKit/reaper/build.gradle b/build-tools/src/testKit/reaper/build.gradle new file mode 100644 index 000000000000..26e47aa9862e --- /dev/null +++ b/build-tools/src/testKit/reaper/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'elasticsearch.reaper' +} + +import org.elasticsearch.gradle.ReaperPlugin; +import org.elasticsearch.gradle.util.GradleUtils; + +tasks.register("launchReaper") { + doLast { + def serviceProvider = GradleUtils.getBuildService(project.getGradle().getSharedServices(), ReaperPlugin.REAPER_SERVICE_NAME); + def reaper = serviceProvider.get() + reaper.registerCommand('test', 'true') + reaper.unregister('test') + } +} diff --git a/build-tools/src/testKit/reaper/gradle.properties b/build-tools/src/testKit/reaper/gradle.properties new file mode 100644 index 000000000000..a9aca06ec7a7 --- /dev/null +++ b/build-tools/src/testKit/reaper/gradle.properties @@ -0,0 +1,11 @@ +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0 and the Server Side Public License, v 1; you may not use this file except +# in compliance with, at your election, the Elastic License 2.0 or the Server +# Side Public License, v 1. +# + +# java homes resolved by environment variables +org.gradle.java.installations.auto-detect=false +org.gradle.java.installations.fromEnv=JAVA_HOME,RUNTIME_JAVA_HOME,JAVA15_HOME,JAVA14_HOME,JAVA13_HOME,JAVA12_HOME,JAVA11_HOME,JAVA8_HOME diff --git a/build-tools/src/testKit/reaper/settings.gradle b/build-tools/src/testKit/reaper/settings.gradle new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/build.gradle b/build.gradle index d369f6042726..59c4209c18b0 100644 --- a/build.gradle +++ b/build.gradle @@ -59,55 +59,12 @@ if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) { } else { licenseCommit = "v${version}" } -String elasticLicenseUrl = "https://raw.githubusercontent.com/elastic/elasticsearch/${licenseCommit}/licenses/ELASTIC-LICENSE-2.0.txt" subprojects { // We disable this plugin for now till we shaked out the issues we see // e.g. see https://github.com/elastic/elasticsearch/issues/72169 // apply plugin:'elasticsearch.internal-test-rerun' - // Default to the SSPL+Elastic dual license - project.ext.projectLicenses = [ - 'Server Side Public License, v 1': 'https://www.mongodb.com/licensing/server-side-public-license', - 'Elastic License 2.0': elasticLicenseUrl - ] - - // But stick the Elastic license url in project.ext so we can get it if we need to switch to it - project.ext.elasticLicenseUrl = elasticLicenseUrl - - // we only use maven publish to add tasks for pom generation - plugins.withType(MavenPublishPlugin).whenPluginAdded { - publishing { - publications { - // add license information to generated poms - all { - pom.withXml { XmlProvider xml -> - Node node = xml.asNode() - node.appendNode('inceptionYear', '2009') - - Node licensesNode = node.appendNode('licenses') - project.ext.projectLicenses.forEach { licenseName, licenseUrl -> - Node license = licensesNode.appendNode('license') - license.appendNode('name', licenseName) - license.appendNode('url', licenseUrl) - license.appendNode('distribution', 'repo') - } - - Node developer = node.appendNode('developers').appendNode('developer') - developer.appendNode('name', 'Elastic') - developer.appendNode('url', 'https://www.elastic.co') - } - } - } - repositories { - maven { - name = 'test' - url = "${rootProject.buildDir}/local-test-repo" - } - } - } - } - plugins.withType(BuildPlugin).whenPluginAdded { project.licenseFile = project.rootProject.file('licenses/SSPL-1.0+ELASTIC-LICENSE-2.0.txt') project.noticeFile = project.rootProject.file('NOTICE.txt') @@ -415,9 +372,9 @@ allprojects { prefix = prefix.replace(':', '_') } if (eclipse.project.name.startsWith(prefix)) { - licenseHeaderFile = new File(project.rootDir, 'buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt') + licenseHeaderFile = new File(project.rootDir, 'build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt') } else { - licenseHeaderFile = new File(project.rootDir, 'buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt') + licenseHeaderFile = new File(project.rootDir, 'build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt') } String lineSeparator = Os.isFamily(Os.FAMILY_WINDOWS) ? '\\\\r\\\\n' : '\\\\n' @@ -425,7 +382,7 @@ allprojects { tasks.register('copyEclipseSettings', Copy) { mustRunAfter 'wipeEclipseSettings' // TODO: "package this up" for external builds - from new File(project.rootDir, 'buildSrc/src/main/resources/eclipse.settings') + from new File(project.rootDir, 'build-tools-internal/src/main/resources/eclipse.settings') into '.settings' filter { it.replaceAll('@@LICENSE_HEADER_TEXT@@', licenseHeader) } } @@ -529,6 +486,21 @@ allprojects { } } + +tasks.register("precommit") { + dependsOn gradle.includedBuild('build-tools').task(':precommit') + dependsOn gradle.includedBuild('build-tools-internal').task(':precommit') +} + +tasks.named("checkPart1").configure { + dependsOn gradle.includedBuild('build-tools').task(':check') + dependsOn gradle.includedBuild('build-tools-internal').task(':check') +} + +tasks.named("assemble").configure { + dependsOn gradle.includedBuild('build-tools').task(':assemble') +} + subprojects { project.ext.disableTasks = { String... tasknames -> for (String taskname : tasknames) { diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle deleted file mode 100644 index bb1046b67dc5..000000000000 --- a/buildSrc/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include 'reaper' diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java deleted file mode 100644 index 1236c8b1c5f1..000000000000 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -package org.elasticsearch.gradle.precommit; - -import org.elasticsearch.gradle.internal.util.Util; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; - -public class JarHellPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - Configuration jarHellConfig = project.getConfigurations().create("jarHell"); - TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); - jarHell.configure(t -> { - SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get(); - t.setClasspath(testSourceSet.getRuntimeClasspath()); - t.setJarHellRuntimeClasspath(jarHellConfig); - }); - - return jarHell; - } -} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java deleted file mode 100644 index 3d41896ad5a7..000000000000 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -package org.elasticsearch.gradle.precommit; - -import org.gradle.api.Project; - -/** - * Validation tasks which should be run before committing. These run before tests. - */ -public class PrecommitTasks { - /** - * Adds a precommit task, which depends on non-test verification tasks. - */ - public static void create(Project project) { - project.getPluginManager().apply(JarHellPrecommitPlugin.class); - } -} diff --git a/buildSrc/version.properties b/buildSrc/version.properties index fb96a8a26a96..ca97b0d3a36d 100644 --- a/buildSrc/version.properties +++ b/buildSrc/version.properties @@ -4,13 +4,13 @@ lucene = 8.9.0-snapshot-ddc238e5df8 bundled_jdk_vendor = adoptopenjdk bundled_jdk = 16.0.1+9 -checkstyle = 8.42 +checkstyle = 8.39 # optional dependencies spatial4j = 0.7 jts = 1.15.0 -jackson = 2.12.2 -snakeyaml = 1.27 +jackson = 2.10.4 +snakeyaml = 1.26 icu4j = 62.1 supercsv = 2.4.0 # when updating log4j, please update also docs/java-api/index.asciidoc @@ -20,7 +20,7 @@ slf4j = 1.6.2 # when updating the JNA version, also update the version in buildSrc/build.gradle jna = 5.7.0-1 -netty = 4.1.63.Final +netty = 4.1.49.Final joda = 2.10.10 commons_lang3 = 3.9 diff --git a/client/rest-high-level/build.gradle b/client/rest-high-level/build.gradle index 68ccae571d60..48e772f08ea5 100644 --- a/client/rest-high-level/build.gradle +++ b/client/rest-high-level/build.gradle @@ -18,7 +18,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-high-level-client' // HLRC is published under the Elastic License -ext.projectLicenses = ['Elastic License 2.0': ext.elasticLicenseUrl] +ext.projectLicenses.set(['Elastic License 2.0': ext.elasticLicenseUrl.get()]) restResources { //we need to copy the yaml spec so we can check naming (see RestHighlevelClientTests#testApiNamingConventions) diff --git a/client/rest/build.gradle b/client/rest/build.gradle index 66592d5ed022..fc0069440f13 100644 --- a/client/rest/build.gradle +++ b/client/rest/build.gradle @@ -17,7 +17,7 @@ * under the License. */ import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' @@ -29,7 +29,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-client' // LLRC is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/client/sniffer/build.gradle b/client/sniffer/build.gradle index d89ec76000ee..bd34d1a70b20 100644 --- a/client/sniffer/build.gradle +++ b/client/sniffer/build.gradle @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' @@ -28,7 +28,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-client-sniffer' // rest client sniffer is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/client/test/build.gradle b/client/test/build.gradle index 2d5db7e59e6d..da5e45f6d699 100644 --- a/client/test/build.gradle +++ b/client/test/build.gradle @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' @@ -15,7 +15,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 group = "${group}.client.test" // rest client sniffer is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/rest-api-spec/build.gradle b/rest-api-spec/build.gradle index 15c012849529..6ad57396f2ad 100644 --- a/rest-api-spec/build.gradle +++ b/rest-api-spec/build.gradle @@ -11,7 +11,7 @@ restResources { } // REST API specifications are published under the Apache 2.0 License -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') artifacts { diff --git a/settings.gradle b/settings.gradle index b08e06d7a8cc..63c699b30e88 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,11 +2,13 @@ plugins { id "com.gradle.enterprise" version "3.5.1" } +includeBuild "build-conventions" +includeBuild "build-tools" +includeBuild "build-tools-internal" + rootProject.name = "elasticsearch" List projects = [ - 'build-tools', - 'build-tools:reaper', 'rest-api-spec', 'docs', 'client:rest', @@ -108,8 +110,8 @@ List startTasks = gradle.startParameter.taskNames include projects.toArray(new String[0]) -project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') -project(':build-tools:reaper').projectDir = new File(rootProject.projectDir, 'buildSrc/reaper') +//project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') +//project(':build-tools:reaper').projectDir = new File(rootProject.projectDir, 'buildSrc/reaper') project(":libs").children.each { libsProject -> libsProject.name = "elasticsearch-${libsProject.name}" diff --git a/x-pack/build.gradle b/x-pack/build.gradle index ae2f0027f0cf..e5b258ee8a53 100644 --- a/x-pack/build.gradle +++ b/x-pack/build.gradle @@ -1,5 +1,5 @@ import org.elasticsearch.gradle.plugin.PluginBuildPlugin -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask Project xpackRootProject = project @@ -36,7 +36,9 @@ subprojects { additionalLicense 'ELAST', 'Elastic License 2.0', '2.0; you may not use this file except in compliance with the Elastic License' } - ext.projectLicenses = ['Elastic License 2.0': ext.elasticLicenseUrl] + project.getPluginManager().withPlugin("elasticsearch.licensing") { + ext.projectLicenses.set(['Elastic License 2.0': ext.elasticLicenseUrl.get()]) + } project.ext.licenseFile = rootProject.file('licenses/ELASTIC-LICENSE-2.0.txt') project.ext.noticeFile = xpackRootProject.file('NOTICE.txt') diff --git a/x-pack/plugin/autoscaling/build.gradle b/x-pack/plugin/autoscaling/build.gradle index 4e1aa8e1d677..4baa8efe8fcc 100644 --- a/x-pack/plugin/autoscaling/build.gradle +++ b/x-pack/plugin/autoscaling/build.gradle @@ -1,4 +1,3 @@ -import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.internal-es-plugin' apply plugin: 'elasticsearch.internal-cluster-test'