Remove falsy ;;
[releng.git] / jjb / releng / functest-docker.yml
index dff08fe..147bcda 100644 (file)
     build-job-settings: &build-job-settings
       current-parameters: false
       git-revision: true
-      node-parameters: true
+      node-parameters: false
       predefined-parameters: |
         PUSH_IMAGE=$PUSH_IMAGE
         COMMIT_ID=$COMMIT_ID
         RELEASE_VERSION=$RELEASE_VERSION
         DOCKERFILE=$DOCKERFILE
-        ARCH_TAG=$ARCH_TAG
       kill-phase-on: FAILURE
       abort-all-jobs: false
 
     manifest-job-settings: &manifest-job-settings
       current-parameters: false
       git-revision: true
-      node-parameters: true
-      predefined-parameters: |
+      node-parameters: false
+      predefined-parameters:
         RELEASE_VERSION=$RELEASE_VERSION
-        ARCH_TAG=$ARCH_TAG
       kill-phase-on: FAILURE
       abort-all-jobs: false
 
     # yamllint enable rule:key-duplicates
     jobs:
-      - "functest-docker-build-push-{arch_tag}-{stream}"
-      - "functest-{image}-build-push-{arch_tag}-{stream}"
-      - "functest-{image}-create-manifest-{arch_tag}-{stream}"
+      - "functest-docker-{stream}"
+      - "functest-{image}-docker-build-{arch_tag}-{stream}"
+      - "functest-{image}-docker-manifest-{stream}"
+
 ########################
 # job templates
 ########################
 - job-template:
-    name: 'functest-docker-build-push-{arch_tag}-{stream}'
+    name: 'functest-docker-{stream}'
 
     project-type: multijob
 
       - job-parameters:
           project: '{project}'
           branch: '{branch}'
-          slave_label: '{slave_label}'
-          arch_tag: '{arch_tag}'
-      - string:
-          name: ARCH_TAG
-          default: "{arch_tag}"
-          description: "If set, this value will be added to the docker image tag as a prefix"
+          slave_label: 'opnfv-build-ubuntu'
+          arch_tag: 'amd64'
 
     properties:
       - throttle:
 
     builders:
       - multijob:
-          name: 'build-base-img-create-manifest'
-          execution-type: SEQUENTIAL
+          name: 'build functest-core images'
+          execution-type: PARALLEL
           projects:
-            - name: 'functest-core-build-push-{stream}'
+            - name: 'functest-core-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-core-docker-build-arm64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-core-create-manifest-{stream}'
+      - multijob:
+          name: 'publish functest-core manifests'
+          execution-type: PARALLEL
+          projects:
+            - name: 'functest-core-docker-manifest-{stream}'
               <<: *manifest-job-settings
       - multijob:
-          name: 'build-child-img'
+          name: 'build all functest images'
           condition: SUCCESSFUL
           execution-type: PARALLEL
           projects:
-            - name: 'functest-healthcheck-build-push-{stream}'
+            - name: 'functest-healthcheck-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-healthcheck-docker-build-arm64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-features-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-features-docker-build-arm64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-features-build-push-{stream}'
+            - name: 'functest-components-docker-build-amd64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-components-build-push-{stream}'
+            - name: 'functest-components-docker-build-arm64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-parser-build-push-{stream}'
+            - name: 'functest-parser-docker-build-amd64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-smoke-build-push-{stream}'
+            - name: 'functest-parser-docker-build-arm64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-vnf-build-push-{stream}'
+            - name: 'functest-smoke-docker-build-amd64-{stream}'
               <<: *build-job-settings
-            - name: 'functest-restapi-build-push-{stream}'
+            - name: 'functest-smoke-docker-build-arm64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-vnf-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-vnf-docker-build-arm64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-restapi-docker-build-amd64-{stream}'
+              <<: *build-job-settings
+            - name: 'functest-restapi-docker-build-arm64-{stream}'
               <<: *build-job-settings
       - multijob:
-          name: 'create-img-manifest'
+          name: 'publish all manifests'
           condition: SUCCESSFUL
           execution-type: PARALLEL
           projects:
