diff options
author | Joffrey F <joffrey@docker.com> | 2016-12-06 16:59:34 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2016-12-08 12:12:01 -0800 |
commit | 3fb48d111bd3c4e1a6a490fe73f76e6021847a5d (patch) | |
tree | 495015520a8b5ef45336e1bc20186dc046018881 /Jenkinsfile | |
parent | d024b1bd78808faafb9d1ccc57d7520e4d04a5f6 (diff) | |
download | docker-py-3fb48d111bd3c4e1a6a490fe73f76e6021847a5d.tar.gz |
Add Jenkinsfile for integration tests matrix
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'Jenkinsfile')
-rw-r--r-- | Jenkinsfile | 82 |
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) |