functest: Create functest-weekly prototype jobs 55/29655/3
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>
Thu, 2 Mar 2017 16:01:24 +0000 (17:01 +0100)
committerFatih Degirmenci <fatih.degirmenci@ericsson.com>
Thu, 2 Mar 2017 16:25:10 +0000 (16:25 +0000)
Fuel weekly jobs are created, calling fuel-deploy and functest weekly
jobs.

Experimental scripts have also been removed.

Change-Id: If492443e26248731df35e6b6cb5239fb2ae9a86a
Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
jjb/fuel/fuel-basic-exp.sh [deleted file]
jjb/fuel/fuel-build-exp.sh [deleted file]
jjb/fuel/fuel-daily-jobs.yml
jjb/fuel/fuel-deploy-exp.sh [deleted file]
jjb/fuel/fuel-deploy.sh
jjb/fuel/fuel-smoke-test-exp.sh [deleted file]
jjb/fuel/fuel-verify-jobs-experimental.yml [deleted file]
jjb/fuel/fuel-weekly-jobs.yml [new file with mode: 0644]
jjb/functest/functest-daily-jobs.yml [moved from jjb/functest/functest-ci-jobs.yml with 93% similarity]
jjb/functest/functest-weekly-jobs.yml [new file with mode: 0644]

diff --git a/jjb/fuel/fuel-basic-exp.sh b/jjb/fuel/fuel-basic-exp.sh
deleted file mode 100755 (executable)
index a70a0c7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-set -o nounset
-
-echo "-----------------------------------------------------------------------"
-echo $GERRIT_CHANGE_COMMIT_MESSAGE
-echo "-----------------------------------------------------------------------"
-
-# proposal for specifying the scenario name in commit message
-# currently only 1 scenario name is supported but depending on
-# the need, it can be expanded, supporting multiple scenarios
-# using comma separated list or something
-SCENARIO_NAME_PATTERN="(?<=@scenario:).*?(?=@)"
-SCENARIO_NAME=(echo $GERRIT_CHANGE_COMMIT_MESSAGE | grep -oP "$SCENARIO_NAME_PATTERN")
-if [[ $? -ne 0 ]]; then
-    echo "The patch verification will be done only with build!"
-else
-    echo "Will run full verification; build, deploy, and smoke test using scenario $SCENARIO_NAME"
-fi
diff --git a/jjb/fuel/fuel-build-exp.sh b/jjb/fuel/fuel-build-exp.sh
deleted file mode 100755 (executable)
index f7f613d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
-    JOB_TYPE=${BASH_REMATCH[0]}
-else
-    echo "Unable to determine job type!"
-    exit 1
-fi
-
-echo "Not activated!"
index 2378552..975c9ca 100644 (file)
 
     builders:
         - description-setter:
-            description: "POD: $NODE_NAME"
+            description: "Built on $NODE_NAME"
         - trigger-builds:
             - project: 'fuel-deploy-{pod}-daily-{stream}'
               current-parameters: false
 
     builders:
         - description-setter:
-            description: "POD: $NODE_NAME"
+            description: "Built on $NODE_NAME"
         - shell:
             !include-raw-escape: ./fuel-download-artifact.sh
         - shell:
diff --git a/jjb/fuel/fuel-deploy-exp.sh b/jjb/fuel/fuel-deploy-exp.sh
deleted file mode 100755 (executable)
index f7f613d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
-    JOB_TYPE=${BASH_REMATCH[0]}
-else
-    echo "Unable to determine job type!"
-    exit 1
-fi
-
-echo "Not activated!"
index 4efccd6..f5bbd18 100755 (executable)
@@ -95,7 +95,7 @@ echo "Deployment is done!"
 
 # upload logs for baremetal deployments
 # work with virtual deployments is still going on so we skip that for the timebeing
-if [[ "$JOB_NAME" =~ "baremetal-daily" ]]; then
+if [[ "$JOB_NAME" =~ (baremetal-daily|baremetal-weekly) ]]; then
     echo "Uploading deployment logs"
     gsutil cp $WORKSPACE/$FUEL_LOG_FILENAME gs://$GS_URL/logs/$FUEL_LOG_FILENAME > /dev/null 2>&1
     echo "Logs are available as http://$GS_URL/logs/$FUEL_LOG_FILENAME"
