engine: Abort job if dependency job did not succeed 79/4479/16
authorFatih Degirmenci <fdegir@gmail.com>
Fri, 17 Apr 2020 18:59:53 +0000 (18:59 +0000)
committerFatih Degirmenci <fdegir@gmail.com>
Sat, 18 Apr 2020 17:35:22 +0000 (17:35 +0000)
Change-Id: I6c677f4a0f4fb4ccc3384c16e955991793bb564d

12 files changed:
jjb/cloud-infra/cloud-infra-periodic-onap.yaml
jjb/cloud-infra/cloud-infra-periodic-spinnaker.yaml
jjb/engine/kubernetes-periodic-jobs/kubernetes-offline-release-jobs.yaml
jjb/engine/onap-periodic-jobs/onap-online-deploy-test-jobs.yaml
jjb/engine/onap-periodic-jobs/onap-online-release-jobs.yaml
jjb/engine/onap-periodic-jobs/onap-parameter-macros.yaml
jjb/engine/scripts/generate-ssh-keypair.sh
jjb/engine/scripts/package.sh
jjb/engine/scripts/upload-artifact.sh
jjb/engine/scripts/wait-for-pkg-manager.sh
jjb/engine/verify-jobs/engine-verify-deploy-test.yaml
jjb/engine/verify-jobs/engine-verify-package.yaml

index af9b8d72648beba7141e3a2f8bb2fdea996cfbd7..b967fc2d2f61e928790655dc42925b0ced3e974f 100644 (file)
@@ -30,7 +30,7 @@
 
     cloud:
       - city:
-          slave-label: 'city-jumphost-ubuntu1804'
+          slave-label: 'engine-jumphost-online-ubuntu1804'
           openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-onap'
           daily-trigger: '@midnight'
       - xerces:
index 5ea76f82b91e287df372a27031f0581488e3ccd4..cde504b45fcef77351db6c0cfcf59eb33e87bf73 100644 (file)
@@ -30,7 +30,7 @@
 
     cloud:
       - city:
-          slave-label: 'city-jumphost-ubuntu1804'
+          slave-label: 'engine-jumphost-online-ubuntu1804'
           openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-onap'
           daily-trigger: '@daily'
 
index a04d71840344a0b634e93e14315b5ad8d56c631f..29a3dba2208d1b48bbdd8b923a3fe787ab390d35 100644 (file)
           description: 'CI loop type'
       - label:
           name: SLAVE_LABEL
-          default: 'engine-build-ubuntu1804'
+          default: 'engine-package-ubuntu1804'
           description: 'Slave label to schedule this job on.'
 
     properties:
       - logrotate
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - 'engine-verify-package-.*'
+            - 'onap-sdc-periodic-release-offline-.*'
+            - 'onap-so-periodic-release-offline-.*'
+            - 'kubernetes-periodic-release-offline-.*'
+          block-level: 'NODE'
 
     wrappers:
       - build-timeout:
index 3ed4518420e9856d4c9d2f8db82771f0ca651153..2448092db45504cecf07f236199b4a601fd07942 100644 (file)
@@ -66,7 +66,7 @@
 
     cloud:
       - city:
-          slave-label: 'city-jumphost-ubuntu1804'
+          slave-label: 'engine-jumphost-online-ubuntu1804'
           openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-onap'
           daily-trigger: '@midnight'
 
index def858b5388e68394acc8e6993b3068d9788d130..41ed4019d35b1ed0104fa1372e758d0ff886986a 100644 (file)
           description: 'CI loop type'
       - label:
           name: SLAVE_LABEL
-          default: 'engine-build-ubuntu1804'
+          default: 'engine-package-ubuntu1804'
           description: 'Slave label to schedule this job on.'
 
     properties:
       - logrotate
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - 'engine-verify-package-.*'
+            - 'onap-sdc-periodic-release-offline-.*'
+            - 'onap-so-periodic-release-offline-.*'
+            - 'kubernetes-periodic-release-offline-.*'
+          block-level: 'NODE'
 
     wrappers:
       - build-timeout:
