Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C67BD200C26 for ; Sat, 25 Feb 2017 18:25:22 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id C558A160B7B; Sat, 25 Feb 2017 17:25:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CD2E4160B50 for ; Sat, 25 Feb 2017 18:25:21 +0100 (CET) Received: (qmail 95912 invoked by uid 500); 25 Feb 2017 17:25:21 -0000 Mailing-List: contact commits-help@polygene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@polygene.apache.org Delivered-To: mailing list commits@polygene.apache.org Received: (qmail 95903 invoked by uid 99); 25 Feb 2017 17:25:21 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 25 Feb 2017 17:25:21 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id E12E4DFDA9; Sat, 25 Feb 2017 17:25:20 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: paulmerlin@apache.org To: commits@polygene.apache.org Date: Sat, 25 Feb 2017 17:25:20 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [1/2] polygene-java git commit: build: move Docker image dependencies declaration in ~/dependencies.gradle archived-at: Sat, 25 Feb 2017 17:25:22 -0000 Repository: polygene-java Updated Branches: refs/heads/develop 7cedbf2e6 -> 120a15ced build: move Docker image dependencies declaration in ~/dependencies.gradle And use fixed image versions instead of dynamic versions Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/cdd2719d Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/cdd2719d Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/cdd2719d Branch: refs/heads/develop Commit: cdd2719d291050fb1a319b122bb786412d6aa415 Parents: 7cedbf2 Author: Paul Merlin Authored: Sat Feb 25 17:34:08 2017 +0100 Committer: Paul Merlin Committed: Sat Feb 25 17:34:08 2017 +0100 ---------------------------------------------------------------------- .../DependenciesDeclarationExtension.groovy | 1 + .../internals/InternalDockerPlugin.groovy | 63 +++++++++++++++----- dependencies.gradle | 11 ++++ .../src/main/docker/cassandra/Dockerfile | 2 +- .../src/main/docker/memcached/Dockerfile | 2 +- .../src/main/docker/mysql/Dockerfile | 2 +- .../src/main/docker/postgres/Dockerfile | 2 +- .../src/main/docker/redis/Dockerfile | 2 +- .../src/main/docker/riak/Dockerfile | 2 +- 9 files changed, 65 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/DependenciesDeclarationExtension.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/DependenciesDeclarationExtension.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/DependenciesDeclarationExtension.groovy index b9dc1e0..afd1ede 100644 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/DependenciesDeclarationExtension.groovy +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/DependenciesDeclarationExtension.groovy @@ -30,4 +30,5 @@ class DependenciesDeclarationExtension final Map> defaultDependencies = [ : ] BiConsumer dependencySubstitutionSpec final Map buildToolsVersions = [ : ] + final Map dockerImagesVersions = [ : ] } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy index cdfd95d..2247caf 100644 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy @@ -25,15 +25,24 @@ import groovy.transform.CompileStatic import org.apache.polygene.gradle.BasePlugin import org.apache.polygene.gradle.code.CodePlugin import org.apache.polygene.gradle.code.PublishNaming +import org.apache.polygene.gradle.dependencies.DependenciesDeclarationExtension import org.apache.polygene.gradle.dependencies.DependenciesPlugin +import org.apache.tools.ant.filters.ReplaceTokens import org.gradle.api.Action import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.api.file.CopySpec import org.gradle.api.logging.LogLevel @CompileStatic class InternalDockerPlugin implements Plugin { + static class TaskNames + { + static final String CHECK_DOCKER_CONNECTIVITY = 'checkDockerConnectivity' + } + private final String dockerMachineName = System.getenv( 'DOCKER_MACHINE_NAME' ) private final String dockerHost = System.getenv( 'DOCKER_HOST' ) private final String dockerCertPath = System.getenv( 'DOCKER_CERT_PATH' ) @@ -61,7 +70,7 @@ class InternalDockerPlugin implements Plugin private void applyDockerSwitch( Project project ) { - project.tasks.create( 'checkDockerConnectivity', DockerVersion, { DockerVersion task -> + project.tasks.create( TaskNames.CHECK_DOCKER_CONNECTIVITY, DockerVersion, { DockerVersion task -> task.onError = { ex -> // Disable Docker for this build project.rootProject.extensions.extraProperties.set( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY, true ) @@ -81,28 +90,50 @@ class InternalDockerPlugin implements Plugin { def classesTask = project.tasks.getByName 'classes' def dockers = project.file( 'src/main/docker' ) + def dependencies = project.rootProject.extensions.getByType( DependenciesDeclarationExtension ) dockers.eachDir { File dockerDir -> def dockerName = dockerDir.name - def taskName = "build${ dockerName.capitalize() }DockerImage" - project.tasks.create( taskName, DockerBuildImage ) { DockerBuildImage task -> - task.group = 'docker' - task.description = "Build $dockerName Docker image" - task.dependsOn 'checkDockerConnectivity' - task.onlyIf { - def extra = project.rootProject.extensions.extraProperties - !( extra.has( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY ) && - extra.get( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY ) ) + def buildDockerfileTaskName = "build${ dockerName.capitalize() }Dockerfile" + def buildImageTaskName = "build${ dockerName.capitalize() }DockerImage" + def tmpDir = project.file "${ project.buildDir }/tmp/docker/${ dockerName }" + tmpDir.mkdirs() + def buildDockerfileTask = project.tasks.create( buildDockerfileTaskName ) { Task task -> + task.description = "Build $dockerName Dockerfile" + task.inputs.property 'dockerImagesVersions', dependencies.dockerImagesVersions + task.inputs.dir dockerDir + task.outputs.dir tmpDir + // Filter Dockerfile for image versions from dependencies declaration + task.doFirst { + project.copy { CopySpec spec -> + spec.from( dockerDir ) { CopySpec unfiltered -> + unfiltered.exclude 'Dockerfile' + } + spec.from( dockerDir ) { CopySpec filtered -> + filtered.include 'Dockerfile' + filtered.filter ReplaceTokens, tokens: dependencies.dockerImagesVersions + } + spec.into tmpDir + } } + } + def buildImageTask = project.tasks.create( buildImageTaskName, DockerBuildImage, { DockerBuildImage task -> + task.description = "Build $dockerName Docker image" + task.inputDir = tmpDir + task.dockerFile = new File( tmpDir, 'Dockerfile' ) + task.tag = "org.apache.polygene:${ PublishNaming.publishedNameFor ":internals:docker-$dockerName" }" + } as Action ) + [ buildDockerfileTask, buildImageTask ].each { Task task -> + task.group = 'docker' + task.dependsOn TaskNames.CHECK_DOCKER_CONNECTIVITY + task.onlyIf { !project.rootProject.findProperty( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY ) } task.inputs.property 'dockerMachineName', dockerMachineName task.inputs.property 'dockerHostEnv', dockerHost task.inputs.property 'dockerCertPath', dockerCertPath - task.inputDir = dockerDir - task.dockerFile = new File( dockerDir, 'Dockerfile' ) - task.tag = "org.apache.polygene:${ PublishNaming.publishedNameFor ":internals:docker-$dockerName" }" - // Ensure that all Docker images are built alongside this project - // This is a bit of a stretch but works for now - classesTask.dependsOn task } + buildImageTask.dependsOn buildDockerfileTask + // Ensure that all Docker images are built alongside this project + // This is a bit of a stretch but works for now + classesTask.dependsOn buildImageTask } } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/dependencies.gradle ---------------------------------------------------------------------- diff --git a/dependencies.gradle b/dependencies.gradle index c8605a4..932bf85 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -251,3 +251,14 @@ dependencies.dependencySubstitutionSpec = { DependencySubstitution substitution, dependencies.buildToolsVersions << [ jacoco: '0.7.8' ] + +// Docker Images +dependencies.dockerImagesVersions << [ + cassandra: 'cassandra:3.10', + fakeS3: 'lphoward/fake-s3:14.04', + memcached: 'memcached:1.4-alpine', + mariadb: 'mariadb:10.1', + postgres: 'postgres:9.6-alpine', + redis: 'redis:3.2-alpine', + riak: 'basho/riak-kv:ubuntu-2.2.0' +] http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile b/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile index e382cc1..11d22b4 100644 --- a/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM cassandra:3.9 +FROM @cassandra@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/memcached/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/memcached/Dockerfile b/internals/testsupport-internal/src/main/docker/memcached/Dockerfile index d9e7020..0b1a4b2 100644 --- a/internals/testsupport-internal/src/main/docker/memcached/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/memcached/Dockerfile @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM memcached:alpine +FROM @memcached@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/mysql/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/mysql/Dockerfile b/internals/testsupport-internal/src/main/docker/mysql/Dockerfile index 4e5c49c..967d45d 100644 --- a/internals/testsupport-internal/src/main/docker/mysql/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/mysql/Dockerfile @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM mariadb:latest \ No newline at end of file +FROM @mariadb@ \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/postgres/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/postgres/Dockerfile b/internals/testsupport-internal/src/main/docker/postgres/Dockerfile index 90bcffe..d3dad53 100644 --- a/internals/testsupport-internal/src/main/docker/postgres/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/postgres/Dockerfile @@ -13,5 +13,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM postgres:alpine +FROM @postgres@ COPY init-test-db.sh /docker-entrypoint-initdb.d/init-test-db.sh http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/redis/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/redis/Dockerfile b/internals/testsupport-internal/src/main/docker/redis/Dockerfile index 74a7806..d0e67fc 100644 --- a/internals/testsupport-internal/src/main/docker/redis/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/redis/Dockerfile @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM redis:alpine +FROM @redis@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/cdd2719d/internals/testsupport-internal/src/main/docker/riak/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/riak/Dockerfile b/internals/testsupport-internal/src/main/docker/riak/Dockerfile index e02ba9b..776d7af 100644 --- a/internals/testsupport-internal/src/main/docker/riak/Dockerfile +++ b/internals/testsupport-internal/src/main/docker/riak/Dockerfile @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM basho/riak-kv:latest +FROM @riak@