| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- #!groovy
 
- def dockerVersions = ['19.03.5', '18.09.9']
 
- def baseImages = ['alpine', 'debian']
 
- def pythonVersions = ['py27', 'py37']
 
- pipeline {
 
-     agent none
 
-     options {
 
-         skipDefaultCheckout(true)
 
-         buildDiscarder(logRotator(daysToKeepStr: '30'))
 
-         timeout(time: 2, unit: 'HOURS')
 
-         timestamps()
 
-     }
 
-     environment {
 
-         TAG = tag()
 
-         BUILD_TAG = tag()
 
-     }
 
-     stages {
 
-         stage('Build test images') {
 
-             // TODO use declarative 1.5.0 `matrix` once available on CI
 
-             parallel {
 
-                 stage('alpine') {
 
-                     agent {
 
-                         label 'ubuntu && amd64 && !zfs'
 
-                     }
 
-                     steps {
 
-                         buildImage('alpine')
 
-                     }
 
-                 }
 
-                 stage('debian') {
 
-                     agent {
 
-                         label 'ubuntu && amd64 && !zfs'
 
-                     }
 
-                     steps {
 
-                         buildImage('debian')
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         stage('Test') {
 
-             steps {
 
-                 script {
 
-                     def testMatrix = [:]
 
-                     baseImages.each { baseImage ->
 
-                       dockerVersions.each { dockerVersion ->
 
-                         pythonVersions.each { pythonVersion ->
 
-                           testMatrix["${baseImage}_${dockerVersion}_${pythonVersion}"] = runTests(dockerVersion, pythonVersion, baseImage)
 
-                         }
 
-                       }
 
-                     }
 
-                     parallel testMatrix
 
-                 }
 
-             }
 
-         }
 
-     }
 
- }
 
- def buildImage(baseImage) {
 
-     def scmvar = checkout(scm)
 
-     def imageName = "dockerbuildbot/compose:${baseImage}-${scmvar.GIT_COMMIT}"
 
-     image = docker.image(imageName)
 
-     withDockerRegistry(credentialsId:'dockerbuildbot-index.docker.io') {
 
-         try {
 
-             image.pull()
 
-         } catch (Exception exc) {
 
-             ansiColor('xterm') {
 
-                 sh """docker build -t ${imageName} \\
 
-                     --target build \\
 
-                     --build-arg BUILD_PLATFORM="${baseImage}" \\
 
-                     --build-arg GIT_COMMIT="${scmvar.GIT_COMMIT}" \\
 
-                     .\\
 
-                 """
 
-                 sh "docker push ${imageName}"
 
-             }
 
-             echo "${imageName}"
 
-             return imageName
 
-         }
 
-     }
 
- }
 
- def runTests(dockerVersion, pythonVersion, baseImage) {
 
-     wrappedNode(label: "ubuntu && amd64 && !zfs", cleanWorkspace: true) {
 
-       stage("test python=${pythonVersion} / docker=${dockerVersion} / baseImage=${baseImage}") {
 
-         def scmvar = checkout(scm)
 
-         def imageName = "dockerbuildbot/compose:${baseImage}-${scmvar.GIT_COMMIT}"
 
-         def storageDriver = sh(script: "docker info -f \'{{.Driver}}\'", returnStdout: true).trim()
 
-         echo "Using local system's storage driver: ${storageDriver}"
 
-         sh """docker run \\
 
-           -t \\
 
-           --rm \\
 
-           --privileged \\
 
-           --volume="\$(pwd)/.git:/code/.git" \\
 
-           --volume="/var/run/docker.sock:/var/run/docker.sock" \\
 
-           -e "TAG=${imageName}" \\
 
-           -e "STORAGE_DRIVER=${storageDriver}" \\
 
-           -e "DOCKER_VERSIONS=${dockerVersion}" \\
 
-           -e "BUILD_NUMBER=${env.BUILD_NUMBER}" \\
 
-           -e "PY_TEST_VERSIONS=${pythonVersion}" \\
 
-           --entrypoint="script/test/ci" \\
 
-           ${imageName} \\
 
-           --verbose
 
-         """
 
-      }
 
-     }
 
- }
 
 
  |