Skip to content

Commit 041ffd9

Browse files
committed
Add Jenkinsfile for integration tests matrix
Signed-off-by: Joffrey F <[email protected]>
1 parent 85d3474 commit 041ffd9

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

Jenkinsfile

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#!groovy
2+
3+
def imageNameBase = "dockerbuildbot/docker-py"
4+
def imageNamePy2
5+
def imageNamePy3
6+
def images = [:]
7+
def dockerVersions = ["1.12.3", "1.13.0-rc3"]
8+
9+
def buildImage = { name, buildargs, pyTag ->
10+
img = docker.image(name)
11+
try {
12+
img.pull()
13+
} catch (Exception exc) {
14+
img = docker.build(name, buildargs)
15+
img.push()
16+
}
17+
images[pyTag] = img.id
18+
}
19+
20+
def buildImages = { ->
21+
wrappedNode(label: "ubuntu && !zfs && amd64", cleanWorkspace: true) {
22+
stage("build image") {
23+
checkout(scm)
24+
25+
imageNamePy2 = "${imageNameBase}:py2-${gitCommit()}"
26+
imageNamePy3 = "${imageNameBase}:py3-${gitCommit()}"
27+
28+
buildImage(imageNamePy2, ".", "py2.7")
29+
buildImage(imageNamePy3, "-f Dockerfile-py3 .", "py3.5")
30+
}
31+
}
32+
}
33+
34+
def runTests = { Map settings ->
35+
def dockerVersion = settings.get("dockerVersion", null)
36+
def testImage = settings.get("testImage", null)
37+
38+
if (!testImage) {
39+
throw new Exception("Need test image object, e.g.: `runTests(testImage: img)`")
40+
}
41+
if (!dockerVersion) {
42+
throw new Exception("Need Docker version to test, e.g.: `runTests(dockerVersion: '1.12.3')`")
43+
}
44+
45+
{ ->
46+
wrappedNode(label: "ubuntu && !zfs && amd64", cleanWorkspace: true) {
47+
stage("test image=${testImage} / docker=${dockerVersion}") {
48+
checkout(scm)
49+
try {
50+
sh """docker run -d --name dpy-dind-\$BUILD_NUMBER -v /tmp --privileged \\
51+
dockerswarm/dind:${dockerVersion} docker daemon -H tcp://0.0.0.0:2375
52+
"""
53+
sh """docker run \\
54+
--name dpy-tests-\$BUILD_NUMBER --volumes-from dpy-dind-\$BUILD_NUMBER \\
55+
-e 'DOCKER_HOST=tcp://docker:2375' \\
56+
--link=dpy-dind-\$BUILD_NUMBER:docker \\
57+
${testImage} \\
58+
py.test -rxs tests/integration
59+
"""
60+
} finally {
61+
sh """
62+
docker stop dpy-tests-\$BUILD_NUMBER dpy-dind-\$BUILD_NUMBER
63+
docker rm -vf dpy-tests-\$BUILD_NUMBER dpy-dind-\$BUILD_NUMBER
64+
"""
65+
}
66+
}
67+
}
68+
}
69+
}
70+
71+
72+
buildImages()
73+
74+
def testMatrix = [failFast: false]
75+
76+
for (imgKey in new ArrayList(images.keySet())) {
77+
for (version in dockerVersions) {
78+
testMatrix["${imgKey}_${version}"] = runTests([testImage: images[imgKey], dockerVersion: version])
79+
}
80+
}
81+
82+
parallel(testMatrix)

0 commit comments

Comments
 (0)