diff --git a/jjb/fuel/fuel-smoke-test-exp.sh b/jjb/fuel/fuel-smoke-test-exp.sh
deleted file mode 100755 (executable)
index f7f613d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then
-    JOB_TYPE=${BASH_REMATCH[0]}
-else
-    echo "Unable to determine job type!"
-    exit 1
-fi
-
-echo "Not activated!"
diff --git a/jjb/fuel/fuel-verify-jobs-experimental.yml b/jjb/fuel/fuel-verify-jobs-experimental.yml
deleted file mode 100644 (file)
index ae64580..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-- project:
-    # TODO: rename the project name
-    # TODO: get rid of appended -exp from the remainder of the file
-    name: 'fuel-verify-jobs-experimental'
-
-    project: 'fuel'
-
-    installer: 'fuel'
-#------------------------------------
-# branch definitions
-#------------------------------------
-    # TODO: enable master once things settle
-    stream-exp:
-        - experimental:
-            branch: 'stable/{stream-exp}'
-            gs-pathname: '/{stream-exp}'
-            disabled: false
-#------------------------------------
-# patch verification phases
-#------------------------------------
-    phase:
-        - 'basic':
-            # this phase does basic commit message check, unit test and so on
-            slave-label: 'opnfv-build'
-        - 'build':
-            # this phase builds artifacts if valid for given installer
-            slave-label: 'opnfv-build-ubuntu'
-        - 'deploy-virtual':
-            # this phase does virtual deployment using the artifacts produced in previous phase
-            slave-label: 'fuel-virtual'
-        - 'smoke-test':
-            # this phase runs functest smoke test
-            slave-label: 'fuel-virtual'
-#------------------------------------
-# jobs
-#------------------------------------
-    jobs:
-        - 'fuel-verify-{stream-exp}'
-        - 'fuel-verify-{phase}-{stream-exp}'
-#------------------------------------
-# job templates
-#------------------------------------
-- job-template:
-    name: 'fuel-verify-{stream-exp}'
-
-    project-type: multijob
-
-    disabled: '{obj:disabled}'
-
-    # TODO: this is valid for experimental only
-    #       enable concurrency for master once things settle
-    concurrent: false
-
-    properties:
-        - logrotate-default
-        - throttle:
-            enabled: true
-            max-total: 4
-            option: 'project'
-
-    scm:
-        - git-scm-gerrit
-
-    wrappers:
-        - ssh-agent-wrapper
-        - timeout:
-            timeout: 360
-            fail: true
-
-    triggers:
-        - gerrit:
-            server-name: 'gerrit.opnfv.org'
-            trigger-on:
-                - patchset-created-event:
-                    exclude-drafts: 'false'
-                    exclude-trivial-rebase: 'false'
-                    exclude-no-code-change: 'false'
-                - draft-published-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'recheck'
-                - comment-added-contains-event:
-                    comment-contains-value: 'reverify'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: '{project}'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'ci/**'
-                  - compare-type: ANT
-                    pattern: 'build/**'
-                  - compare-type: ANT
-                    pattern: 'deploy/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'docs/**'
-            readable-message: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - 'opnfv-build-defaults'
-        - 'fuel-verify-defaults-exp':
-            gs-pathname: '{gs-pathname}'
-
-    builders:
-        - description-setter:
-            description: "Built on $NODE_NAME"
-        - multijob:
-            name: basic
-            condition: SUCCESSFUL
-            projects:
-                - name: 'fuel-verify-basic-{stream-exp}'
-                  current-parameters: false
-                  predefined-parameters: |
-                    BRANCH=$BRANCH
-                    GERRIT_REFSPEC=$GERRIT_REFSPEC
-                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-                  node-parameters: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-        - multijob:
-            name: build
-            condition: SUCCESSFUL
-            projects:
-                - name: 'fuel-verify-build-{stream-exp}'
-                  current-parameters: false
-                  predefined-parameters: |
-                    BRANCH=$BRANCH
-                    GERRIT_REFSPEC=$GERRIT_REFSPEC
-                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-                  node-parameters: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-        - multijob:
-            name: deploy-virtual
-            condition: SUCCESSFUL
-            projects:
-                - name: 'fuel-verify-deploy-virtual-{stream-exp}'
-                  current-parameters: false
-                  predefined-parameters: |
-                    BRANCH=$BRANCH
-                    GERRIT_REFSPEC=$GERRIT_REFSPEC
-                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-                  node-parameters: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-        - multijob:
-            name: smoke-test
-            condition: SUCCESSFUL
-            projects:
-                - name: 'fuel-verify-smoke-test-{stream-exp}'
-                  current-parameters: false
-                  predefined-parameters: |
-                    BRANCH=$BRANCH
-                    GERRIT_REFSPEC=$GERRIT_REFSPEC
-                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                    GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-                  node-parameters: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-
-- job-template:
-    name: 'fuel-verify-{phase}-{stream-exp}'
-
-    disabled: '{obj:disabled}'
-
-    concurrent: true
-
-    properties:
-        - logrotate-default
-        - throttle:
-            enabled: true
-            max-total: 6
-            option: 'project'
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - 'fuel-verify-deploy-.*'
-                - 'fuel-verify-test-.*'
-            block-level: 'NODE'
-
-    scm:
-        - git-scm-gerrit
-
-    wrappers:
-        - ssh-agent-wrapper
-        - timeout:
-            timeout: 360
-            fail: true
-    parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - '{slave-label}-defaults'
-        - '{installer}-defaults'
-        - 'fuel-verify-defaults-exp':
-            gs-pathname: '{gs-pathname}'
-
-    builders:
-        - description-setter:
-            description: "Built on $NODE_NAME"
-        - '{project}-verify-{phase}-macro-exp'
-#------------------------------------
-# builder macros
-#------------------------------------
-- builder:
-    name: 'fuel-verify-basic-macro-exp'
-    builders:
-        - shell:
-            !include-raw: ./fuel-basic-exp.sh
-
-- builder:
-    name: 'fuel-verify-build-macro-exp'
-    builders:
-        - shell:
-            !include-raw: ./fuel-build-exp.sh
-        - shell:
-            !include-raw: ./fuel-workspace-cleanup.sh
-
-- builder:
-    name: 'fuel-verify-deploy-virtual-macro-exp'
-    builders:
-        - shell:
-            !include-raw: ./fuel-deploy-exp.sh
-
-- builder:
-    name: 'fuel-verify-smoke-test-macro-exp'
-    builders:
-        - shell:
-            !include-raw: ./fuel-smoke-test-exp.sh
-#------------------------------------
-# parameter macros
-#------------------------------------
-- parameter:
-    name: 'fuel-verify-defaults-exp'
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: CACHE_DIRECTORY
-            default: $HOME/opnfv/cache/$INSTALLER_TYPE
-            description: "Directory where the cache to be used during the build is located."
-        - string:
-            name: GS_URL
-            default: artifacts.opnfv.org/$PROJECT{gs-pathname}
-            description: "URL to Google Storage."
diff --git a/jjb/fuel/fuel-weekly-jobs.yml b/jjb/fuel/fuel-weekly-jobs.yml
new file mode 100644 (file)
index 0000000..06d8134
--- /dev/null
@@ -0,0 +1,210 @@
+# jenkins job templates for Fuel
+- project:
+
+    name: fuel-weekly
+
+    project: fuel
+
+    installer: fuel
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+    master: &master
+        stream: master
+        branch: '{stream}'
+        disabled: false
+        gs-pathname: ''
+    danube: &danube
+        stream: danube
+        branch: 'stable/{stream}'
+        disabled: true
+        gs-pathname: '/{stream}'
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+#        CI PODs
+#--------------------------------
+    pod:
+        - baremetal:
+            slave-label: fuel-baremetal
+            <<: *master
+        - virtual:
+            slave-label: fuel-virtual
+            <<: *master
+        - baremetal:
+            slave-label: fuel-baremetal
+            <<: *danube
+        - virtual:
+            slave-label: fuel-virtual
+            <<: *danube
+#--------------------------------
+#       scenarios
+#--------------------------------
+    scenario:
+        # HA scenarios
+        - 'os-nosdn-nofeature-ha':
+            auto-trigger-name: 'weekly-trigger-disabled'
+
+    jobs:
+        - 'fuel-{scenario}-{pod}-weekly-{stream}'
+        - 'fuel-deploy-{pod}-weekly-{stream}'
+
+########################
+# job templates
+########################
+- job-template:
+    name: 'fuel-{scenario}-{pod}-weekly-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    properties:
+        - logrotate-default
+        - throttle:
+            enabled: true
+            max-total: 4
+            max-per-node: 1
+            option: 'project'
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'fuel-os-.*?-{pod}-daily-.*'
+                - 'fuel-os-.*?-{pod}-weekly-.*'
+            block-level: 'NODE'
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+    triggers:
+        - '{auto-trigger-name}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - '{installer}-defaults'
+        - '{slave-label}-defaults':
+            installer: '{installer}'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: '{scenario}'
+        - fuel-weekly-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - trigger-builds:
+            - project: 'fuel-deploy-{pod}-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              same-node: true
+              block: true
+        - trigger-builds:
+            - project: 'functest-fuel-{pod}-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              same-node: true
+              block: true
+              block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
+
+    publishers:
+        - email:
+            recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
+
+- job-template:
+    name: 'fuel-deploy-{pod}-weekly-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - logrotate-default
+        - throttle:
+            enabled: true
+            max-total: 4
+            max-per-node: 1
+            option: 'project'
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'fuel-deploy-{pod}-daily-.*'
+                - 'fuel-deploy-generic-daily-.*'
+                - 'fuel-deploy-{pod}-weekly-.*'
+                - 'fuel-deploy-generic-weekly-.*'
+            block-level: 'NODE'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - '{installer}-defaults'
+        - '{slave-label}-defaults':
+            installer: '{installer}'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: 'os-odl_l2-nofeature-ha'
+        - fuel-weekly-parameter:
+            gs-pathname: '{gs-pathname}'
+        - string:
+            name: DEPLOY_TIMEOUT
+            default: '150'
+            description: 'Deployment timeout in minutes'
+
+    scm:
+        - git-scm
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - shell:
+            !include-raw-escape: ./fuel-download-artifact.sh
+        - shell:
+            !include-raw-escape: ./fuel-deploy.sh
+
+    publishers:
+        - email:
+            recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
+
+########################
+# parameter macros
+########################
+- parameter:
+    name: fuel-weekly-parameter
+    parameters:
+        - string:
+            name: BUILD_DIRECTORY
+            default: $WORKSPACE/build_output
+            description: "Directory where the build artifact will be located upon the completion of the build."
+        - string:
+            name: CACHE_DIRECTORY
+            default: $HOME/opnfv/cache/$INSTALLER_TYPE
+            description: "Directory where the cache to be used during the build is located."
+        - string:
+            name: GS_URL
+            default: artifacts.opnfv.org/$PROJECT{gs-pathname}
+            description: "URL to Google Storage."
+########################
+# trigger macros
+########################
+#-----------------------------------------------
+# Triggers for job running on fuel-baremetal against master branch
+#-----------------------------------------------
+# HA Scenarios
+- trigger:
+    name: 'fuel-os-nosdn-nofeature-ha-baremetal-weekly-master-trigger'
+    triggers:
+        - timed: ''
similarity index 93%
rename from jjb/functest/functest-ci-jobs.yml
rename to jjb/functest/functest-daily-jobs.yml
index 44c2ce5..5984b36 100644 (file)
@@ -2,9 +2,9 @@
 # job configuration for functest
 ###################################
 - project:
-    name: functest
+    name: functest-daily
 
-    project: '{name}'
+    project: functest
 
 #--------------------------------
 # BRANCH ANCHORS
             job-timeout: 60
         - 'daily':
             job-timeout: 180
-        - 'weekly':
-            job-timeout: 400
 
     jobs:
         - 'functest-{installer}-{pod}-{testsuite}-{stream}'
 
     builders:
         - description-setter:
-            description: "POD: $NODE_NAME"
+            description: "Built on $NODE_NAME"
         - 'functest-{testsuite}-builder'
 
 ########################
             name: FUNCTEST_SUITE_NAME
             default: 'daily'
             description: "Daily suite name to run"
-- parameter:
-    name: functest-weekly-parameter
-    parameters:
-        - string:
-            name: FUNCTEST_SUITE_NAME
-            default: 'weekly'
-            description: "Weekly suite name to run"
 - parameter:
     name: functest-suite-parameter
     parameters:
         - 'functest-store-results'
         - 'functest-exit'
 
-- builder:
-    name: functest-weekly-builder
-    builders:
-        - 'functest-cleanup'
-        - 'set-functest-env'
-        - 'functest-weekly'
-        - 'functest-store-results'
-        - 'functest-exit'
-
 - builder:
     name: functest-suite-builder
     builders:
         - shell:
             !include-raw: ./functest-loop.sh
 
-- builder:
-    name: functest-weekly
-    builders:
-        - shell:
-            !include-raw: ./functest-loop.sh
 
 - builder:
     name: functest-suite
diff --git a/jjb/functest/functest-weekly-jobs.yml b/jjb/functest/functest-weekly-jobs.yml
new file mode 100644 (file)
index 0000000..f44f7b8
--- /dev/null
@@ -0,0 +1,124 @@
+###################################
+# job configuration for functest
+###################################
+- project:
+    name: functest-weekly
+
+    project: functest
+
+#--------------------------------
+# BRANCH ANCHORS
+#--------------------------------
+    master: &master
+        stream: master
+        branch: '{stream}'
+        gs-pathname: ''
+        docker-tag: 'latest'
+        disabled: false
+    danube: &danube
+        stream: danube
+        branch: 'stable/{stream}'
+        gs-pathname: '/{stream}'
+        docker-tag: 'stable'
+        disabled: true
+#--------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#--------------------------------
+#    Installers using labels
+#            CI PODs
+# This section should only contain the installers
+# that have been switched using labels for slaves
+#--------------------------------
+    pod:
+# fuel CI PODs
+        - baremetal:
+            slave-label: fuel-baremetal
+            installer: fuel
+            <<: *master
+        - virtual:
+            slave-label: fuel-virtual
+            installer: fuel
+            <<: *master
+        - baremetal:
+            slave-label: fuel-baremetal
+            installer: fuel
+            <<: *danube
+        - virtual:
+            slave-label: fuel-virtual
+            installer: fuel
+            <<: *danube
+#--------------------------------
+    jobs:
+        - 'functest-{installer}-{pod}-weekly-{stream}'
+
+################################
+# job template
+################################
+- job-template:
+    name: 'functest-{installer}-{pod}-weekly-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - logrotate-default
+        - throttle:
+            enabled: true
+            max-per-node: 1
+            option: 'project'
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+        - timeout:
+            timeout: '400'
+            abort: true
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - '{installer}-defaults'
+        - '{slave-label}-defaults'
+        - string:
+            name: FUNCTEST_SUITE_NAME
+            default: 'weekly'
+            description: "Weekly suite name to run"
+        - string:
+            name: DEPLOY_SCENARIO
+            default: 'os-odl_l2-nofeature-ha'
+        - string:
+            name: DOCKER_TAG
+            default: '{docker-tag}'
+            description: 'Tag to pull docker image'
+        - string:
+            name: CLEAN_DOCKER_IMAGES
+            default: 'false'
+            description: 'Remove downloaded docker images (opnfv/functest*:*)'
+        - functest-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    scm:
+        - git-scm
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - 'functest-weekly-builder'
+########################
+# builder macros
+########################
+- builder:
+    name: functest-weekly-builder
+    builders:
+        - shell:
+            !include-raw: ./functest-cleanup.sh
+        - shell:
+            !include-raw: ./set-functest-env.sh
+        - shell:
+            !include-raw: ./functest-loop.sh
+        - shell:
+            !include-raw: ../../utils/push-test-logs.sh
+        - shell:
+            !include-raw: ./functest-exit.sh