-            - name: 'functest-healthcheck-create-manifest-{stream}'
+            - name: 'functest-healthcheck-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-features-create-manifest-{stream}'
+            - name: 'functest-features-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-components-create-manifest-{stream}'
+            - name: 'functest-components-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-parser-create-manifest-{stream}'
+            - name: 'functest-parser-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-smoke-create-manifest-{stream}'
+            - name: 'functest-smoke-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-vnf-create-manifest-{stream}'
+            - name: 'functest-vnf-docker-manifest-{stream}'
               <<: *manifest-job-settings
-            - name: 'functest-restapi-create-manifest-{stream}'
+            - name: 'functest-restapi-docker-manifest-{stream}'
               <<: *manifest-job-settings
 
     publishers:
-      - 'functest-{arch_tag}-recipients'
+      - 'functest-amd64-recipients'
+      - 'functest-arm64-recipients'
 
 - job-template:
-
-    name: 'functest-{image}-build-push-{arch_tag}-{stream}'
-
+    name: 'functest-{image}-docker-build-{arch_tag}-{stream}'
     disabled: '{obj:disabled}'
-
     parameters:
       - job-parameters:
           project: '{project}'
           branch: '{branch}'
           slave_label: '{slave_label}'
           arch_tag: '{arch_tag}'
-      - string:
-          name: DOCKER_REPO_NAME
-          default: "opnfv/functest-{image}"
-          description: "Dockerhub repo to be pushed to."
-      - string:
-          name: DOCKER_DIR
-          default: "docker/{image}"
-          description: "Directory containing files needed by the Dockerfile"
-
     scm:
       - git-scm
-
-    triggers:
-      - pollscm:
-          cron: "*/30 * * * *"
-
-    publishers:
-      - 'functest-{arch_tag}-recipients'
-
     builders:
-      - shell:
-          !include-raw-escape: ./opnfv-docker.sh
+      - shell: |
+          #!/bin/bash -ex
+          case "{arch_tag}" in
+          "arm64")
+              sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;;
+          *)
+              sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;;
+          esac
+          exit $?
 
 - job-template:
-
-    name: 'functest-{image}-create-manifest-{arch_tag}-{stream}'
-
-    disabled: '{obj:disabled}'
+    name: 'functest-{image}-docker-manifest-{stream}'
 
     parameters:
-      - job-parameters:
+      - project-parameter:
           project: '{project}'
           branch: '{branch}'
-          slave_label: '{slave_label}'
-          arch_tag: '{arch_tag}'
+      - label:
+          name: SLAVE_LABEL
+          default: 'opnfv-build-ubuntu'
+          description: 'Slave label on Jenkins'
       - string:
-          name: DOCKER_REPO_NAME
-          default: "opnfv/functest-{image}"
-          description: "Dockerhub repo to be pushed to."
+          name: PROJECT
+          default: "{project}"
+          description: "Project name used to enable job conditions"
       - string:
-          name: DOCKER_DIR
-          default: "docker/{image}"
-          description: "Directory containing files needed by the Dockerfile"
-
-    builders:
-      - shell:
-          !include-raw-escape: ./opnfv-manifest.sh
-
-    scm:
-      - git-scm
+          name: RELEASE_VERSION
+          default: ""
+          description: "Docker tag to be built, e.g. 5.0.0, opnfv-5.0.0, 5.0.RC1"
+      - string:
+          name: GIT_BASE
+          default: https://gerrit.opnfv.org/gerrit/$PROJECT
+          description: 'Git URL to use on this Jenkins Slave'
 
-    triggers:
-      - pollscm:
-          cron: "*/30 * * * *"
+    disabled: '{obj:disabled}'
 
-    publishers:
-      - 'functest-{arch_tag}-recipients'
+    builders:
+      - shell: |
+          #!/bin/bash -ex
+          case "{stream}" in
+          "master")
+              tag="latest" ;;
+          *)
+              tag="{stream}" ;;
+          esac
+          sudo manifest-tool push from-args \
+              --platforms linux/amd64,linux/arm64 \
+              --template opnfv/functest-{image}:ARCH-$tag \
+              --target opnfv/functest-{image}:$tag
+          exit $?
 
 # parameter macro
 - parameter: