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  }