diff --git a/DB-test/build.gradle b/DB-test/build.gradle index b2d596b996f..ae9fa2ecaf3 100644 --- a/DB-test/build.gradle +++ b/DB-test/build.gradle @@ -2,7 +2,7 @@ plugins { id 'com.bmuschko.docker-remote-api' } -evaluationDependsOn ':Integrations' // runtimeBase +evaluationDependsOn ':docker-runtime-base' // runtimeBase configurations { //compile.extendsFrom dhDb @@ -58,7 +58,7 @@ tasks.getByName('check').dependsOn Docker.registerDockerTask(project, 'test-in-d into 'classes' } } - parentContainers = [project(':Integrations').tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base dockerfile { // base image with default java, python, wheels from 'deephaven/runtime-base:local-build' diff --git a/Integrations/build.gradle b/Integrations/build.gradle index 730bf20ea55..9bfe6dd995b 100644 --- a/Integrations/build.gradle +++ b/Integrations/build.gradle @@ -1,14 +1,9 @@ -import com.bmuschko.gradle.docker.tasks.image.Dockerfile - plugins { id 'com.bmuschko.docker-remote-api' id 'com.avast.gradle.docker-compose' } -evaluationDependsOn ':docker-java-and-python' -evaluationDependsOn ':deephaven-jpy' -evaluationDependsOn ':deephaven-wheel' -evaluationDependsOn ':deephaven2-wheel' +evaluationDependsOn ':docker-runtime-base' configurations { compile.extendsFrom dhIntegrations @@ -66,45 +61,6 @@ idea { } } -def dockerContext = project.layout.buildDirectory.dir('context') - -def prepareDocker = project.tasks.register('prepareDocker', Sync) { - // deephaven-jpy.whl - def deephavenJpyWheel = project(':deephaven-jpy').tasks.getByName('buildWheel') - - // deephaven.whl - def deephavenWheel = project(':deephaven-wheel').tasks.getByName('buildWheel') - - // deephaven2.whl - def deephaven2Wheel = project(':deephaven2-wheel').tasks.getByName('buildWheel') - - from (deephavenJpyWheel.outputs.files) { - into 'deephaven-jpy-wheel' - } - from (deephavenWheel.outputs.files) { - into 'deephaven-wheel' - } - from (deephaven2Wheel.outputs.files) { - into 'deephaven2-wheel' - } - - from 'src/main/docker' - into dockerContext -} - -Docker.registerDockerImage(project, 'buildDeephavenPython') { - // deephaven/java-and-python:local-build - def javaAndPython = project(':docker-java-and-python').tasks.getByName('buildDocker') - - dependsOn prepareDocker - - inputs.files javaAndPython.outputs.files - - inputDir.set dockerContext - - images.add('deephaven/runtime-base:local-build') -} - JavaPluginConvention java = project.convention.plugins.get('java') as JavaPluginConvention SourceSet test = java.sourceSets.maybeCreate('test') @@ -125,7 +81,7 @@ def runInDocker = { String name, String sourcePath, List command -> into 'python/configs' } } - parentContainers = [tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base imageName = 'deephaven/py-integrations:local-build' diff --git a/build.gradle b/build.gradle index 853e89b358f..dd0e76b60e6 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,7 @@ ext.globalVersion = "0.7.0" // If you have fishlib open in IDE, also set includeFish=true to get the // intellij projects wired up across repositories. -Set modsAreBasic = subprojects.findAll {it.name in ['deephaven-wheel', 'deephaven2-wheel', 'envoy', 'grpc-proxy', 'web-client-ui', 'protoc', 'pyclient', 'sphinx', 'docker-java-and-python'] } +Set modsAreBasic = subprojects.findAll {it.name in ['deephaven-wheel', 'deephaven2-wheel', 'envoy', 'grpc-proxy', 'web-client-ui', 'protoc', 'pyclient', 'sphinx', 'docker-java-and-python', 'docker-runtime-base'] } Set modsAreBin = subprojects.findAll {it.name in ['bin', 'configs', 'test-configs'] } diff --git a/docker/runtime-base/build.gradle b/docker/runtime-base/build.gradle new file mode 100644 index 00000000000..99cc61f8077 --- /dev/null +++ b/docker/runtime-base/build.gradle @@ -0,0 +1,49 @@ +plugins { + id 'com.bmuschko.docker-remote-api' +} + +evaluationDependsOn ':docker-java-and-python' +evaluationDependsOn ':deephaven-jpy' +evaluationDependsOn ':deephaven-wheel' +evaluationDependsOn ':deephaven2-wheel' + +def dockerContext = project.layout.buildDirectory.dir('context') + +def prepareDocker = project.tasks.register('prepareDocker', Sync) { + // deephaven-jpy.whl + def deephavenJpyWheel = project(':deephaven-jpy').tasks.getByName('buildWheel') + + // deephaven.whl + def deephavenWheel = project(':deephaven-wheel').tasks.getByName('buildWheel') + + // deephaven2.whl + def deephaven2Wheel = project(':deephaven2-wheel').tasks.getByName('buildWheel') + + from (deephavenJpyWheel.outputs.files) { + into 'deephaven-jpy-wheel' + } + from (deephavenWheel.outputs.files) { + into 'deephaven-wheel' + } + from (deephaven2Wheel.outputs.files) { + into 'deephaven2-wheel' + } + + from 'src/main/docker' + into dockerContext +} + +Docker.registerDockerImage(project, 'buildDocker') { + // deephaven/java-and-python:local-build + def javaAndPython = project(':docker-java-and-python').tasks.getByName('buildDocker') + + dependsOn prepareDocker + + inputs.files javaAndPython.outputs.files + + inputDir.set dockerContext + + images.add('deephaven/runtime-base:local-build') +} + +assemble.dependsOn buildDocker \ No newline at end of file diff --git a/Integrations/src/main/docker/Dockerfile b/docker/runtime-base/src/main/docker/Dockerfile similarity index 100% rename from Integrations/src/main/docker/Dockerfile rename to docker/runtime-base/src/main/docker/Dockerfile diff --git a/grpc-api/server/docker/build.gradle b/grpc-api/server/docker/build.gradle index dc7bc3e329d..557a77cd308 100644 --- a/grpc-api/server/docker/build.gradle +++ b/grpc-api/server/docker/build.gradle @@ -5,7 +5,7 @@ plugins { id 'com.bmuschko.docker-java-application' } -evaluationDependsOn(":Integrations") +evaluationDependsOn(':docker-runtime-base') dependencies { implementation(project(':grpc-api')) { @@ -101,7 +101,7 @@ docker { // deephaven/runtime-base -def grpcApiBase = project(':Integrations').tasks.findByName('buildDeephavenPython') +def grpcApiBase = project(':docker-runtime-base').tasks.findByName('buildDocker') dockerBuildImage.dependsOn grpcApiBase dockerBuildImage.inputs.file grpcApiBase.outputs.files.singleFile // Currently, GH build-ci.yml calls dockerCreateDockerfile, and relies on buildx; so we need to diff --git a/py/jpy-integration/build.gradle b/py/jpy-integration/build.gradle index b74e4c124fd..21bd359d5aa 100644 --- a/py/jpy-integration/build.gradle +++ b/py/jpy-integration/build.gradle @@ -7,7 +7,7 @@ plugins { } evaluationDependsOn ':deephaven-jpy' -evaluationDependsOn ':Integrations' +evaluationDependsOn ':docker-runtime-base' sourceSets { // All sourcesets here are used for testing; we'll inform the idea{} plugin, below @@ -134,7 +134,7 @@ Closure> gradleTestInDocker = { String taskName, SourceSet so into 'classes' } } - parentContainers = [project(':Integrations').tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base dockerfile { // base image with default java, python, wheels from 'deephaven/runtime-base:local-build' @@ -166,7 +166,7 @@ Closure> javaMainInDocker = { String taskName, String javaMai into 'classpath' } } - parentContainers = [project(':Integrations').tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base imageName = 'deephaven/jpy-integration-java-to-python-tests:local-build' dockerfile { from 'deephaven/runtime-base:local-build' @@ -217,7 +217,7 @@ Closure> pyExec = { String taskName, List command, bo into 'python' } } - parentContainers = [project(':Integrations').tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base imageName = 'deephaven/jpy-integration-python-to-java-tests:local-build' dockerfile { // set up the container, env vars - things that aren't likely to change diff --git a/settings.gradle b/settings.gradle index d7c921f2aa7..7afde85e88b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -186,6 +186,9 @@ project(':deephaven2-wheel').projectDir = file('py/deephaven2-wheel') include(':docker-java-and-python') project(':docker-java-and-python').projectDir = file('docker/java-and-python') +include(':docker-runtime-base') +project(':docker-runtime-base').projectDir = file('docker/runtime-base') + // Apply "vanity naming" (look for .gradle files matching ProjectName/ProjectName.gradle) File root = settings.rootDir mods.each { diff --git a/sphinx/sphinx.gradle b/sphinx/sphinx.gradle index 863c867b61a..b16bdc03e82 100644 --- a/sphinx/sphinx.gradle +++ b/sphinx/sphinx.gradle @@ -6,7 +6,7 @@ plugins { description = 'Generates docs for the python libraries provided in Deephaven Core' -evaluationDependsOn ':Integrations' +evaluationDependsOn ':docker-runtime-base' evaluationDependsOn ':pyclient' def copyPyClientWhl = tasks.register('copyPyClientWhl', Sync) { @@ -37,7 +37,7 @@ def sphinxImage = Docker.registerDockerImage(project, 'sphinx') { inputs.files copyPyClientWhl.get().outputs.files inputs.files copySphinxLib.get().outputs.files inputDir.set layout.buildDirectory.dir('sphinx-image') - inputs.files project(':Integrations').tasks.findByName('buildDeephavenPython').outputs.files // deephaven/runtime-base + inputs.files project(':docker-runtime-base').tasks.findByName('buildDocker').outputs.files // deephaven/runtime-base images.add('deephaven/sphinx:local-build') } @@ -101,7 +101,7 @@ def cppClientDoxygenTask = Docker.registerDockerTask(project, 'cppClientDoxygen' doxygen ''') } - parentContainers = [project(':Integrations').tasks.findByName('buildDeephavenPython')] // deephaven/runtime-base + parentContainers = [project(':docker-runtime-base').tasks.findByName('buildDocker')] // deephaven/runtime-base containerOutPath = '/project/doc/doxygenoutput' copyOut { into "$buildDir/cppClientDoxygen"