github.com/datadog/cilium@v1.6.12/jenkinsfiles/ginkgo.Jenkinsfile (about) 1 @Library('cilium') _ 2 3 pipeline { 4 agent { 5 label 'baremetal' 6 } 7 8 environment { 9 PROJ_PATH = "src/github.com/cilium/cilium" 10 MEMORY = "4096" 11 SERVER_BOX = "cilium/ubuntu" 12 NETNEXT=setIfLabel("ci/net-next", "true", "false") 13 GINKGO_TIMEOUT="138m" 14 } 15 16 options { 17 timeout(time: 270, unit: 'MINUTES') 18 timestamps() 19 ansiColor('xterm') 20 } 21 22 stages { 23 stage('Checkout') { 24 options { 25 timeout(time: 20, unit: 'MINUTES') 26 } 27 28 steps { 29 BuildIfLabel('area/k8s', 'Cilium-PR-Kubernetes-Upstream') 30 BuildIfLabel('integration/cni-flannel', 'Cilium-PR-K8s-Flannel') 31 BuildIfLabel('area/k8s', 'Cilium-PR-Ginkgo-Tests-K8s') 32 BuildIfLabel('area/documentation', 'Cilium-PR-Doc-Tests') 33 sh 'env' 34 checkout scm 35 sh 'mkdir -p ${PROJ_PATH}' 36 sh 'ls -A | grep -v src | xargs mv -t ${PROJ_PATH}' 37 sh '/usr/local/bin/cleanup || true' 38 } 39 } 40 stage('Precheck') { 41 options { 42 timeout(time: 20, unit: 'MINUTES') 43 } 44 45 environment { 46 TESTDIR="${WORKSPACE}/${PROJ_PATH}/" 47 } 48 steps { 49 sh "cd ${TESTDIR}; make jenkins-precheck" 50 } 51 post { 52 always { 53 sh "cd ${TESTDIR}; make clean-jenkins-precheck || true" 54 } 55 unsuccessful { 56 script { 57 if (!currentBuild.displayName.contains('fail')) { 58 currentBuild.displayName = 'precheck fail\n' + currentBuild.displayName 59 } 60 } 61 } 62 } 63 } 64 stage('Preload vagrant boxes') { 65 steps { 66 sh '/usr/local/bin/add_vagrant_box ${WORKSPACE}/${PROJ_PATH}/vagrant_box_defaults.rb' 67 } 68 post { 69 unsuccessful { 70 script { 71 if (!currentBuild.displayName.contains('fail')) { 72 currentBuild.displayName = 'preload vagrant boxes fail' + currentBuild.displayName 73 } 74 } 75 } 76 } 77 } 78 stage ("Copy code and boot vms"){ 79 options { 80 timeout(time: 60, unit: 'MINUTES') 81 } 82 83 environment { 84 FAILFAST=setIfLabel("ci/fail-fast", "true", "false") 85 CONTAINER_RUNTIME=setIfLabel("area/containerd", "containerd", "docker") 86 } 87 parallel { 88 stage('Boot vms runtime') { 89 environment { 90 TESTED_SUITE="runtime" 91 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 92 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 93 } 94 steps { 95 sh 'mkdir -p ${GOPATH}/src/github.com/cilium' 96 sh 'cp -a ${WORKSPACE}/${PROJ_PATH} ${GOPATH}/${PROJ_PATH}' 97 retry(3) { 98 sh 'cd ${TESTDIR}; vagrant destroy runtime --force' 99 sh 'cd ${TESTDIR}; vagrant up runtime --provision' 100 } 101 } 102 post { 103 unsuccessful { 104 script { 105 if (!currentBuild.displayName.contains('fail')) { 106 currentBuild.displayName = 'runtime vm provisioning fail\n' + currentBuild.displayName 107 } 108 } 109 } 110 } 111 } 112 stage('Boot vms K8s-1.10 net-next') { 113 environment { 114 TESTED_SUITE="k8s-1.10" 115 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 116 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 117 NETNEXT="true" 118 } 119 steps { 120 sh 'mkdir -p ${GOPATH}/src/github.com/cilium' 121 sh 'cp -a ${WORKSPACE}/${PROJ_PATH} ${GOPATH}/${PROJ_PATH}' 122 retry(3) { 123 sh 'cd ${TESTDIR}; K8S_VERSION=1.10 vagrant destroy k8s1-1.10 k8s2-1.10 --force' 124 sh 'cd ${TESTDIR}; K8S_VERSION=1.10 vagrant up k8s1-1.10 k8s2-1.10 --provision' 125 } 126 } 127 post { 128 unsuccessful { 129 script { 130 if (!currentBuild.displayName.contains('fail')) { 131 currentBuild.displayName = 'K8s 1.10 net-next vm provisioning fail\n' + currentBuild.displayName 132 } 133 } 134 } 135 } 136 } 137 stage('Boot vms K8s-1.16') { 138 environment { 139 TESTED_SUITE="k8s-1.16" 140 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 141 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 142 } 143 steps { 144 sh 'mkdir -p ${GOPATH}/src/github.com/cilium' 145 sh 'cp -a ${WORKSPACE}/${PROJ_PATH} ${GOPATH}/${PROJ_PATH}' 146 retry(3) { 147 sh 'cd ${TESTDIR}; K8S_VERSION=1.16 vagrant destroy k8s1-1.16 k8s2-1.16 --force' 148 sh 'cd ${TESTDIR}; K8S_VERSION=1.16 vagrant up k8s1-1.16 k8s2-1.16 --provision' 149 } 150 } 151 post { 152 unsuccessful { 153 script { 154 if (!currentBuild.displayName.contains('fail')) { 155 currentBuild.displayName = 'K8s 1.16 vm provisioning fail\n' + currentBuild.displayName 156 } 157 } 158 } 159 } 160 } 161 } 162 } 163 stage ("BDD-Test-PR"){ 164 options { 165 timeout(time: 140, unit: 'MINUTES') 166 } 167 environment { 168 FAILFAST=setIfLabel("ci/fail-fast", "true", "false") 169 CONTAINER_RUNTIME=setIfLabel("area/containerd", "containerd", "docker") 170 } 171 parallel { 172 stage('BDD-Test-PR-runtime') { 173 environment { 174 TESTED_SUITE="runtime" 175 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 176 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 177 } 178 steps { 179 sh 'cd ${TESTDIR}; ginkgo --focus=" Runtime*" -v --failFast=${FAILFAST} -- -cilium.provision=false -cilium.timeout=${GINKGO_TIMEOUT}' 180 } 181 post { 182 always { 183 sh 'cd ${TESTDIR}; ./post_build_agent.sh || true' 184 sh 'cd ${TESTDIR}; ./archive_test_results.sh || true' 185 sh 'cd ${TESTDIR}/..; mv *.zip ${WORKSPACE} || true' 186 sh 'cd ${TESTDIR}; mv *.xml ${WORKSPACE}/${PROJ_PATH}/test || true' 187 sh 'cd ${TESTDIR}; vagrant destroy -f || true' 188 } 189 unsuccessful { 190 script { 191 if (!currentBuild.displayName.contains('fail')) { 192 currentBuild.displayName = 'Runtime tests fail\n' + currentBuild.displayName 193 } 194 } 195 } 196 } 197 } 198 stage('BDD-Test-PR-K8s-1.10-net-next') { 199 environment { 200 TESTED_SUITE="k8s-1.10" 201 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 202 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 203 NETNEXT="true" 204 } 205 steps { 206 sh 'cd ${TESTDIR}; K8S_VERSION=1.10 ginkgo --focus=" K8s*" -v --failFast=${FAILFAST} -- -cilium.provision=false -cilium.timeout=${GINKGO_TIMEOUT}' 207 } 208 post { 209 always { 210 sh 'cd ${TESTDIR}; ./post_build_agent.sh || true' 211 sh 'cd ${TESTDIR}; ./archive_test_results.sh || true' 212 sh 'cd ${TESTDIR}/..; mv *.zip ${WORKSPACE} || true' 213 sh 'cd ${TESTDIR}; mv *.xml ${WORKSPACE}/${PROJ_PATH}/test || true' 214 sh 'cd ${TESTDIR}; K8S_VERSION=1.10 vagrant destroy -f || true' 215 } 216 unsuccessful { 217 script { 218 if (!currentBuild.displayName.contains('fail')) { 219 currentBuild.displayName = 'K8s 1.10-net-next fail\n' + currentBuild.displayName 220 } 221 } 222 } 223 } 224 } 225 stage('BDD-Test-PR-K8s-1.16') { 226 environment { 227 TESTED_SUITE="k8s-1.16" 228 GOPATH="${WORKSPACE}/${TESTED_SUITE}-gopath" 229 TESTDIR="${GOPATH}/${PROJ_PATH}/test" 230 } 231 steps { 232 sh 'cd ${TESTDIR}; K8S_VERSION=1.16 ginkgo --focus=" K8s*" -v --failFast=${FAILFAST} -- -cilium.provision=false -cilium.timeout=${GINKGO_TIMEOUT}' 233 } 234 post { 235 always { 236 sh 'cd ${TESTDIR}; ./post_build_agent.sh || true' 237 sh 'cd ${TESTDIR}; ./archive_test_results.sh || true' 238 sh 'cd ${TESTDIR}/..; mv *.zip ${WORKSPACE} || true' 239 sh 'cd ${TESTDIR}; mv *.xml ${WORKSPACE}/${PROJ_PATH}/test || true' 240 sh 'cd ${TESTDIR}; K8S_VERSION=1.16 vagrant destroy -f || true' 241 } 242 unsuccessful { 243 script { 244 if (!currentBuild.displayName.contains('fail')) { 245 currentBuild.displayName = 'K8s 1.16 fail\n' + currentBuild.displayName 246 } 247 } 248 } 249 } 250 } 251 } 252 post { 253 always { 254 archiveArtifacts artifacts: '*.zip' 255 junit testDataPublishers: [[$class: 'AttachmentPublisher']], testResults: 'src/github.com/cilium/cilium/test/*.xml' 256 } 257 } 258 } 259 } 260 261 post { 262 always { 263 cleanWs() 264 sh '/usr/local/bin/cleanup || true' 265 } 266 } 267 }