mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-10 23:15:04 +00:00
Backport of #46599 and #47640. Add packaging tests for Docker. * Introduce packaging tests for Docker (#46599) Closes #37617. Add packaging tests for our Docker images, similar to what we have for RPMs or Debian packages. This works by running a container and probing it e.g. via `docker exec`. Test can also be run in Vagrant, by exporting the Docker images to disk and loading them again in VMs. Docker is installed via `Vagrantfile` in a selection of boxes. * Only define Docker pkg tests if Docker is available (#47640) Closes #47639, and unmutes tests that were muted in b958467. The Docker packaging tests were being defined irrespective of whether Docker was actually available in the current environment. Instead, implement exclude lists so that in environments where Docker is not available, no Docker packaging tests are defined. For CI hosts, the build checks `.ci/dockerOnLinuxExclusions`. The Vagrant VMs can defined the extension property `shouldTestDocker` property to opt-in to packaging tests. As part of this, define a seperate utility class for checking Docker, and call that instead of defining checks in-line in BuildPlugin.groovy
118 lines
4.2 KiB
Groovy
118 lines
4.2 KiB
Groovy
String dirName = rootProject.projectDir.name
|
|
rootProject.name = dirName
|
|
|
|
List projects = [
|
|
'build-tools',
|
|
'build-tools:reaper',
|
|
'rest-api-spec',
|
|
'docs',
|
|
'client:rest',
|
|
'client:rest-high-level',
|
|
'client:sniffer',
|
|
'client:transport',
|
|
'client:test',
|
|
'client:client-benchmark-noop-api-plugin',
|
|
'client:benchmark',
|
|
'benchmarks',
|
|
'distribution:archives:integ-test-zip',
|
|
'distribution:archives:oss-windows-zip',
|
|
'distribution:archives:windows-zip',
|
|
'distribution:archives:oss-no-jdk-windows-zip',
|
|
'distribution:archives:no-jdk-windows-zip',
|
|
'distribution:archives:oss-darwin-tar',
|
|
'distribution:archives:darwin-tar',
|
|
'distribution:archives:oss-no-jdk-darwin-tar',
|
|
'distribution:archives:no-jdk-darwin-tar',
|
|
'distribution:archives:oss-linux-tar',
|
|
'distribution:archives:linux-tar',
|
|
'distribution:archives:oss-no-jdk-linux-tar',
|
|
'distribution:archives:no-jdk-linux-tar',
|
|
'distribution:docker',
|
|
'distribution:docker:docker-build-context',
|
|
'distribution:docker:oss-docker-build-context',
|
|
'distribution:docker:oss-ubi-docker-build-context',
|
|
'distribution:docker:ubi-docker-build-context',
|
|
'distribution:docker:oss-docker-export',
|
|
'distribution:docker:docker-export',
|
|
'distribution:packages:oss-deb',
|
|
'distribution:packages:deb',
|
|
'distribution:packages:oss-no-jdk-deb',
|
|
'distribution:packages:no-jdk-deb',
|
|
'distribution:packages:oss-rpm',
|
|
'distribution:packages:rpm',
|
|
'distribution:packages:oss-no-jdk-rpm',
|
|
'distribution:packages:no-jdk-rpm',
|
|
'distribution:bwc:bugfix',
|
|
'distribution:bwc:maintenance',
|
|
'distribution:bwc:minor',
|
|
'distribution:bwc:staged',
|
|
'distribution:tools:java-version-checker',
|
|
'distribution:tools:launchers',
|
|
'distribution:tools:plugin-cli',
|
|
'server',
|
|
'server:cli',
|
|
'test:framework',
|
|
'test:fixtures:hdfs-fixture',
|
|
'test:fixtures:krb5kdc-fixture',
|
|
'test:fixtures:old-elasticsearch',
|
|
'test:fixtures:azure-fixture',
|
|
'test:logger-usage'
|
|
]
|
|
|
|
/**
|
|
* Iterates over sub directories, looking for build.gradle, and adds a project if found
|
|
* for that dir with the given path prefix. Note that this requires each level
|
|
* of the dir hierarchy to have a build.gradle. Otherwise we would have to iterate
|
|
* all files/directories in the source tree to find all projects.
|
|
*/
|
|
void addSubProjects(String path, File dir) {
|
|
if (dir.isDirectory() == false) return;
|
|
if (dir.name == 'buildSrc') return;
|
|
if (new File(dir, 'build.gradle').exists() == false) return;
|
|
if (findProject(dir) != null) return;
|
|
|
|
final String projectName = "${path}:${dir.name}"
|
|
include projectName
|
|
if (path.isEmpty() || path.startsWith(':example-plugins')) {
|
|
project(projectName).projectDir = dir
|
|
}
|
|
for (File subdir : dir.listFiles()) {
|
|
addSubProjects(projectName, subdir)
|
|
}
|
|
}
|
|
|
|
|
|
// include example plugins first, so adding plugin dirs below won't muck with :example-plugins
|
|
File examplePluginsDir = new File(rootProject.projectDir, 'plugins/examples')
|
|
for (File example : examplePluginsDir.listFiles()) {
|
|
if (example.isDirectory() == false) continue;
|
|
if (example.name.startsWith('build') || example.name.startsWith('.')) continue;
|
|
addSubProjects(':example-plugins', example)
|
|
}
|
|
project(':example-plugins').projectDir = new File(rootProject.projectDir, 'plugins/examples')
|
|
|
|
addSubProjects('', new File(rootProject.projectDir, 'libs'))
|
|
addSubProjects('', new File(rootProject.projectDir, 'modules'))
|
|
addSubProjects('', new File(rootProject.projectDir, 'plugins'))
|
|
addSubProjects('', new File(rootProject.projectDir, 'qa'))
|
|
addSubProjects('', new File(rootProject.projectDir, 'x-pack'))
|
|
|
|
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(":libs").children.each { libsProject ->
|
|
libsProject.name = "elasticsearch-${libsProject.name}"
|
|
}
|
|
|
|
// look for extra plugins for elasticsearch
|
|
File extraProjects = new File(rootProject.projectDir.parentFile, "${dirName}-extra")
|
|
if (extraProjects.exists()) {
|
|
for (File extraProjectDir : extraProjects.listFiles()) {
|
|
addSubProjects('', extraProjectDir)
|
|
}
|
|
}
|