summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2016-12-06 16:59:34 -0800
committerJoffrey F <joffrey@docker.com>2016-12-08 12:12:01 -0800
commit3fb48d111bd3c4e1a6a490fe73f76e6021847a5d (patch)
tree495015520a8b5ef45336e1bc20186dc046018881
parentd024b1bd78808faafb9d1ccc57d7520e4d04a5f6 (diff)
downloaddocker-py-3fb48d111bd3c4e1a6a490fe73f76e6021847a5d.tar.gz
Add Jenkinsfile for integration tests matrix
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r--Jenkinsfile82
1 files changed, 82 insertions, 0 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..3af2b16
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,82 @@
+#!groovy
+
+def imageNameBase = "dockerbuildbot/docker-py"
+def imageNamePy2
+def imageNamePy3
+def images = [:]
+def dockerVersions = ["1.12.3", "1.13.0-rc3"]
+
+def buildImage = { name, buildargs, pyTag ->
+ img = docker.image(name)
+ try {
+ img.pull()
+ } catch (Exception exc) {
+ img = docker.build(name, buildargs)
+ img.push()
+ }
+ images[pyTag] = img.id
+}
+
+def buildImages = { ->
+ wrappedNode(label: "ubuntu && !zfs && amd64", cleanWorkspace: true) {
+ stage("build image") {
+ checkout(scm)
+
+ imageNamePy2 = "${imageNameBase}:py2-${gitCommit()}"
+ imageNamePy3 = "${imageNameBase}:py3-${gitCommit()}"
+
+ buildImage(imageNamePy2, ".", "py2.7")
+ buildImage(imageNamePy3, "-f Dockerfile-py3 .", "py3.5")
+ }
+ }
+}
+
+def runTests = { Map settings ->
+ def dockerVersion = settings.get("dockerVersion", null)
+ def testImage = settings.get("testImage", null)
+
+ if (!testImage) {
+ throw new Exception("Need test image object, e.g.: `runTests(testImage: img)`")
+ }
+ if (!dockerVersion) {
+ throw new Exception("Need Docker version to test, e.g.: `runTests(dockerVersion: '1.12.3')`")
+ }
+
+ { ->
+ wrappedNode(label: "ubuntu && !zfs && amd64", cleanWorkspace: true) {
+ stage("test image=${testImage} / docker=${dockerVersion}") {
+ checkout(scm)
+ try {
+ sh """docker run -d --name dpy-dind-\$BUILD_NUMBER -v /tmp --privileged \\
+ dockerswarm/dind:${dockerVersion} docker daemon -H tcp://0.0.0.0:2375
+ """
+ sh """docker run \\
+ --name dpy-tests-\$BUILD_NUMBER --volumes-from dpy-dind-\$BUILD_NUMBER \\
+ -e 'DOCKER_HOST=tcp://docker:2375' \\
+ --link=dpy-dind-\$BUILD_NUMBER:docker \\
+ ${testImage} \\
+ py.test -rxs tests/integration
+ """
+ } finally {
+ sh """
+ docker stop dpy-tests-\$BUILD_NUMBER dpy-dind-\$BUILD_NUMBER
+ docker rm -vf dpy-tests-\$BUILD_NUMBER dpy-dind-\$BUILD_NUMBER
+ """
+ }
+ }
+ }
+ }
+}
+
+
+buildImages()
+
+def testMatrix = [failFast: false]
+
+for (imgKey in new ArrayList(images.keySet())) {
+ for (version in dockerVersions) {
+ testMatrix["${imgKey}_${version}"] = runTests([testImage: images[imgKey], dockerVersion: version])
+ }
+}
+
+parallel(testMatrix)