index 511837a8fd7efb3cfa435f15d13656fc26a73e18..837a27a004219b6343a685bb0418e403a63e6c0b 100644 (file)
@@ -28,7 +28,7 @@
       - nordix-gerrit-parameters
       - label:
           name: SLAVE_LABEL
-          default: 'city-jumphost-ubuntu1804'
+          default: 'engine-jumphost-online-ubuntu1804'
           description: 'Slave label to schedule this job on. All slaves have Ubuntu1604 no matter what distro target nodes use'
       - string:
           name: PROVISIONER_TYPE
index 04633fd248e9858ab0ff6fd8279e233132317fac..00f8336a5ad1513ac0a95793159e2e0ea69a5d04 100755 (executable)
@@ -22,6 +22,8 @@ set -o nounset
 set -o errexit
 set -o pipefail
 
-echo "Info  : Generating SSH keypair for the job"
-ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N '' <<< y > /dev/null 2>&1
-chmod -R go-rwx ~/.ssh
+if [[ ! -f "$HOME/.ssh/id_rsa" ]]; then
+  echo "Info  : Generating SSH keypair for the job"
+  ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N '' <<< y > /dev/null 2>&1
+  chmod -R go-rwx ~/.ssh
+fi
index 482b3a06181d9136f963f2cfcff72ef6a2484a76..4815fd8c41a3181f6c60bc8d03263f696c65c1f6 100755 (executable)
@@ -22,5 +22,7 @@ set -o nounset
 set -o errexit
 set -o pipefail
 
-cd "$WORKSPACE"
+cd "$WORKSPACE/engine"
 ./package.sh
+
+# vim: set ts=2 sw=2 expandtab:
index 79ba0a9d4e88cf9463b51c42409237e8cee7a408..97bb1363641590b5f158370f9f05dd65c913febb 100755 (executable)
@@ -22,7 +22,7 @@ set -o nounset
 set -o errexit
 set -o pipefail
 
-if [[ "$EXECUTION_MODE" == "offline-deployment" ]]; then
+if [[ "$EXECUTION_MODE" == "packaging" || "$EXECUTION_MODE" == "offline-deployment" ]]; then
   cd /tmp
   for ARTIFACT_TO_UPLOAD in $ARTIFACTS_TO_UPLOAD; do
     echo "Info  : Generating checksums for $ARTIFACT_TO_UPLOAD"
index 99f75440272d927b055f3ccf0a6cfde7b0ecf978..028a4ce78e6ac2f3d5f005e1033ac36ba6e843ae 100755 (executable)
@@ -34,7 +34,7 @@ esac
 # just wait few seconds before attempting to check pkg manager process
 sleep 10
 
-echo "Info: Waiting for completion of an existing $pkg_mgr_cmd process before proceeding..."
+echo "Info  : Waiting for completion of an existing $pkg_mgr_cmd process before proceeding..."
 while true; do
   pkg_mgr_process=$(pgrep -f $pkg_mgr_cmd | cat)
   if [[ -n $pkg_mgr_process ]]; then
@@ -43,6 +43,6 @@ while true; do
     break
   fi
 done
-echo "Info: $pkg_mgr_cmd process done. Continuing..."
+echo "Info  : $pkg_mgr_cmd process done. Continuing..."
 
 # vim: set ts=2 sw=2 expandtab:
index da08cf152e94d1d550c55fbc860850cbc3dafd6d..e24377b592785d371eb7204124f21d497c4909bf 100644 (file)
@@ -67,6 +67,9 @@
       - city:
           openrc-credentials-file: 'est-jenkins-openrcfile-city-karlskrona-onap'
 
+    dependency-jobs: 'engine-verify-package-{distro}-{stream}'
+    dependency-job-var: 'TRIGGER_engine_verify_package_{distro}_{stream}_BUILD_RESULT'
+
     jobs:
       - 'engine-verify-{environment-type}-deploy-test-{distro}-{cloud}-{type}-{stream}'
       - 'engine-verify-{environment-type}-{phase}-{distro}-{cloud}-{type}-{stream}'
@@ -83,7 +86,7 @@
     parameters:
       - label:
           name: SLAVE_LABEL
-          default: 'engine-{slave-type}-online-{distro}'
+          default: 'engine-{slave-type}-{environment-type}-{distro}'
           description: 'Slave label to schedule this job on.'
       - string:
           name: EXECUTION_MODE
           name: VERBOSITY
           default: 'true'
           description: 'Verbosity setting for the engine - true or false - default is false'
+      - string:
+          name: NORDIX_GERRIT_PUBLIC_IP
+          default: '91.106.198.142'
+          description: 'Public IP of Nordix Gerrit. Offline deployments can not resolve domain name'
       - string:
           name: NORDIX_ARM_PUBLIC_IP
           default: '91.106.198.25'
           description: 'Name of the repository to upload and download artifact to/from. Depends on the stack'
       - string:
           name: ARTIFACT_TO_DOWNLOAD
-          default: "https://artifactory.nordix.org/artifactory/nordix-kubernetes/installer/oss/gerrit/$GERRIT_CHANGE_ID/k8s-installer-ubuntu1804.bsx"
+          default: "k8s-installer-ubuntu1804.bsx"
+          description: 'Artifact to download'
+      - string:
+          name: NORDIX_ARTIFACT_URL
+          default: "$NORDIX_ARM_HTTPS_URL/$NORDIX_ARM_REPO/installer/oss/gerrit/$GERRIT_CHANGE_NUMBER"
           description: 'Artifact to download'
       - project-parameters:
           project: $GERRIT_PROJECT
             - 'engine-verify-offline-deploy-test-.*'
           block-level: 'NODE'
 
-    wrappers:
-      - build-timeout:
-          timeout: 180
-      - credentials-binding:
-          - file:
-              credential-id: '{openrc-credentials-file}'
-              variable: OPENRC_FILE
-          - username-password-separated:
-              credential-id: 'nordix-cicd-arm-credentials'
-              username: NORDIX_ARM_USERNAME
-              password: NORDIX_ARM_TOKEN
-      - mask-passwords
-      - fix-workspace-permissions
-      - openstack:
-          single-use: True
-
     scm:
       - git-scm-gerrit:
           ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
             notbuilt: '{obj:notbuilt}'
           custom-url: '* $JOB_NAME $BUILD_URL'
           readable-message: 'true'
-          dependency-jobs: 'engine-verify-tox-{stream},engine-verify-package-{distro}-{stream}'
+          dependency-jobs: '{dependency-jobs}'
+
+    wrappers:
+      - build-timeout:
+          timeout: 180
+      - credentials-binding:
+          - file:
+              credential-id: '{openrc-credentials-file}'
+              variable: OPENRC_FILE
+          - username-password-separated:
+              credential-id: 'nordix-cicd-arm-credentials'
+              username: NORDIX_ARM_USERNAME
+              password: NORDIX_ARM_TOKEN
+      - mask-passwords
+      - openstack:
+          single-use: True
+      - pre-scm-buildstep:
+          failOnError: true
+          buildsteps:
+            - system-groovy:
+                command: |
+                  def build = this.getProperty('binding').getVariable('build')
+                  def listener = this.getProperty('binding').getVariable('listener')
+                  if (build.getEnvironment(listener).{dependency-job-var} != "SUCCESS") {{
+                    println "WARN  : Aborting build since dependent job did not succeed!"
+                    throw new InterruptedException()
+                  }}
+            - shell: |
+                #!/bin/bash
+                sudo chown -R $USER:$USER $WORKSPACE || exit 1
+                # offline nodes can not resolve Nordix Gerrit
+                if [[ "$EXECUTION_MODE" == "offline-deployment" ]]; then
+                  echo "Info  : Offline deployment. Adding Nordix Gerrit Public IP to /etc/hosts"
+                  sudo sed -i 's/^search/# search/' /etc/resolv.conf
+                  sudo bash -c "cat << EOF >> /etc/hosts
+                # managed by engine
+                $NORDIX_GERRIT_PUBLIC_IP gerrit.nordix.org
+                # managed by engine
+                EOF"
+                fi
 
     builders:
       - multijob:
           max-total: 3
           option: project
 
+    scm:
+      - git-scm-gerrit:
+          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
+          branch: '{branch}'
+          refspec: $GERRIT_REFSPEC
+          wipe_workspace: true
+          clean_before: false
+
     wrappers:
       - build-timeout:
           timeout: 180
       - mask-passwords
       - fix-workspace-permissions
 
-    scm:
-      - git-scm-gerrit:
-          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
-          branch: '{branch}'
-          refspec: $GERRIT_REFSPEC
-          wipe_workspace: true
-          clean_before: false
-
     builders:
+      - shell: |
+          #!/bin/bash
+          if [[ "$EXECUTION_MODE" == "offline-deployment" && "$PROVISIONER_TYPE" == "heat" ]]; then
+            echo "Info  : Offline deployment and testing on cloud instances is not currently supported!"
+            exit 0
+          fi
       - 'generate-ssh-keypair-macro'
       - 'wait-pkg-mgr-macro'
       - 'download-artifact-macro'
index 4a44bd03117aeaf2334f2f09cdab64acf37a3552..27f4b2e9dedfb8e0d1f4141cf2a74d2784a19e75 100644 (file)
@@ -36,6 +36,9 @@
     distro:
       - ubuntu1804
 
+    dependency-jobs: 'engine-verify-tox-{stream}'
+    dependency-job-var: 'TRIGGER_engine_verify_tox_{stream}_BUILD_RESULT'
+
     jobs:
       - 'engine-verify-package-{distro}-{stream}'
 
           name: NORDIX_ARM_REPO
           default: 'nordix-kubernetes'
           description: 'Name of the repository to upload and download artifact to/from. Depends on the stack'
+      - string:
+          name: NORDIX_ARTIFACT_URL
+          default: "$NORDIX_ARM_HTTPS_URL/$NORDIX_ARM_REPO/installer/oss/gerrit/$GERRIT_CHANGE_NUMBER"
+          description: 'Artifact to download'
       - string:
           name: CI_LOOP
           default: 'verify'
           description: 'CI loop type'
       - label:
           name: SLAVE_LABEL
-          default: 'engine-master-offline-{distro}'
+          default: 'engine-package-{distro}'
           description: 'Slave label to schedule this job on.'
       - project-parameters:
           project: $GERRIT_PROJECT
           max-per-node: 1
           max-total: 3
           option: project
-
-    wrappers:
-      - build-timeout:
-          timeout: 180
-      - mask-passwords
-      - fix-workspace-permissions
-      - openstack:
-          single-use: True
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - 'engine-verify-package-.*'
+            - 'onap-sdc-periodic-release-offline-.*'
+            - 'onap-so-periodic-release-offline-.*'
+            - 'kubernetes-periodic-release-offline-.*'
+          block-level: 'NODE'
 
     scm:
       - git-scm-gerrit:
             notbuilt: '{obj:notbuilt}'
           custom-url: '* $JOB_NAME $BUILD_URL'
           readable-message: 'true'
-          dependency-jobs: 'engine-verify-tox-{stream}'
+          dependency-jobs: '{dependency-jobs}'
 
     wrappers:
+      - openstack:
+          single-use: True
       - build-timeout:
           timeout: 70
       - credentials-binding:
               username: NORDIX_ARM_USERNAME
               password: NORDIX_ARM_TOKEN
       - mask-passwords
-      - fix-workspace-permissions
+      - pre-scm-buildstep:
+          failOnError: true
+          buildsteps:
+            - system-groovy:
+                command: |
+                  def build = this.getProperty('binding').getVariable('build')
+                  def listener = this.getProperty('binding').getVariable('listener')
+                  if (build.getEnvironment(listener).{dependency-job-var} != "SUCCESS") {{
+                    println "WARN  : Aborting build since dependent job did not succeed!"
+                    throw new InterruptedException()
+                  }}
+            - shell: |
+                #!/bin/bash
+                sudo chown -R $USER:$USER $WORKSPACE || exit 1
+
 
     builders:
       - 'generate-ssh-keypair-macro'