You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2017/02/26 22:47:44 UTC
[22/50] [abbrv] polygene-java git commit: build: move Docker image
dependencies declaration in ~/dependencies.gradle
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/serialization-3.0
Commit: cdd2719d291050fb1a319b122bb786412d6aa415
Parents: 7cedbf2
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Feb 25 17:34:08 2017 +0100
Committer: Paul Merlin <pa...@apache.org>
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<String, List<Object>> defaultDependencies = [ : ]
BiConsumer<DependencySubstitution, ModuleComponentSelector> dependencySubstitutionSpec
final Map<String, String> buildToolsVersions = [ : ]
+ final Map<String, String> 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<Project>
{
+ 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<Project>
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<Project>
{
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<DockerBuildImage> )
+ [ 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@