Signed-off-by: Tibor Vass <tibor@docker.com>
(cherry picked from commit e554fb23c82bd672436800dac3ea9739da8e3377)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -80,7 +80,7 @@ pipeline {
|
| 80 | 80 |
''' |
| 81 | 81 |
} |
| 82 | 82 |
} |
| 83 |
- stage("Static") {
|
|
| 83 |
+ stage("Static") {
|
|
| 84 | 84 |
steps {
|
| 85 | 85 |
sh ''' |
| 86 | 86 |
docker run --rm -t --privileged \ |
| ... | ... |
@@ -203,20 +203,61 @@ pipeline {
|
| 203 | 203 |
} |
| 204 | 204 |
stage("Run tests") {
|
| 205 | 205 |
steps {
|
| 206 |
- sh ''' |
|
| 206 |
+ sh '''#!/bin/bash |
|
| 207 |
+ # bash is needed so 'jobs -p' works properly |
|
| 208 |
+ # it also accepts setting inline envvars for functions without explicitly exporting |
|
| 209 |
+ |
|
| 210 |
+ run_tests() {
|
|
| 211 |
+ [ -n "$TESTDEBUG" ] && rm= || rm=--rm; |
|
| 212 |
+ docker run $rm -t --privileged \ |
|
| 213 |
+ -v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \ |
|
| 214 |
+ -v "$WORKSPACE/.git:/go/src/github.com/docker/docker/.git" \ |
|
| 215 |
+ --name "$CONTAINER_NAME" \ |
|
| 216 |
+ -e KEEPBUNDLE=1 \ |
|
| 217 |
+ -e TESTDEBUG \ |
|
| 218 |
+ -e TESTFLAGS \ |
|
| 219 |
+ -e TEST_INTEGRATION_DEST \ |
|
| 220 |
+ -e TEST_SKIP_INTEGRATION \ |
|
| 221 |
+ -e TEST_SKIP_INTEGRATION_CLI \ |
|
| 222 |
+ -e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
| 223 |
+ -e DOCKER_GRAPHDRIVER \ |
|
| 224 |
+ docker:${GIT_COMMIT} \
|
|
| 225 |
+ hack/make.sh \ |
|
| 226 |
+ "$1" \ |
|
| 227 |
+ test-integration |
|
| 228 |
+ } |
|
| 229 |
+ |
|
| 230 |
+ trap "exit" INT TERM |
|
| 231 |
+ trap 'pids=$(jobs -p); echo "Remaining pids to kill: [$pids]"; [ -z "$pids" ] || kill $pids' EXIT |
|
| 232 |
+ |
|
| 233 |
+ CONTAINER_NAME=docker-pr$BUILD_NUMBER |
|
| 234 |
+ |
|
| 207 | 235 |
docker run --rm -t --privileged \ |
| 208 | 236 |
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \ |
| 209 | 237 |
-v "$WORKSPACE/.git:/go/src/github.com/docker/docker/.git" \ |
| 210 |
- --name docker-pr$BUILD_NUMBER \ |
|
| 238 |
+ --name ${CONTAINER_NAME}-build \
|
|
| 211 | 239 |
-e DOCKER_EXPERIMENTAL \ |
| 212 | 240 |
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
| 213 | 241 |
-e DOCKER_GRAPHDRIVER \ |
| 214 | 242 |
docker:${GIT_COMMIT} \
|
| 215 | 243 |
hack/make.sh \ |
| 216 |
- binary-daemon \ |
|
| 217 |
- dynbinary-daemon \ |
|
| 218 |
- test-integration-flaky \ |
|
| 219 |
- test-integration \ |
|
| 244 |
+ dynbinary-daemon |
|
| 245 |
+ |
|
| 246 |
+ # flaky + integration |
|
| 247 |
+ TEST_INTEGRATION_DEST=1 CONTAINER_NAME=${CONTAINER_NAME}-1 TEST_SKIP_INTEGRATION_CLI=1 run_tests test-integration-flaky &
|
|
| 248 |
+ |
|
| 249 |
+ # integration-cli first set |
|
| 250 |
+ TEST_INTEGRATION_DEST=2 CONTAINER_NAME=${CONTAINER_NAME}-2 TEST_SKIP_INTEGRATION=1 TESTFLAGS="-check.f ^(DockerSuite|DockerNetworkSuite|DockerHubPullSuite|DockerRegistrySuite|DockerSchema1RegistrySuite|DockerRegistryAuthTokenSuite|DockerRegistryAuthHtpasswdSuite)" run_tests &
|
|
| 251 |
+ |
|
| 252 |
+ # integration-cli second set |
|
| 253 |
+ TEST_INTEGRATION_DEST=3 CONTAINER_NAME=${CONTAINER_NAME}-3 TEST_SKIP_INTEGRATION=1 TESTFLAGS="-check.f ^(DockerSwarmSuite|DockerDaemonSuite|DockerExternalVolumeSuite)" run_tests &
|
|
| 254 |
+ |
|
| 255 |
+ set +x |
|
| 256 |
+ c=0 |
|
| 257 |
+ for job in $(jobs -p); do |
|
| 258 |
+ wait ${job} || c=$?
|
|
| 259 |
+ done |
|
| 260 |
+ exit $c |
|
| 220 | 261 |
''' |
| 221 | 262 |
} |
| 222 | 263 |
} |
| ... | ... |
@@ -1,15 +1,21 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
set -e -o pipefail |
| 3 | 3 |
|
| 4 |
+if [ -n "$TEST_INTEGRATION_DEST" ]; then |
|
| 5 |
+ export DEST="$ABS_DEST/$TEST_INTEGRATION_DEST" |
|
| 6 |
+ export DOCKER_INTEGRATION_DAEMON_DEST="$DEST" |
|
| 7 |
+ mkdir -p "$DEST" |
|
| 8 |
+fi |
|
| 9 |
+ |
|
| 4 | 10 |
source hack/make/.integration-test-helpers |
| 5 | 11 |
|
| 6 | 12 |
if [ ! -z "${TEST_SKIP_INTEGRATION}" ] && [ ! -z "${TEST_SKIP_INTEGRATION_CLI}" ]; then
|
| 7 |
- echo integration and integraiton-cli skipped according to env vars |
|
| 13 |
+ echo integration and integration-cli skipped according to env vars |
|
| 8 | 14 |
exit 0 |
| 9 | 15 |
fi |
| 10 | 16 |
|
| 11 |
- |
|
| 12 | 17 |
( |
| 18 |
+ env |
|
| 13 | 19 |
build_test_suite_binaries |
| 14 | 20 |
bundle .integration-daemon-start |
| 15 | 21 |
bundle .integration-daemon-setup |
| ... | ... |
@@ -95,7 +95,6 @@ func New(t testingT, ops ...func(*Daemon)) *Daemon {
|
| 95 | 95 |
if ht, ok := t.(test.HelperT); ok {
|
| 96 | 96 |
ht.Helper() |
| 97 | 97 |
} |
| 98 |
- t.Log("Creating a new daemon")
|
|
| 99 | 98 |
dest := os.Getenv("DOCKER_INTEGRATION_DAEMON_DEST")
|
| 100 | 99 |
if dest == "" {
|
| 101 | 100 |
dest = os.Getenv("DEST")
|
| ... | ... |
@@ -106,6 +105,7 @@ func New(t testingT, ops ...func(*Daemon)) *Daemon {
|
| 106 | 106 |
case testNamer: |
| 107 | 107 |
dest = filepath.Join(dest, v.TestName()) |
| 108 | 108 |
} |
| 109 |
+ t.Logf("Creating a new daemon at: %s", dest)
|
|
| 109 | 110 |
assert.Check(t, dest != "", "Please set the DOCKER_INTEGRATION_DAEMON_DEST or the DEST environment variable") |
| 110 | 111 |
|
| 111 | 112 |
storageDriver := os.Getenv("DOCKER_GRAPHDRIVER")
|