3
3
def imageNameBase = " dockerbuildbot/docker-py"
4
4
def imageNamePy2
5
5
def imageNamePy3
6
+ def imageDindSSH
6
7
def images = [:]
7
8
8
9
def buildImage = { name , buildargs , pyTag ->
@@ -13,7 +14,7 @@ def buildImage = { name, buildargs, pyTag ->
13
14
img = docker. build(name, buildargs)
14
15
img. push()
15
16
}
16
- images[pyTag] = img. id
17
+ if (pyTag ?. trim()) images[pyTag] = img. id
17
18
}
18
19
19
20
def buildImages = { ->
@@ -23,7 +24,9 @@ def buildImages = { ->
23
24
24
25
imageNamePy2 = " ${ imageNameBase} :py2-${ gitCommit()} "
25
26
imageNamePy3 = " ${ imageNameBase} :py3-${ gitCommit()} "
27
+ imageDindSSH = " ${ imageNameBase} :sshdind-${ gitCommit()} "
26
28
29
+ buildImage(imageDindSSH, " -f tests/Dockerfile-ssh-dind ." , " " )
27
30
buildImage(imageNamePy2, " -f tests/Dockerfile --build-arg PYTHON_VERSION=2.7 ." , " py2.7" )
28
31
buildImage(imageNamePy3, " -f tests/Dockerfile --build-arg PYTHON_VERSION=3.7 ." , " py3.7" )
29
32
}
@@ -81,22 +84,37 @@ def runTests = { Map settings ->
81
84
def testNetwork = " dpy-testnet-\$ BUILD_NUMBER-\$ EXECUTOR_NUMBER-${ pythonVersion} -${ dockerVersion} "
82
85
try {
83
86
sh """ docker network create ${ testNetwork} """
84
- sh """ docker run -d --name ${ dindContainerName} -v /tmp --privileged --network ${ testNetwork} \\
85
- docker: ${ dockerVersion } -dind dockerd -H tcp://0.0.0.0:2375
87
+ sh """ docker run --rm - d --name ${ dindContainerName} -v /tmp --privileged --network ${ testNetwork} \\
88
+ ${ imageDindSSH } dockerd -H tcp://0.0.0.0:2375
86
89
"""
87
- sh """ docker run \\
90
+ sh """ docker run --rm \\
88
91
--name ${ testContainerName} \\
89
92
-e "DOCKER_HOST=tcp://${ dindContainerName} :2375" \\
90
93
-e 'DOCKER_TEST_API_VERSION=${ apiVersion} ' \\
91
94
--network ${ testNetwork} \\
92
95
--volumes-from ${ dindContainerName} \\
93
96
${ testImage} \\
94
- py.test -v -rxs --cov=docker tests/
97
+ py.test -v -rxs --cov=docker --ignore=tests/ssh tests/
98
+ """
99
+ sh """ docker stop ${ dindContainerName} """
100
+
101
+ // start DIND container with SSH
102
+ sh """ docker run --rm -d --name ${ dindContainerName} -v /tmp --privileged --network ${ testNetwork} \\
103
+ ${ imageDindSSH} dockerd --experimental"""
104
+ sh """ docker exec ${ dindContainerName} sh -c /usr/sbin/sshd """
105
+ // run SSH tests only
106
+ sh """ docker run --rm \\
107
+ --name ${ testContainerName} \\
108
+ -e "DOCKER_HOST=ssh://${ dindContainerName} :22" \\
109
+ -e 'DOCKER_TEST_API_VERSION=${ apiVersion} ' \\
110
+ --network ${ testNetwork} \\
111
+ --volumes-from ${ dindContainerName} \\
112
+ ${ testImage} \\
113
+ py.test -v -rxs --cov=docker tests/ssh
95
114
"""
96
115
} finally {
97
116
sh """
98
- docker stop ${ dindContainerName} ${ testContainerName}
99
- docker rm -vf ${ dindContainerName} ${ testContainerName}
117
+ docker stop ${ dindContainerName}
100
118
docker network rm ${ testNetwork}
101
119
"""
102
120
}
0 commit comments