Merge "Update "yardstick-ubuntu-18.04" dockerfile in job"
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Tue, 15 Jan 2019 22:25:46 +0000 (22:25 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 15 Jan 2019 22:25:46 +0000 (22:25 +0000)
jjb/armband/armband-ci-jobs.yaml
jjb/fuel/fuel-daily-jobs.yaml
jjb/fuel/fuel-verify-jobs.yaml
jjb/functest/functest-kubernetes.yaml [new file with mode: 0644]
jjb/functest/functest-virtual.yaml [deleted file]
jjb/functest/functest.yaml [new file with mode: 0644]
jjb/functest/xtesting.yaml

index 9694ba9..2fda33e 100644 (file)
       branch: '{stream}'
       gs-pathname: ''
       disabled: false
+      functest_docker_tag: hunter
     fraser: &fraser
       stream: fraser
       branch: 'stable/{stream}'
       disabled: false
       gs-pathname: '/{stream}'
+      functest_docker_tag: '{stream}'
     gambia: &gambia
       stream: gambia
       branch: 'stable/{stream}'
       gs-pathname: '/{stream}'
       disabled: false
+      functest_docker_tag: '{stream}'
     # -------------------------------
     # DEPLOY TYPE ANCHORS
     # -------------------------------
             - trigger-builds:
                 - project: 'functest-{installer}-{pod}-daily-{stream}'
                   current-parameters: false
-                  predefined-parameters:
+                  predefined-parameters: |
                     DEPLOY_SCENARIO={scenario}
+                    DOCKER_TAG={functest_docker_tag}
                   same-node: true
                   block: true
                   block-thresholds:
index 3e64c16..6cc6ab1 100644 (file)
       branch: '{stream}'
       disabled: false
       gs-pathname: ''
+      functest_docker_tag: hunter
     fraser: &fraser
       stream: fraser
       branch: 'stable/{stream}'
       disabled: false
       gs-pathname: '/{stream}'
+      functest_docker_tag: '{stream}'
     gambia: &gambia
       stream: gambia
       branch: 'stable/{stream}'
       disabled: false
       gs-pathname: '/{stream}'
+      functest_docker_tag: '{stream}'
     # -------------------------------
     # POD, INSTALLER, AND BRANCH MAPPING
     # -------------------------------
             - trigger-builds:
                 - project: 'functest-fuel-{pod}-daily-{stream}'
                   current-parameters: false
-                  predefined-parameters:
+                  predefined-parameters: |
                     DEPLOY_SCENARIO={scenario}
+                    DOCKER_TAG={functest_docker_tag}
                   same-node: true
                   block: true
                   block-thresholds:
index 3a7af7d..d318237 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+          functest_docker_tag: hunter
       - gambia:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           disabled: false
+          functest_docker_tag: '{stream}'
     #####################################
     # cluster architectures
     #####################################
                 GERRIT_REFSPEC=$GERRIT_REFSPEC
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                DOCKER_TAG={functest_docker_tag}
               node-parameters: true
               enable-condition: "def m = ! ('$NODE_LABELS' =~ /armband-virtual/)"
               kill-phase-on: NEVER
diff --git a/jjb/functest/functest-kubernetes.yaml b/jjb/functest/functest-kubernetes.yaml
new file mode 100644 (file)
index 0000000..ae87498
--- /dev/null
@@ -0,0 +1,541 @@
+---
+- functest-kubernetes-jobs: &functest-kubernetes-jobs
+    name: 'functest-kubernetes-jobs'
+    current-parameters: true
+
+- functest-kubernetes-params: &functest-kubernetes-params
+    name: 'functest-kubernetes-params'
+    repo: 'opnfv'
+    port:
+    tag:
+      - latest:
+          branch: master
+      - hunter:
+          branch: stable/hunter
+      - gambia:
+          branch: stable/gambia
+
+- parameter:
+    name: functest-kubernetes-slave
+    parameters:
+      - label:
+          name: slave
+          default: functest-virtual
+
+- parameter:
+    name: functest-kubernetes-branch
+    parameters:
+      - string:
+          name: branch
+          default: '{branch}'
+
+- functest-kubernetes-containers: &functest-kubernetes-containers
+    name: 'functest-kubernetes-containers'
+    repo: '{repo}'
+    port: '{port}'
+    container: '{container}'
+    tag: '{tag}'
+
+- functest-kubernetes-run-containers: &functest-kubernetes-run-containers
+    name: 'functest-kubernetes-build-containers'
+    <<: *functest-kubernetes-containers
+    test: '{test}'
+
+- functest-kubernetes-build-containers: &functest-kubernetes-build-containers
+    name: 'functest-kubernetes-build-containers'
+    <<: *functest-kubernetes-containers
+    ref_arg: '{ref_arg}'
+    path: '{path}'
+
+- builder:
+    name: functest-kubernetes-pull-containers
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker pull $image
+
+- builder:
+    name: functest-kubernetes-build-containers
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          if [ "{ref_arg}" = "None" ]; then
+            build_arg=""
+          else
+            build_arg="--build-arg {ref_arg}={ref}"
+          fi
+          cd {path}
+          sudo docker build $build_arg \
+            --pull=false --no-cache --force-rm=true \
+            -t $image .
+
+- builder:
+    name: functest-kubernetes-run-containers
+    builders:
+      - shell: |
+          set +ex
+          [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker run --rm \
+            -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
+            -e DEPLOY_SCENARIO=k8-nosdn-nofeature-noha \
+            -v /home/opnfv/functest-kubernetes/config:/root/.kube/config \
+            $image run_tests -t {test}
+          res=$?
+          gsutil -m cp -r $WORKSPACE/ \
+            gs://artifacts.opnfv.org/functest-kubernetes/$JOB_NAME-$BUILD_ID > /dev/null 2>&1
+          find $WORKSPACE -type f \
+            -printf \
+            "http://artifacts.opnfv.org/functest-kubernetes/$JOB_NAME-$BUILD_ID/%P\n"
+          exit $res
+
+- builder:
+    name: functest-kubernetes-remove-images
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker rmi $image || true
+
+- scm:
+    name: functest-kubernetes-scm
+    scm:
+      - git:
+          url: https://gerrit.opnfv.org/gerrit/functest-kubernetes
+          refspec: '+refs/changes/*:refs/changes/*'
+          branches:
+            - '{ref}'
+
+- job-template:
+    name: 'functest-kubernetes-{repo}-{container}-{tag}-pull'
+    parameters:
+      - functest-kubernetes-slave
+    builders:
+      - functest-kubernetes-pull-containers:
+          <<: *functest-kubernetes-containers
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-pull'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-healthcheck'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-pull'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-smoke'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-features-pull'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-features'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-pull'
+
+- job-template:
+    name: 'functest-kubernetes-{repo}-{container}-{tag}-rmi'
+    parameters:
+      - functest-kubernetes-slave
+    builders:
+      - functest-kubernetes-remove-images:
+          <<: *functest-kubernetes-containers
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-rmi'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-healthcheck'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-rmi'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-smoke'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-features-rmi'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-features'
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-rmi'
+
+- job-template:
+    name: 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run'
+    parameters:
+      - functest-kubernetes-slave
+    builders:
+      - functest-kubernetes-run-containers:
+          <<: *functest-kubernetes-run-containers
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-healthcheck'
+    test:
+      - k8s_smoke
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-smoke'
+    test:
+      - k8s_conformance
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-kubernetes-opnfv-functest-kubernetes-features'
+    <<: *functest-kubernetes-params
+    container: 'functest-kubernetes-features'
+    test:
+      - stor4nfv_k8s
+      - clover_k8s
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run'
+
+- job-template:
+    name: 'functest-kubernetes-{tag}-daily'
+    project-type: multijob
+    triggers:
+      - timed: '@daily'
+    parameters:
+      - functest-kubernetes-slave
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-kubernetes-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: pull containers
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-pull'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-pull'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-pull'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-healthcheck:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-smoke:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-features:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-stor4nfv_k8s-run'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-clover_k8s-run'
+              <<: *functest-kubernetes-jobs
+
+- job-template:
+    name: 'functest-kubernetes-{repo}-{container}-{tag}-gate'
+    parameters:
+      - functest-kubernetes-slave
+    scm:
+      - functest-kubernetes-scm:
+          ref: $GERRIT_REFSPEC
+    builders:
+      - functest-kubernetes-build-containers:
+          <<: *functest-kubernetes-build-containers
+          ref: $GERRIT_REFSPEC
+
+- job-template:
+    name: 'functest-kubernetes-{repo}-{container}-{tag}-check'
+    parameters:
+      - functest-kubernetes-slave
+      - functest-kubernetes-branch:
+          branch: '{branch}'
+    scm:
+      - functest-kubernetes-scm:
+          ref: $branch
+    builders:
+      - functest-kubernetes-build-containers:
+          <<: *functest-kubernetes-build-containers
+          ref: $branch
+
+- project:
+    name: 'functest-kubernetes-_-golang-alpine3.8-rmi'
+    repo: _
+    port:
+    container: golang
+    tag: alpine3.8
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-kubernetes-_-golang-alpine3.8-pull'
+    repo: _
+    port:
+    container: golang
+    tag: alpine3.8
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-build
+    <<: *functest-kubernetes-params
+    container: functest-kubernetes-core
+    ref_arg: BRANCH
+    path: docker/core
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-gate'
+      - 'functest-kubernetes-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-kubernetes-opnfv-functest-functest-kubernetes-healthcheck-{tag}-build
+    <<: *functest-kubernetes-params
+    container: functest-functest-kubernetes-healthcheck
+    ref_arg: BRANCH
+    path: docker/healthcheck
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-gate'
+      - 'functest-kubernetes-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-kubernetes-opnfv-functest-functest-kubernetes-smoke-{tag}-build
+    <<: *functest-kubernetes-params
+    container: functest-functest-kubernetes-smoke
+    ref_arg: BRANCH
+    path: docker/smoke
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-gate'
+      - 'functest-kubernetes-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-kubernetes-opnfv-functest-functest-kubernetes-features-{tag}-build
+    <<: *functest-kubernetes-params
+    container: functest-functest-kubernetes-features
+    ref_arg: BRANCH
+    path: docker/features
+    jobs:
+      - 'functest-kubernetes-{repo}-{container}-{tag}-gate'
+      - 'functest-kubernetes-{repo}-{container}-{tag}-check'
+
+- job-template:
+    name: 'functest-kubernetes-{tag}-check'
+    project-type: multijob
+    parameters:
+      - functest-kubernetes-slave
+      - functest-kubernetes-branch:
+          branch: '{branch}'
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-kubernetes-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: remove dependencies
+          projects:
+            - name: 'functest-kubernetes-_-golang-alpine3.8-rmi'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: pull dependencies
+          projects:
+            - name: 'functest-kubernetes-_-golang-alpine3.8-pull'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build opnfv/functest-kubernetes-core
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-check'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build opnfv/functest-kubernetes-healthcheck
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-healthcheck-{tag}-check'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build containers
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-smoke-{tag}-check'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-features-{tag}-check'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-healthcheck:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-smoke:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-features:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-stor4nfv_k8s-run'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-clover_k8s-run'
+              <<: *functest-kubernetes-jobs
+
+- trigger:
+    name: functest-kubernetes-patchset-created
+    triggers:
+      - gerrit:
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event
+            - comment-added-contains-event:
+                comment-contains-value: 'recheck'
+            - comment-added-contains-event:
+                comment-contains-value: 'reverify'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: 'functest-kubernetes'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+          skip-vote:
+            successful: false
+            failed: false
+            unstable: false
+            notbuilt: false
+
+- job-template:
+    name: 'functest-kubernetes-{tag}-gate'
+    project-type: multijob
+    triggers:
+      - functest-kubernetes-patchset-created:
+          branch: '{branch}'
+    parameters:
+      - functest-kubernetes-slave
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-kubernetes-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-rmi'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: remove dependencies
+          projects:
+            - name: 'functest-kubernetes-_-golang-alpine3.8-rmi'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: pull dependencies
+          projects:
+            - name: 'functest-kubernetes-_-golang-alpine3.8-pull'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build opnfv/functest-kubernetes-core
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-gate'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build opnfv/functest-kubernetes-healthcheck
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-healthcheck-{tag}-gate'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: build containers
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-smoke-{tag}-gate'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-functest-kubernetes-features-{tag}-gate'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-healthcheck:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-smoke:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run'
+              <<: *functest-kubernetes-jobs
+      - multijob:
+          name: opnfv/functest-kubernetes-features:{tag}
+          projects:
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-stor4nfv_k8s-run'
+              <<: *functest-kubernetes-jobs
+            - name: 'functest-kubernetes-opnfv-functest-kubernetes-features-{tag}-clover_k8s-run'
+              <<: *functest-kubernetes-jobs
+
+- project:
+    name: 'functest-kubernetes'
+    <<: *functest-kubernetes-params
+    jobs:
+      - 'functest-kubernetes-{tag}-daily'
+      - 'functest-kubernetes-{tag}-check'
+      - 'functest-kubernetes-{tag}-gate'
+
+- view:
+    name: functest-kubernetes
+    view-type: list
+    columns:
+      - status
+      - weather
+      - job
+      - last-success
+      - last-failure
+      - last-duration
+    regex: ^functest-kubernetes-[a-z]+-(daily|check|gate)$
diff --git a/jjb/functest/functest-virtual.yaml b/jjb/functest/functest-virtual.yaml
deleted file mode 100644 (file)
index 91dacb1..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
----
-- functest-defaultparameters: &functest-defaultparameters
-    name: 'functest-defaultparameters'
-    repo: opnfv
-    tag:
-      - gambia:
-          branch: stable/gambia
-      - hunter:
-          branch: stable/hunter
-      - latest:
-          branch: master
-
-- job:
-    name: alpine-pull
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - shell: sudo docker pull alpine:3.8
-
-- job-template:
-    name: '{repo}-functest-{container}-{tag}-pull'
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - shell: sudo docker pull {repo}/functest-{container}:{tag}
-
-- project:
-    name: repo-functest-container-tag-pull
-    <<: *functest-defaultparameters
-    container:
-      - core
-      - tempest
-      - healthcheck
-      - smoke
-      - benchmarking
-      - components
-      - vnf
-      - features
-    jobs:
-      - '{repo}-functest-{container}-{tag}-pull'
-
-- functest-pulljobs: &functest-pulljobs
-    name: 'functest-pulljobs'
-    projects:
-      - name: 'alpine-pull'
-      - name: '{repo}-functest-core-{tag}-pull'
-      - name: '{repo}-functest-tempest-{tag}-pull'
-      - name: '{repo}-functest-healthcheck-{tag}-pull'
-      - name: '{repo}-functest-smoke-{tag}-pull'
-      - name: '{repo}-functest-benchmarking-{tag}-pull'
-      - name: '{repo}-functest-components-{tag}-pull'
-      - name: '{repo}-functest-vnf-{tag}-pull'
-      - name: '{repo}-functest-features-{tag}-pull'
-
-- job:
-    name: alpine-rmi
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - shell: sudo docker rmi alpine:3.8 || true
-
-- job-template:
-    name: '{repo}-functest-{container}-{tag}-rmi'
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - shell: sudo docker rmi {repo}/functest-{container}:{tag} || true
-
-- project:
-    name: repo-functest-container-tag-rmi
-    <<: *functest-defaultparameters
-    container:
-      - core
-      - tempest
-      - healthcheck
-      - smoke
-      - benchmarking
-      - components
-      - vnf
-      - features
-    jobs:
-      - '{repo}-functest-{container}-{tag}-rmi'
-
-- job-template:
-    name: '{repo}-functest-{container}-{test}-{tag}-run'
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - shell: |
-          sudo docker run --rm \
-            -e EXTERNAL_NETWORK=public1 \
-            -v /home/opnfv/functest/results/$JOB_NAME-$BUILD_ID:\
-          /home/opnfv/functest/results \
-            -v /home/opnfv/functest/openstack.creds:\
-          /home/opnfv/functest/conf/env_file \
-            -v /home/opnfv/functest/images:/home/opnfv/functest/images \
-            -v /home/opnfv/functest/tempest_blacklist.yaml:\
-          /usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/\
-          tempest/custom_tests/blacklist.yaml \
-            -v /home/opnfv/functest/rally_blacklist.yaml:\
-          /usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/\
-          rally/blacklist.yaml \
-            {repo}/functest-{container}:{tag} run_tests -t {test} || \
-            export RES=$?
-          gsutil -m cp -r /home/opnfv/functest/results/$JOB_NAME-$BUILD_ID \
-            gs://artifacts.opnfv.org/functest/ > /dev/null
-          find /home/opnfv/functest/results/$JOB_NAME-$BUILD_ID -type f \
-            -printf \
-            "http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID/%P\n"
-          sudo rm -rf /home/opnfv/functest/results/$JOB_NAME-$BUILD_ID
-          exit $RES
-
-- project:
-    name: repo-functest-healthcheck-test-tag-run
-    <<: *functest-defaultparameters
-    container: healthcheck
-    test:
-      - connection_check
-      - tenantnetwork1
-      - tenantnetwork2
-      - vmready1
-      - vmready2
-      - singlevm1
-      - singlevm2
-      - vping_ssh
-      - vping_userdata
-      - cinder_test
-      - odl
-      - api_check
-      - snaps_health_check
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-healthcheckjobs: &functest-healthcheckjobs
-    name: 'functest-healthcheckjobs'
-    projects:
-      - name: '{repo}-functest-healthcheck-connection_check-{tag}-run'
-      - name: '{repo}-functest-healthcheck-tenantnetwork1-{tag}-run'
-      - name: '{repo}-functest-healthcheck-tenantnetwork2-{tag}-run'
-      - name: '{repo}-functest-healthcheck-vmready1-{tag}-run'
-      - name: '{repo}-functest-healthcheck-vmready2-{tag}-run'
-      - name: '{repo}-functest-healthcheck-singlevm1-{tag}-run'
-      - name: '{repo}-functest-healthcheck-singlevm2-{tag}-run'
-      - name: '{repo}-functest-healthcheck-vping_ssh-{tag}-run'
-      - name: '{repo}-functest-healthcheck-vping_userdata-{tag}-run'
-      - name: '{repo}-functest-healthcheck-cinder_test-{tag}-run'
-      - name: '{repo}-functest-healthcheck-odl-{tag}-run'
-      - name: '{repo}-functest-healthcheck-api_check-{tag}-run'
-      - name: '{repo}-functest-healthcheck-snaps_health_check-{tag}-run'
-
-- project:
-    name: repo-functest-smoke-test-tag-run
-    <<: *functest-defaultparameters
-    container: smoke
-    test:
-      - tempest_smoke
-      - neutron-tempest-plugin-api
-      - rally_sanity
-      - rally_jobs
-      - refstack_defcore
-      - patrole
-      - snaps_smoke
-      - neutron_trunk
-      - networking-bgpvpn
-      - networking-sfc
-      - barbican
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-smokejobs: &functest-smokejobs
-    name: 'functest-smokejobs'
-    projects:
-      - name: '{repo}-functest-smoke-tempest_smoke-{tag}-run'
-      - name: '{repo}-functest-smoke-neutron-tempest-plugin-api-{tag}-run'
-      - name: '{repo}-functest-smoke-rally_sanity-{tag}-run'
-      - name: '{repo}-functest-smoke-rally_jobs-{tag}-run'
-      - name: '{repo}-functest-smoke-refstack_defcore-{tag}-run'
-      - name: '{repo}-functest-smoke-patrole-{tag}-run'
-      - name: '{repo}-functest-smoke-snaps_smoke-{tag}-run'
-      - name: '{repo}-functest-smoke-neutron_trunk-{tag}-run'
-      - name: '{repo}-functest-smoke-networking-bgpvpn-{tag}-run'
-      - name: '{repo}-functest-smoke-networking-sfc-{tag}-run'
-      - name: '{repo}-functest-smoke-barbican-{tag}-run'
-
-- project:
-    name: repo-functest-benchmarking-test-tag-run'
-    <<: *functest-defaultparameters
-    container: benchmarking
-    test:
-      - vmtp
-      - shaker
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-benchmarkingjobs: &functest-benchmarkingjobs
-    name: 'functest-benchmarkingjobs'
-    projects:
-      - name: '{repo}-functest-benchmarking-vmtp-{tag}-run'
-      - name: '{repo}-functest-benchmarking-shaker-{tag}-run'
-
-- project:
-    name: repo-functest-components-test-tag-run
-    <<: *functest-defaultparameters
-    container: components
-    test:
-      - tempest_full
-      - tempest_scenario
-      - rally_full
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-componentsjobs: &functest-componentsjobs
-    name: 'functest-componentsjobs'
-    projects:
-      - name: '{repo}-functest-components-tempest_full-{tag}-run'
-      - name: '{repo}-functest-components-tempest_scenario-{tag}-run'
-      # - name: '{repo}-functest-components-rally_full-{tag}-run'
-
-- project:
-    name: repo-functest-vnf-{test}-{tag}-run
-    <<: *functest-defaultparameters
-    container: vnf
-    test:
-      - cloudify
-      - cloudify_ims
-      - heat_ims
-      - vyos_vrouter
-      - juju_epc
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-vnfjobs: &functest-vnfjobs
-    name: 'functest-vnfjobs'
-    projects:
-      - name: '{repo}-functest-vnf-cloudify-{tag}-run'
-      - name: '{repo}-functest-vnf-cloudify_ims-{tag}-run'
-      - name: '{repo}-functest-vnf-heat_ims-{tag}-run'
-      - name: '{repo}-functest-vnf-vyos_vrouter-{tag}-run'
-      - name: '{repo}-functest-vnf-juju_epc-{tag}-run'
-
-- project:
-    name: repo-functest-features-test-tag-run
-    <<: *functest-defaultparameters
-    container: features
-    test:
-      - doctor-notification
-      - bgpvpn
-      - functest-odl-sfc
-      - barometercollectd
-      - vgpu
-      - stor4nfv_os
-    jobs:
-      - '{repo}-functest-{container}-{test}-{tag}-run'
-
-- functest-featuresjobs: &functest-featuresjobs
-    name: 'functest-featuresjobs'
-    projects:
-      - name: '{repo}-functest-features-doctor-notification-{tag}-run'
-      - name: '{repo}-functest-features-bgpvpn-{tag}-run'
-      - name: '{repo}-functest-features-functest-odl-sfc-{tag}-run'
-      - name: '{repo}-functest-features-barometercollectd-{tag}-run'
-      - name: '{repo}-functest-features-vgpu-{tag}-run'
-      - name: '{repo}-functest-features-stor4nfv_os-{tag}-run'
-
-- functest-advjobs: &functest-advjobs
-    name: '&functest-advjobs'
-    projects:
-      - name: '{repo}-functest-smoke-tempest_smoke-{tag}-run'
-      - name: '{repo}-functest-smoke-neutron-tempest-plugin-api-{tag}-run'
-      - name: '{repo}-functest-smoke-rally_sanity-{tag}-run'
-      - name: '{repo}-functest-smoke-rally_jobs-{tag}-run'
-      - name: '{repo}-functest-smoke-refstack_defcore-{tag}-run'
-      - name: '{repo}-functest-smoke-patrole-{tag}-run'
-      - name: '{repo}-functest-smoke-snaps_smoke-{tag}-run'
-      - name: '{repo}-functest-smoke-neutron_trunk-{tag}-run'
-      - name: '{repo}-functest-smoke-networking-bgpvpn-{tag}-run'
-      - name: '{repo}-functest-smoke-networking-sfc-{tag}-run'
-      - name: '{repo}-functest-smoke-barbican-{tag}-run'
-      - name: '{repo}-functest-benchmarking-vmtp-{tag}-run'
-      - name: '{repo}-functest-benchmarking-shaker-{tag}-run'
-      - name: '{repo}-functest-components-tempest_full-{tag}-run'
-      - name: '{repo}-functest-components-tempest_scenario-{tag}-run'
-      # - name: '{repo}-functest-components-rally_full-{tag}-run'
-      - name: '{repo}-functest-vnf-cloudify-{tag}-run'
-      # - name: '{repo}-functest-vnf-cloudify_ims-{tag}-run'
-      # - name: '{repo}-functest-vnf-heat_ims-{tag}-run'
-      # - name: '{repo}-functest-vnf-vyos_vrouter-{tag}-run'
-      # - name: '{repo}-functest-vnf-juju_epc-{tag}-run'
-      - name: '{repo}-functest-features-doctor-notification-{tag}-run'
-      - name: '{repo}-functest-features-bgpvpn-{tag}-run'
-      - name: '{repo}-functest-features-functest-odl-sfc-{tag}-run'
-      - name: '{repo}-functest-features-barometercollectd-{tag}-run'
-      - name: '{repo}-functest-features-vgpu-{tag}-run'
-      - name: '{repo}-functest-features-stor4nfv_os-{tag}-run'
-
-- functest-advcontainers-rmi: &functest-advcontainers-rmi
-    name: 'functest-advcontainers-rmi'
-    projects:
-      - name: '{repo}-functest-smoke-{tag}-rmi'
-      - name: '{repo}-functest-benchmarking-{tag}-rmi'
-      - name: '{repo}-functest-components-{tag}-rmi'
-      - name: '{repo}-functest-vnf-{tag}-rmi'
-      - name: '{repo}-functest-features-{tag}-rmi'
-
-- job-template:
-    name: '{repo}-functest-{tag}-daily'
-    <<: *functest-defaultparameters
-    project-type: multijob
-    triggers:
-      - timed: '@daily'
-    properties:
-      - build-blocker:
-          use-build-blocker: true
-          blocking-level: 'NODE'
-          blocking-jobs:
-            - '{repo}-functest-.*-.*'
-    parameters:
-      - functest-virtual-defaults
-    builders:
-      - multijob:
-          name: remove advanced functest containers
-          <<: *functest-advcontainers-rmi
-      - multijob:
-          name: remove functest-tempest
-          projects:
-            - name: '{repo}-functest-tempest-{tag}-rmi'
-      - multijob:
-          name: remove functest-core
-          projects:
-            - name: '{repo}-functest-core-{tag}-rmi'
-      - multijob:
-          name: remove alpine
-          projects:
-            - name: 'alpine-rmi'
-      - multijob:
-          name: pull containers
-          <<: *functest-pulljobs
-      - multijob:
-          name: healthcheck
-          <<: *functest-healthcheckjobs
-      - multijob:
-          name: advanced suites
-          <<: *functest-advjobs
-
-- project:
-    name: repo-functest-tag-daily
-    <<: *functest-defaultparameters
-    jobs:
-      - '{repo}-functest-{tag}-daily'
-
-- functest-gateparameters: &functest-gateparameters
-    name: 'functest-gateparameters'
-    parameters:
-      - functest-virtual-defaults
-
-- functest-checkparameters: &functest-checkparameters
-    name: 'functest-checkparameters'
-    parameters:
-      - functest-virtual-defaults
-      - string:
-          name: BRANCH
-          default: '{branch}'
-
-- builder:
-    name: build-containers
-    builders:
-      - shell: |
-         case "{container}" in
-         "components")
-             args="" ;;
-         *)
-             args="--build-arg BRANCH={ref}" ;;
-         esac
-         cd docker/{container}
-         sudo docker build \
-           ${{args}} --pull=false --no-cache --force-rm=true \
-           -t {repo}/functest-{container}:{tag} .
-
-- scm:
-    name: functest-scm
-    scm:
-      - git:
-          url: https://gerrit.opnfv.org/gerrit/functest
-          refspec: '+refs/changes/*:refs/changes/*'
-          branches:
-            - '{ref}'
-
-- functest-buildparameters: &functest-buildparameters
-    name: 'functest-buildparameters'
-    container: '{container}'
-    repo: '{repo}'
-    tag: '{tag}'
-
-- job-template:
-    name: '{repo}-functest-{container}-{tag}-gate'
-    <<: *functest-gateparameters
-    scm:
-      - functest-scm:
-          ref: $GERRIT_REFSPEC
-    builders:
-      - build-containers:
-          ref: $GERRIT_REFSPEC
-          <<: *functest-buildparameters
-
-- builder:
-    name: run-tox
-    builders:
-      - shell: tox -e docs,pep8,pylint,yamllint,bashate,py27,cover
-
-- job-template:
-    name: '{repo}-functest-{tag}-ut-gate'
-    <<: *functest-gateparameters
-    scm:
-      - functest-scm:
-          ref: $GERRIT_REFSPEC
-    builders:
-      - run-tox:
-          ref: $GERRIT_REFSPEC
-          repo: '{repo}'
-          tag: '{tag}'
-
-- job-template:
-    name: '{repo}-functest-{tag}-ut-check'
-    <<: *functest-checkparameters
-    scm:
-      - functest-scm:
-          ref: $BRANCH
-    builders:
-      - run-tox:
-          ref: $BRANCH
-          repo: '{repo}'
-          tag: '{tag}'
-
-- project:
-    name: repo-functest-tag-ut-build
-    <<: *functest-defaultparameters
-    jobs:
-      - '{repo}-functest-{tag}-ut-gate'
-      - '{repo}-functest-{tag}-ut-check'
-
-- job-template:
-    name: '{repo}-functest-{container}-{tag}-check'
-    <<: *functest-checkparameters
-    scm:
-      - functest-scm:
-          ref: $BRANCH
-    builders:
-      - build-containers:
-          ref: $BRANCH
-          <<: *functest-buildparameters
-
-- project:
-    name: repo-functest-container-tag-build
-    <<: *functest-defaultparameters
-    container:
-      - core
-      - tempest
-      - healthcheck
-      - smoke
-      - benchmarking
-      - components
-      - vnf
-      - features
-    jobs:
-      - '{repo}-functest-{container}-{tag}-gate'
-      - '{repo}-functest-{container}-{tag}-check'
-
-- functest-projectparameters: &functest-projectparameters
-    name: 'functest-projectparameters'
-    current-parameters: true
-
-- job-template:
-    name: '{repo}-functest-{tag}-gate'
-    project-type: multijob
-    <<: *functest-gateparameters
-    triggers:
-      - gerrit-trigger-patchset-created:
-          project: 'functest'
-          branch: '{branch}'
-          files: '**'
-    properties:
-      - build-blocker:
-          use-build-blocker: true
-          blocking-level: 'NODE'
-          blocking-jobs:
-            - '{repo}-functest-.*-.*'
-    builders:
-      - multijob:
-          name: run tox
-          projects:
-            - name: '{repo}-functest-{tag}-ut-gate'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove advanced functest containers
-          <<: *functest-advcontainers-rmi
-      - multijob:
-          name: remove functest-tempest
-          projects:
-            - name: '{repo}-functest-tempest-{tag}-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove functest-core
-          projects:
-            - name: '{repo}-functest-core-{tag}-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove alpine
-          projects:
-            - name: 'alpine-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: pull alpine
-          projects:
-            - name: 'alpine-pull'
-      - multijob:
-          name: build functest-core
-          projects:
-            - name: '{repo}-functest-core-{tag}-gate'
-              <<: *functest-projectparameters
-      - multijob:
-          name: build functest-tempest
-          projects:
-            - name: '{repo}-functest-tempest-{tag}-gate'
-              <<: *functest-projectparameters
-      - multijob:
-          name: build all remaining contrainers
-          projects:
-            - name: '{repo}-functest-healthcheck-{tag}-gate'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-smoke-{tag}-gate'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-benchmarking-{tag}-gate'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-components-{tag}-gate'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-vnf-{tag}-gate'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-features-{tag}-gate'
-              <<: *functest-projectparameters
-      - multijob:
-          name: healthcheck
-          <<: *functest-healthcheckjobs
-      - multijob:
-          name: advanced suites
-          <<: *functest-advjobs
-
-- job-template:
-    name: '{repo}-functest-{tag}-check'
-    project-type: multijob
-    <<: *functest-checkparameters
-    properties:
-      - build-blocker:
-          use-build-blocker: true
-          blocking-level: 'NODE'
-          blocking-jobs:
-            - '{repo}-functest-.*-.*'
-    builders:
-      - multijob:
-          name: run tox
-          projects:
-            - name: '{repo}-functest-{tag}-ut-check'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove advanced functest containers
-          <<: *functest-advcontainers-rmi
-      - multijob:
-          name: remove functest-tempest
-          projects:
-            - name: '{repo}-functest-tempest-{tag}-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove functest-core
-          projects:
-            - name: '{repo}-functest-core-{tag}-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: remove alpine
-          projects:
-            - name: 'alpine-rmi'
-              <<: *functest-projectparameters
-      - multijob:
-          name: pull alpine
-          projects:
-            - name: 'alpine-pull'
-      - multijob:
-          name: build functest-core
-          projects:
-            - name: '{repo}-functest-core-{tag}-check'
-              <<: *functest-projectparameters
-      - multijob:
-          name: build functest-tempest
-          projects:
-            - name: '{repo}-functest-tempest-{tag}-check'
-              <<: *functest-projectparameters
-      - multijob:
-          name: build all remaining contrainers
-          projects:
-            - name: '{repo}-functest-healthcheck-{tag}-check'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-smoke-{tag}-check'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-benchmarking-{tag}-check'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-components-{tag}-check'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-vnf-{tag}-check'
-              <<: *functest-projectparameters
-            - name: '{repo}-functest-features-{tag}-check'
-              <<: *functest-projectparameters
-      - multijob:
-          name: healthcheck
-          <<: *functest-healthcheckjobs
-      - multijob:
-          name: advanced suites
-          <<: *functest-advjobs
-
-- project:
-    name: repo-functest-tag-build
-    <<: *functest-defaultparameters
-    jobs:
-      - '{repo}-functest-{tag}-gate'
-      - '{repo}-functest-{tag}-check'
diff --git a/jjb/functest/functest.yaml b/jjb/functest/functest.yaml
new file mode 100644 (file)
index 0000000..9afa64b
--- /dev/null
@@ -0,0 +1,960 @@
+---
+- functest-jobs: &functest-jobs
+    name: 'functest-jobs'
+    current-parameters: true
+
+- functest-params: &functest-params
+    name: 'functest-params'
+    repo: 'opnfv'
+    port:
+    tag:
+      - latest:
+          branch: master
+      - hunter:
+          branch: stable/hunter
+      - gambia:
+          branch: stable/gambia
+
+- parameter:
+    name: functest-slave
+    parameters:
+      - label:
+          name: slave
+          default: functest-virtual
+
+- parameter:
+    name: functest-branch
+    parameters:
+      - string:
+          name: branch
+          default: '{branch}'
+
+- functest-containers: &functest-containers
+    name: 'functest-containers'
+    repo: '{repo}'
+    port: '{port}'
+    container: '{container}'
+    tag: '{tag}'
+
+- functest-run-containers: &functest-run-containers
+    name: 'functest-build-containers'
+    <<: *functest-containers
+    test: '{test}'
+
+- functest-build-containers: &functest-build-containers
+    name: 'functest-build-containers'
+    <<: *functest-containers
+    ref_arg: '{ref_arg}'
+    path: '{path}'
+
+- builder:
+    name: functest-pull-containers
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker pull $image
+
+- builder:
+    name: functest-build-containers
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          if [ "{ref_arg}" = "None" ]; then
+            build_arg=""
+          else
+            build_arg="--build-arg {ref_arg}={ref}"
+          fi
+          cd {path}
+          sudo docker build $build_arg \
+            --pull=false --no-cache --force-rm=true \
+            -t $image .
+
+- builder:
+    name: functest-run-containers
+    builders:
+      - shell: |
+          set +ex
+          [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker run --rm \
+            -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \
+            -e EXTERNAL_NETWORK=public1 \
+            -v /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file \
+            -v /home/opnfv/functest/images:/home/opnfv/functest/images \
+            $image run_tests -t {test}
+          res=$?
+          gsutil -m cp -r $WORKSPACE/ \
+            gs://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID > /dev/null 2>&1
+          find $WORKSPACE -type f \
+            -printf \
+            "http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID/%P\n"
+          exit $res
+
+- builder:
+    name: functest-remove-images
+    builders:
+      - shell: |
+          set +x
+          if [ "{repo}" = "_" ]; then
+            image={container}:{tag}
+          elif [ "{port}" = "None" ]; then
+            image={repo}/{container}:{tag}
+          else
+            image={repo}:{port}/{container}:{tag}
+          fi
+          sudo docker rmi $image || true
+
+- scm:
+    name: functest-scm
+    scm:
+      - git:
+          url: https://gerrit.opnfv.org/gerrit/functest
+          refspec: '+refs/changes/*:refs/changes/*'
+          branches:
+            - '{ref}'
+
+- job-template:
+    name: 'functest-{repo}-{container}-{tag}-pull'
+    parameters:
+      - functest-slave
+    builders:
+      - functest-pull-containers:
+          <<: *functest-containers
+
+- project:
+    name: 'functest-opnfv-functest-healthcheck-pull'
+    <<: *functest-params
+    container: 'functest-healthcheck'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-opnfv-functest-smoke-pull'
+    <<: *functest-params
+    container: 'functest-smoke'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-opnfv-functest-benchmarking-pull'
+    <<: *functest-params
+    container: 'functest-benchmarking'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-opnfv-functest-components-pull'
+    <<: *functest-params
+    container: 'functest-components'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-opnfv-functest-vnf-pull'
+    <<: *functest-params
+    container: 'functest-vnf'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: 'functest-opnfv-functest-features-pull'
+    <<: *functest-params
+    container: 'functest-features'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- job-template:
+    name: 'functest-{repo}-{container}-{tag}-rmi'
+    parameters:
+      - functest-slave
+    builders:
+      - functest-remove-images:
+          <<: *functest-containers
+
+- project:
+    name: 'functest-opnfv-functest-healthcheck-rmi'
+    <<: *functest-params
+    container: 'functest-healthcheck'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-opnfv-functest-smoke-rmi'
+    <<: *functest-params
+    container: 'functest-smoke'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-opnfv-functest-benchmarking-rmi'
+    <<: *functest-params
+    container: 'functest-benchmarking'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-opnfv-functest-components-rmi'
+    <<: *functest-params
+    container: 'functest-components'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-opnfv-functest-vnf-rmi'
+    <<: *functest-params
+    container: 'functest-vnf'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-opnfv-functest-features-rmi'
+    <<: *functest-params
+    container: 'functest-features'
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- job-template:
+    name: 'functest-{repo}-{container}-{tag}-{test}-run'
+    parameters:
+      - functest-slave
+    builders:
+      - functest-run-containers:
+          <<: *functest-run-containers
+
+- project:
+    name: 'functest-opnfv-functest-healthcheck'
+    <<: *functest-params
+    container: 'functest-healthcheck'
+    test:
+      - connection_check
+      - tenantnetwork1
+      - tenantnetwork2
+      - vmready1
+      - vmready2
+      - singlevm1
+      - singlevm2
+      - vping_ssh
+      - vping_userdata
+      - cinder_test
+      - odl
+      - api_check
+      - snaps_health_check
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-opnfv-functest-smoke'
+    <<: *functest-params
+    container: 'functest-smoke'
+    test:
+      - tempest_smoke
+      - neutron-tempest-plugin-api
+      - rally_sanity
+      - rally_jobs
+      - refstack_defcore
+      - patrole
+      - snaps_smoke
+      - neutron_trunk
+      - networking-bgpvpn
+      - networking-sfc
+      - barbican
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-opnfv-functest-benchmarking'
+    <<: *functest-params
+    container: 'functest-benchmarking'
+    test:
+      - vmtp
+      - shaker
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-opnfv-functest-components'
+    <<: *functest-params
+    container: 'functest-components'
+    test:
+      - tempest_full
+      - tempest_scenario
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-opnfv-functest-vnf'
+    <<: *functest-params
+    container: 'functest-vnf'
+    test:
+      - cloudify
+      - cloudify_ims
+      - heat_ims
+      - vyos_vrouter
+      - juju_epc
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- project:
+    name: 'functest-opnfv-functest-features'
+    <<: *functest-params
+    container: 'functest-features'
+    test:
+      - doctor-notification
+      - bgpvpn
+      - functest-odl-sfc
+      - barometercollectd
+      - vgpu
+      - stor4nfv_os
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-{test}-run'
+
+- job-template:
+    name: 'functest-{tag}-daily'
+    project-type: multijob
+    triggers:
+      - timed: '@daily'
+    parameters:
+      - functest-slave
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-rmi'
+              <<: *functest-jobs
+      - multijob:
+          name: pull containers
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-pull'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-pull'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-pull'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-pull'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-pull'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-pull'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-healthcheck:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-smoke:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-benchmarking:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-components:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-vnf:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-features:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
+              <<: *functest-jobs
+
+- job-template:
+    name: 'functest-{repo}-{container}-{tag}-gate'
+    parameters:
+      - functest-slave
+    scm:
+      - functest-scm:
+          ref: $GERRIT_REFSPEC
+    builders:
+      - functest-build-containers:
+          <<: *functest-build-containers
+          ref: $GERRIT_REFSPEC
+
+- job-template:
+    name: 'functest-{repo}-{container}-{tag}-check'
+    parameters:
+      - functest-slave
+      - functest-branch:
+          branch: '{branch}'
+    scm:
+      - functest-scm:
+          ref: $branch
+    builders:
+      - functest-build-containers:
+          <<: *functest-build-containers
+          ref: $branch
+
+- project:
+    name: 'functest-_-alpine-3.8-rmi'
+    repo: _
+    port:
+    container: alpine
+    tag: 3.8
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-rmi'
+
+- project:
+    name: 'functest-_-alpine-3.8-pull'
+    repo: _
+    port:
+    container: alpine
+    tag: 3.8
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-pull'
+
+- project:
+    name: functest-opnfv-functest-core-{tag}-build
+    <<: *functest-params
+    container: functest-core
+    ref_arg: BRANCH
+    path: docker/core
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-tempest-{tag}-build
+    <<: *functest-params
+    container: functest-tempest
+    ref_arg: BRANCH
+    path: docker/tempest
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-healthcheck-{tag}-build
+    <<: *functest-params
+    container: functest-healthcheck
+    ref_arg: BRANCH
+    path: docker/healthcheck
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-smoke-{tag}-build
+    <<: *functest-params
+    container: functest-smoke
+    ref_arg: BRANCH
+    path: docker/smoke
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-benchmarking-{tag}-build
+    <<: *functest-params
+    container: functest-benchmarking
+    ref_arg: BRANCH
+    path: docker/benchmarking
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-components-{tag}-build
+    <<: *functest-params
+    container: functest-components
+    ref_arg:
+    path: docker/components
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-vnf-{tag}-build
+    <<: *functest-params
+    container: functest-vnf
+    ref_arg:
+    path: docker/vnf
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- project:
+    name: functest-opnfv-functest-features-{tag}-build
+    <<: *functest-params
+    container: functest-features
+    ref_arg: BRANCH
+    path: docker/features
+    jobs:
+      - 'functest-{repo}-{container}-{tag}-gate'
+      - 'functest-{repo}-{container}-{tag}-check'
+
+- job-template:
+    name: 'functest-{tag}-check'
+    project-type: multijob
+    parameters:
+      - functest-slave
+      - functest-branch:
+          branch: '{branch}'
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-rmi'
+              <<: *functest-jobs
+      - multijob:
+          name: remove dependencies
+          projects:
+            - name: 'functest-_-alpine-3.8-rmi'
+              <<: *functest-jobs
+      - multijob:
+          name: pull dependencies
+          projects:
+            - name: 'functest-_-alpine-3.8-pull'
+              <<: *functest-jobs
+      - multijob:
+          name: build opnfv/functest-core
+          projects:
+            - name: 'functest-opnfv-functest-core-{tag}-check'
+              <<: *functest-jobs
+      - multijob:
+          name: build opnfv/functest-tempest
+          projects:
+            - name: 'functest-opnfv-functest-tempest-{tag}-check'
+              <<: *functest-jobs
+      - multijob:
+          name: build containers
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-check'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-check'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-check'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-check'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-check'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-check'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-healthcheck:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-smoke:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-benchmarking:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-components:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-vnf:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-features:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
+              <<: *functest-jobs
+
+- trigger:
+    name: functest-patchset-created
+    triggers:
+      - gerrit:
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event
+            - comment-added-contains-event:
+                comment-contains-value: 'recheck'
+            - comment-added-contains-event:
+                comment-contains-value: 'reverify'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: 'functest'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+          skip-vote:
+            successful: false
+            failed: false
+            unstable: false
+            notbuilt: false
+
+- job-template:
+    name: 'functest-{tag}-gate'
+    project-type: multijob
+    triggers:
+      - functest-patchset-created:
+          branch: '{branch}'
+    parameters:
+      - functest-slave
+    properties:
+      - build-blocker:
+          use-build-blocker: true
+          blocking-level: 'NODE'
+          blocking-jobs:
+            - '^functest-[a-z]+-(daily|check|gate)$'
+    builders:
+      - multijob:
+          name: remove former images
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-rmi'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-rmi'
+              <<: *functest-jobs
+      - multijob:
+          name: remove dependencies
+          projects:
+            - name: 'functest-_-alpine-3.8-rmi'
+              <<: *functest-jobs
+      - multijob:
+          name: pull dependencies
+          projects:
+            - name: 'functest-_-alpine-3.8-pull'
+              <<: *functest-jobs
+      - multijob:
+          name: build opnfv/functest-core
+          projects:
+            - name: 'functest-opnfv-functest-core-{tag}-gate'
+              <<: *functest-jobs
+      - multijob:
+          name: build opnfv/functest-tempest
+          projects:
+            - name: 'functest-opnfv-functest-tempest-{tag}-gate'
+              <<: *functest-jobs
+      - multijob:
+          name: build containers
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-gate'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-gate'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-gate'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-gate'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-gate'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-gate'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-healthcheck:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-api_check-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-healthcheck-{tag}-snaps_health_check-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-smoke:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-smoke-{tag}-tempest_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-rally_jobs-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-snaps_smoke-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-benchmarking:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-components:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_full-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-components-{tag}-tempest_scenario-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-vnf:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run'
+              <<: *functest-jobs
+      - multijob:
+          name: opnfv/functest-features:{tag}
+          projects:
+            - name: 'functest-opnfv-functest-features-{tag}-doctor-notification-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-bgpvpn-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-functest-odl-sfc-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-barometercollectd-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-vgpu-run'
+              <<: *functest-jobs
+            - name: 'functest-opnfv-functest-features-{tag}-stor4nfv_os-run'
+              <<: *functest-jobs
+
+- project:
+    name: 'functest'
+    <<: *functest-params
+    jobs:
+      - 'functest-{tag}-daily'
+      - 'functest-{tag}-check'
+      - 'functest-{tag}-gate'
+
+- view:
+    name: functest
+    view-type: list
+    columns:
+      - status
+      - weather
+      - job
+      - last-success
+      - last-failure
+      - last-duration
+    regex: ^functest-[a-z]+-(daily|check|gate)$
index 267514a..3f86b05 100644 (file)
             - '{ref}'
 
 - job-template:
-    name: '{repo}-{container}-{tag}-pull'
+    name: 'xtesting-{repo}-{container}-{tag}-pull'
     parameters:
       - xtesting-slave
     builders:
           <<: *xtesting-containers
 
 - project:
-    name: 'opnfv-xtesting-pull'
+    name: 'xtesting-opnfv-xtesting-pull'
     <<: *xtesting-params
     container: 'xtesting'
     jobs:
-      - '{repo}-{container}-{tag}-pull'
+      - 'xtesting-{repo}-{container}-{tag}-pull'
 
 - job-template:
-    name: '{repo}-{container}-{tag}-rmi'
+    name: 'xtesting-{repo}-{container}-{tag}-rmi'
     parameters:
       - xtesting-slave
     builders:
           <<: *xtesting-containers
 
 - project:
-    name: 'opnfv-xtesting-rmi'
+    name: 'xtesting-opnfv-xtesting-rmi'
     <<: *xtesting-params
     container: 'xtesting'
     jobs:
-      - '{repo}-{container}-{tag}-rmi'
+      - 'xtesting-{repo}-{container}-{tag}-rmi'
 
 - job-template:
-    name: '{repo}-{container}-{tag}-{test}-run'
+    name: 'xtesting-{repo}-{container}-{tag}-{test}-run'
     parameters:
       - xtesting-slave
     builders:
           <<: *xtesting-run-containers
 
 - project:
-    name: 'opnfv-xtesting'
+    name: 'xtesting-opnfv-xtesting'
     <<: *xtesting-params
     container: 'xtesting'
     test:
       - fourth
       - fifth
     jobs:
-      - '{repo}-{container}-{tag}-{test}-run'
+      - 'xtesting-{repo}-{container}-{tag}-{test}-run'
 
 - job-template:
     name: 'xtesting-{tag}-daily'
           use-build-blocker: true
           blocking-level: 'NODE'
           blocking-jobs:
-            - '^xtesting-.*-(daily|check|gate)$'
+            - '^xtesting-[a-z]+-(daily|check|gate)$'
     builders:
       - multijob:
           name: remove former images
           projects:
-            - name: 'opnfv-xtesting-{tag}-rmi'
+            - name: 'xtesting-opnfv-xtesting-{tag}-rmi'
               <<: *xtesting-jobs
       - multijob:
           name: pull containers
           projects:
-            - name: 'opnfv-xtesting-{tag}-pull'
+            - name: 'xtesting-opnfv-xtesting-{tag}-pull'
               <<: *xtesting-jobs
       - multijob:
           name: opnfv/xtesting:{tag}
           projects:
-            - name: 'opnfv-xtesting-{tag}-first-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-first-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-second-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-second-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-third-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-third-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fourth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fifth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run'
               <<: *xtesting-jobs
 
 - job-template:
-    name: '{repo}-{container}-{tag}-gate'
+    name: 'xtesting-{repo}-{container}-{tag}-gate'
     parameters:
       - xtesting-slave
     scm:
           ref: $GERRIT_REFSPEC
 
 - job-template:
-    name: '{repo}-{container}-{tag}-check'
+    name: 'xtesting-{repo}-{container}-{tag}-check'
     parameters:
       - xtesting-slave
       - xtesting-branch:
           ref: $branch
 
 - project:
-    name: '_-alpine-3.8-rmi'
+    name: 'xtesting-_-alpine-3.8-rmi'
     repo: _
     port:
     container: alpine
     tag: 3.8
     jobs:
-      - '{repo}-{container}-{tag}-rmi'
+      - 'xtesting-{repo}-{container}-{tag}-rmi'
 
 - project:
-    name: '_-alpine-3.8-pull'
+    name: 'xtesting-_-alpine-3.8-pull'
     repo: _
     port:
     container: alpine
     tag: 3.8
     jobs:
-      - '{repo}-{container}-{tag}-pull'
+      - 'xtesting-{repo}-{container}-{tag}-pull'
 
 - project:
-    name: opnfv-xtesting-{tag}-build
+    name: xtesting-opnfv-xtesting-{tag}-build
     <<: *xtesting-params
     container: xtesting
     ref_arg: BRANCH
     path: docker
     jobs:
-      - '{repo}-{container}-{tag}-gate'
-      - '{repo}-{container}-{tag}-check'
+      - 'xtesting-{repo}-{container}-{tag}-gate'
+      - 'xtesting-{repo}-{container}-{tag}-check'
 
 - job-template:
     name: 'xtesting-{tag}-check'
           use-build-blocker: true
           blocking-level: 'NODE'
           blocking-jobs:
-            - '^xtesting-.*-(daily|check|gate)$'
+            - '^xtesting-[a-z]+-(daily|check|gate)$'
     builders:
       - multijob:
           name: remove former images
           projects:
-            - name: 'opnfv-xtesting-{tag}-rmi'
+            - name: 'xtesting-opnfv-xtesting-{tag}-rmi'
               <<: *xtesting-jobs
       - multijob:
           name: remove dependencies
           projects:
-            - name: '_-alpine-3.8-rmi'
+            - name: 'xtesting-_-alpine-3.8-rmi'
               <<: *xtesting-jobs
       - multijob:
           name: pull dependencies
           projects:
-            - name: '_-alpine-3.8-pull'
+            - name: 'xtesting-_-alpine-3.8-pull'
               <<: *xtesting-jobs
       - multijob:
           name: opnfv/functest-xtesting
           projects:
-            - name: 'opnfv-xtesting-{tag}-check'
+            - name: 'xtesting-opnfv-xtesting-{tag}-check'
               <<: *xtesting-jobs
       - multijob:
           name: opnfv/xtesting:{tag}
           projects:
-            - name: 'opnfv-xtesting-{tag}-first-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-first-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-second-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-second-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-third-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-third-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fourth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fifth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run'
               <<: *xtesting-jobs
 
 - trigger:
           use-build-blocker: true
           blocking-level: 'NODE'
           blocking-jobs:
-            - '^xtesting-.*-(daily|check|gate)$'
+            - '^xtesting-[a-z]+-(daily|check|gate)$'
     builders:
       - multijob:
           name: remove former images
           projects:
-            - name: 'opnfv-xtesting-{tag}-rmi'
+            - name: 'xtesting-opnfv-xtesting-{tag}-rmi'
               <<: *xtesting-jobs
       - multijob:
           name: remove dependencies
           projects:
-            - name: '_-alpine-3.8-rmi'
+            - name: 'xtesting-_-alpine-3.8-rmi'
               <<: *xtesting-jobs
       - multijob:
           name: pull dependencies
           projects:
-            - name: '_-alpine-3.8-pull'
+            - name: 'xtesting-_-alpine-3.8-pull'
               <<: *xtesting-jobs
       - multijob:
           name: opnfv/functest-xtesting
           projects:
-            - name: 'opnfv-xtesting-{tag}-gate'
+            - name: 'xtesting-opnfv-xtesting-{tag}-gate'
               <<: *xtesting-jobs
       - multijob:
           name: opnfv/xtesting:{tag}
           projects:
-            - name: 'opnfv-xtesting-{tag}-first-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-first-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-second-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-second-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-third-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-third-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fourth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run'
               <<: *xtesting-jobs
-            - name: 'opnfv-xtesting-{tag}-fifth-run'
+            - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run'
               <<: *xtesting-jobs
 
 - project:
       - last-success
       - last-failure
       - last-duration
-    regex: ^xtesting-.*-(daily|check|gate)$
+    regex: ^xtesting-[a-z]+-(daily|check|gate)$