[fuel] verify: Multiarch, docker build step 23/62023/2
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Mon, 10 Sep 2018 00:27:37 +0000 (02:27 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Mon, 10 Sep 2018 15:36:31 +0000 (17:36 +0200)
Rework Fuel verify jobs:
- split 'fuel-verify' into per-arch jobs (amd64 and arm64):
  * for now, arm64 jobs are non-voting;
- add 'docker-build' phase job:
  * the docker build job will run on the same virtual POD jump host
    as the deploy, to bypass the need of pushing to a (public)
    Docker hub registry - this might be refactored later to resemble
    the old Fuel ISO build workflow where the artifacts built during
    verify are the ones actually promoted - with the current method
    the final build & tag (ran on OPNCI CI build servers) might yield
    different results due to different docker build cache states;
  * the locally built container image is tagged with the 'verify'
    designator and not pushed to a public registry, only consumed
    during verify's job 'deploy-virtual' phase;

JIRA: ARMBAND-401
JIRA: FUEL-383

Change-Id: I9b0d8079e759cdc895260219a8a4989411c995ff
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
jjb/fuel/fuel-verify-jobs.yaml

index 8eb5ab0..c5a0ec4 100644 (file)
           gs-pathname: '/{stream}'
           disabled: false
     #####################################
+    # cluster architectures
+    #####################################
+    arch_tag:
+      - 'amd64':
+          slave-label: 'fuel-virtual'
+          functest-suite-label: 'fuel-virtual'
+      - 'arm64':
+          slave-label: 'armband-virtual'
+          functest-suite-label: 'fuel-armband-virtual'
+    #####################################
     # patch verification phases
     #####################################
     phase:
-      - 'deploy-virtual':
-          slave-label: 'fuel-virtual'
+      - 'docker-build'
+      - 'deploy-virtual'
     #####################################
     # jobs
     #####################################
     jobs:
-      - 'fuel-verify-{stream}'
-      - 'fuel-verify-{phase}-{stream}'
+      - 'fuel-verify-{arch_tag}-{stream}'
+      - 'fuel-verify-{phase}-{arch_tag}-{stream}'
 #####################################
 # job templates
 #####################################
 - job-template:
-    name: 'fuel-verify-{stream}'
+    name: 'fuel-verify-{arch_tag}-{stream}'
 
     project-type: multijob
 
           fail: true
 
     triggers:
-      - gerrit:
-          server-name: 'gerrit.opnfv.org'
-          trigger-on:
-            - patchset-created-event:
-                exclude-drafts: 'false'
-                exclude-trivial-rebase: 'false'
-                exclude-no-code-change: 'false'
-            - draft-published-event
-            - comment-added-contains-event:
-                comment-contains-value: 'recheck'
-            - comment-added-contains-event:
-                comment-contains-value: 'reverify'
-          projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '{project}'
-              branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/{branch}'
-              file-paths:
-                - compare-type: ANT
-                  pattern: 'ci/**'
-                - compare-type: ANT
-                  pattern: 'mcp/**'
-              disable-strict-forbidden-file-verification: 'true'
-              forbidden-file-paths:
-                - compare-type: ANT
-                  pattern: 'docs/**'
-          readable-message: true
+      - 'fuel-verify-{arch_tag}-trigger'
 
     parameters:
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'fuel-virtual-defaults':
+      - '{slave-label}-defaults':
           installer: '{installer}'
       - '{installer}-defaults':
           gs-pathname: '{gs-pathname}'
     builders:
       - description-setter:
           description: "Built on $NODE_NAME"
+      - multijob:
+          name: docker-build
+          condition: SUCCESSFUL
+          projects:
+            - name: 'fuel-verify-docker-build-{arch_tag}-{stream}'
+              current-parameters: false
+              predefined-parameters: |
+                BRANCH=$BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+
       - multijob:
           name: deploy-virtual
           condition: SUCCESSFUL
           projects:
-            - name: 'fuel-verify-deploy-virtual-{stream}'
+            - name: 'fuel-verify-deploy-virtual-{arch_tag}-{stream}'
               current-parameters: false
               predefined-parameters: |
+                MCP_DOCKER_TAG=verify
                 BRANCH=$BRANCH
                 GERRIT_REFSPEC=$GERRIT_REFSPEC
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
           condition: SUCCESSFUL
           projects:
             # Use Functest job definition from jjb/functest/functest-daily-jobs
-            - name: 'functest-fuel-virtual-suite-{stream}'
+            - name: 'functest-{functest-suite-label}-suite-{stream}'
               current-parameters: false
               predefined-parameters: |
                 FUNCTEST_MODE=tier
               abort-all-job: true
 
 - job-template:
-    name: 'fuel-verify-{phase}-{stream}'
+    name: 'fuel-verify-{phase}-{arch_tag}-{stream}'
 
     disabled: '{obj:disabled}'
 
       - build-blocker:
           use-build-blocker: true
           blocking-jobs:
+            - 'fuel-verify-docker-build-.*'
             - 'fuel-verify-deploy-.*'
           block-level: 'NODE'
 
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - '{slave-label}-defaults'
-      - 'fuel-virtual-defaults':
+      - '{slave-label}-defaults':
           installer: '{installer}'
       - '{installer}-defaults':
           gs-pathname: '{gs-pathname}'
       - description-setter:
           description: "Built on $NODE_NAME"
       - '{project}-verify-{phase}-macro'
+########################
+# trigger macros
+########################
+- trigger:
+    name: 'fuel-verify-amd64-trigger'
+    triggers:
+      - gerrit: &fuel_verify_amd64_trigger
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event:
+                exclude-drafts: 'false'
+                exclude-trivial-rebase: 'false'
+                exclude-no-code-change: 'false'
+            - draft-published-event
+            - comment-added-contains-event:
+                comment-contains-value: 'recheck'
+            - comment-added-contains-event:
+                comment-contains-value: 'reverify'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+              file-paths:
+                - compare-type: ANT
+                  pattern: 'ci/**'
+                - compare-type: ANT
+                  pattern: 'mcp/**'
+              disable-strict-forbidden-file-verification: 'true'
+              forbidden-file-paths:
+                - compare-type: ANT
+                  pattern: 'docs/**'
+          readable-message: true
+- trigger:
+    name: 'fuel-verify-arm64-trigger'
+    triggers:
+      - gerrit:
+          <<: *fuel_verify_amd64_trigger
+          skip-vote:
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
 #####################################
 # builder macros
 #####################################
     builders:
       - shell:
           !include-raw: ./fuel-deploy.sh
+- builder:
+    name: 'fuel-verify-docker-build-macro'
+    builders:
+      - shell: |
+          #!/bin/bash -ex
+          sudo ./ci/build.sh 'verify' ''