From: Fatih Degirmenci Date: Tue, 19 Sep 2017 07:03:13 +0000 (+0000) Subject: Merge "Don't trigger danube branch" X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=c7c82f49e1af644542b2a5fbde8f870eee9c9ff5;hp=43d32ebd64722175b9d0f69835f7657072538812;p=releng.git Merge "Don't trigger danube branch" --- diff --git a/jjb/apex/apex-deploy.sh b/jjb/apex/apex-deploy.sh index a79c9e726..b8ae75a1f 100755 --- a/jjb/apex/apex-deploy.sh +++ b/jjb/apex/apex-deploy.sh @@ -10,8 +10,6 @@ echo "Starting the Apex deployment." echo "--------------------------------------------------------" echo -sudo rm -rf /tmp/tmp* - if [ -z "$DEPLOY_SCENARIO" ]; then echo "Deploy scenario not set!" exit 1 diff --git a/jjb/apex/apex-download-artifact.sh b/jjb/apex/apex-download-artifact.sh index a11fb65b8..68baf59da 100755 --- a/jjb/apex/apex-download-artifact.sh +++ b/jjb/apex/apex-download-artifact.sh @@ -39,7 +39,13 @@ else VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | grep -Eo '[0-9]+\.[0-9]+-([0-9]{8}|[a-z]+-[0-9]\.[0-9]+)') # build RPM List which already includes base Apex RPM RPM_LIST+=" opnfv-apex-undercloud-${VERSION_EXTENSION}.noarch.rpm" - RPM_LIST+=" python34-opnfv-apex-${VERSION_EXTENSION}.noarch.rpm" + + # add back legacy support for danube + if [ "$BRANCH" == 'stable/danube' ]; then + RPM_LIST+=" opnfv-apex-common-${VERSION_EXTENSION}.noarch.rpm" + else + RPM_LIST+=" python34-opnfv-apex-${VERSION_EXTENSION}.noarch.rpm" + fi # remove old / install new RPMs if rpm -q opnfv-apex > /dev/null; then diff --git a/jjb/apex/apex-project-jobs.yml b/jjb/apex/apex-project-jobs.yml index 973ad913a..58072865d 100644 --- a/jjb/apex/apex-project-jobs.yml +++ b/jjb/apex/apex-project-jobs.yml @@ -9,7 +9,11 @@ gs-pathname: '' concurrent-builds: 3 disabled: false - + - euphrates: &euphrates + branch: 'stable/euphrates' + gs-pathname: '/euphrates' + concurrent-builds: 3 + disabled: true - danube: &danube branch: 'stable/danube' gs-pathname: '/danube' @@ -29,7 +33,7 @@ # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) - node: 'apex-build-{stream}' + node: 'apex-build-master' disabled: false @@ -78,7 +82,7 @@ # Required Variables: # stream: branch with - in place of / (eg. stable) # branch: branch (eg. stable) - node: 'apex-virtual-{stream}' + node: 'apex-virtual-master' disabled: false diff --git a/jjb/apex/apex.yml b/jjb/apex/apex.yml index baad8d353..ededa7e42 100644 --- a/jjb/apex/apex.yml +++ b/jjb/apex/apex.yml @@ -7,8 +7,7 @@ - 'apex-verify-unit-tests-{stream}' - 'apex-runner-cperf-{stream}' - 'apex-deploy-{platform}-{stream}' - - 'apex-daily-master' - - 'apex-daily-danube' + - 'apex-daily-{stream}' - 'apex-csit-promote-daily-{stream}' - 'apex-fdio-promote-daily-{stream}' - 'apex-{scenario}-baremetal-{scenario_stream}' @@ -28,7 +27,14 @@ baremetal-slave: 'apex-baremetal-master' verify-scenario: 'os-odl-nofeature-ha' scenario_stream: 'master' - + - euphrates: &euphrates + branch: 'stable/euphrates' + gs-pathname: '' + build-slave: 'apex-build-master' + virtual-slave: 'apex-virtual-master' + baremetal-slave: 'apex-baremetal-master' + verify-scenario: 'os-odl-nofeature-ha' + scenario_stream: 'euphrates' - danube: &danube branch: 'stable/danube' gs-pathname: '/danube' @@ -134,6 +140,48 @@ <<: *master - 'os-odl-fdio-dvr-ha': <<: *master + - 'os-nosdn-nofeature-noha': + <<: *euphrates + - 'os-nosdn-nofeature-ha': + <<: *euphrates + - 'os-odl-nofeature-ha': + <<: *euphrates + - 'os-odl-nofeature-noha': + <<: *euphrates + - 'os-odl-bgpvpn-ha': + <<: *euphrates + - 'os-ovn-nofeature-noha': + <<: *euphrates + - 'os-nosdn-fdio-noha': + <<: *euphrates + - 'os-nosdn-fdio-ha': + <<: *euphrates + - 'os-odl-fdio-noha': + <<: *euphrates + - 'os-odl-fdio-ha': + <<: *euphrates + - 'os-nosdn-bar-ha': + <<: *euphrates + - 'os-nosdn-bar-noha': + <<: *euphrates + - 'os-nosdn-nofeature-ha-ipv6': + <<: *euphrates + - 'os-nosdn-ovs_dpdk-noha': + <<: *euphrates + - 'os-nosdn-ovs_dpdk-ha': + <<: *euphrates + - 'os-nosdn-kvm_ovs_dpdk-noha': + <<: *euphrates + - 'os-nosdn-kvm_ovs_dpdk-ha': + <<: *euphrates + - 'os-odl-sfc-noha': + <<: *euphrates + - 'os-odl-sfc-ha': + <<: *euphrates + - 'os-odl-fdio-dvr-noha': + <<: *euphrates + - 'os-odl-fdio-dvr-ha': + <<: *euphrates platform: - 'baremetal' @@ -777,10 +825,8 @@ # steps: # - shell: 'echo "Tests Passed"' - -# danube Daily - job-template: - name: 'apex-daily-danube' + name: 'apex-daily-{stream}' # Job template for daily build # @@ -789,7 +835,7 @@ # branch: branch (eg. stable) project-type: 'multijob' - node: 'apex-baremetal-danube' + node: '{baremetal-slave}' disabled: false @@ -798,25 +844,25 @@ parameters: - '{project}-defaults' - - '{project}-baremetal-danube-defaults' + - '{project}-baremetal-{stream}-defaults' - project-parameter: project: '{project}' - branch: 'stable/danube' + branch: '{branch}' - apex-parameter: - gs-pathname: '/danube' + gs-pathname: '{gs-pathname}' properties: - logrotate-default triggers: - - 'apex-danube' + - 'apex-{stream}' builders: - multijob: name: build condition: SUCCESSFUL projects: - - name: 'apex-build-danube' + - name: 'apex-build-{stream}' current-parameters: false predefined-parameters: | GERRIT_BRANCH=$GERRIT_BRANCH @@ -831,10 +877,10 @@ name: 'Verify and upload ISO' condition: SUCCESSFUL projects: - - name: 'apex-verify-iso-danube' + - name: 'apex-verify-iso-{stream}' current-parameters: false predefined-parameters: | - BUILD_DIRECTORY=$WORKSPACE/../apex-build-danube/.build + BUILD_DIRECTORY=$WORKSPACE/../apex-build-{stream}/.build GERRIT_BRANCH=$GERRIT_BRANCH GERRIT_REFSPEC= GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER @@ -843,174 +889,442 @@ kill-phase-on: FAILURE abort-all-job: true git-revision: true - - multijob: - name: Baremetal Deploy and Test Phase - condition: SUCCESSFUL - projects: - - - name: 'apex-os-nosdn-nofeature-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + - apex-builder-{stream} - - name: 'apex-os-nosdn-nofeature-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false +# snapshot create +- job-template: + name: 'apex-create-snapshot' - - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + # Job template for clean + # + # Required Variables: + # stream: branch with - in place of / (eg. stable) - - name: 'apex-os-nosdn-ovs-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + disabled: false - - name: 'apex-os-nosdn-ovs-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + builders: + - shell: + !include-raw-escape: ./apex-snapshot-create.sh - - name: 'apex-os-nosdn-fdio-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false +# snapshot upload +- job-template: + name: 'apex-upload-snapshot' - - name: 'apex-os-nosdn-fdio-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + # Job template for clean + # + # Required Variables: + # stream: branch with - in place of / (eg. stable) - - name: 'apex-os-nosdn-kvm-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + disabled: false - - name: 'apex-os-nosdn-kvm-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + builders: + - inject: + properties-content: ARTIFACT_TYPE=snapshot + - 'apex-upload-artifact' - - name: 'apex-os-odl_l2-fdio-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false +# CSIT promote +- job-template: + name: 'apex-csit-promote-daily-{stream}' - - name: 'apex-os-odl_l2-fdio-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + # Job template for promoting CSIT Snapshots + # + # Required Variables: + # stream: branch with - in place of / (eg. stable) + # branch: branch (eg. stable) + node: '{virtual-slave}' + project-type: 'multijob' + disabled: false - - name: 'apex-os-odl_netvirt-fdio-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + scm: + - git-scm - - name: 'apex-os-odl_l2-sfc-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - apex-parameter: + gs-pathname: '{gs-pathname}' - - name: 'apex-os-odl_l3-nofeature-noha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + properties: + - build-blocker: + use-build-blocker: true + block-level: 'NODE' + blocking-jobs: + - 'apex-verify.*' + - 'apex-deploy.*' + - 'apex-runner.*' + - 'apex-daily.*' - - name: 'apex-os-odl_l3-nofeature-ha-baremetal-danube' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false + triggers: + - timed: '0 12 * * 0' - - name: 'apex-os-odl_l3-ovs-noha-baremetal-danube' - node-parameters: false + builders: + - multijob: + name: build + condition: SUCCESSFUL + projects: + - name: 'apex-build-{stream}' current-parameters: false predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false - - - name: 'apex-os-odl_l3-ovs-ha-baremetal-danube' + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC=$GERRIT_REFSPEC + GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER + GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER + kill-phase-on: FAILURE abort-all-job: true - git-revision: false - - - name: 'apex-os-odl-bgpvpn-ha-baremetal-danube' - node-parameters: false + git-revision: true + - multijob: + name: deploy-virtual + condition: SUCCESSFUL + projects: + - name: 'apex-deploy-virtual-{stream}' current-parameters: false predefined-parameters: | + DEPLOY_SCENARIO=os-odl_l3-csit-noha OPNFV_CLEAN=yes - kill-phase-on: NEVER + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC=$GERRIT_REFSPEC + GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER + GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE + PROMOTE=True + node-parameters: true + kill-phase-on: FAILURE abort-all-job: true git-revision: false - - - name: 'apex-os-odl-gluon-noha-baremetal-danube' + - multijob: + name: functest-smoke + condition: SUCCESSFUL + projects: + - name: 'functest-apex-virtual-suite-{stream}' + current-parameters: false + predefined-parameters: | + DEPLOY_SCENARIO=os-odl_l3-nofeature-noha + FUNCTEST_SUITE_NAME=tempest_smoke_serial + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC=$GERRIT_REFSPEC + GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER + GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: create snapshot + condition: SUCCESSFUL + projects: + - name: 'apex-create-snapshot' + current-parameters: false + predefined-parameters: | + SNAP_TYPE=csit + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: upload snapshot + condition: SUCCESSFUL + projects: + - name: 'apex-upload-snapshot' + current-parameters: false + predefined-parameters: | + SNAP_TYPE=csit + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + +# FDIO promote +- job-template: + name: 'apex-fdio-promote-daily-{stream}' + + # Job template for promoting CSIT Snapshots + # + # Required Variables: + # stream: branch with - in place of / (eg. stable) + # branch: branch (eg. stable) + node: '{virtual-slave}' + project-type: 'multijob' + disabled: false + + scm: + - git-scm + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - apex-parameter: + gs-pathname: '{gs-pathname}' + + properties: + - build-blocker: + use-build-blocker: true + block-level: 'NODE' + blocking-jobs: + - 'apex-verify.*' + - 'apex-deploy.*' + - 'apex-runner.*' + - 'apex-daily.*' + + builders: + - multijob: + name: build + condition: SUCCESSFUL + projects: + - name: 'apex-build-{stream}' + current-parameters: false + predefined-parameters: | + GERRIT_BRANCH=$GERRIT_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 + git-revision: true + - multijob: + name: deploy-virtual + condition: SUCCESSFUL + projects: + - name: 'apex-deploy-virtual-{stream}' + current-parameters: false + predefined-parameters: | + DEPLOY_SCENARIO=os-odl_netvirt-fdio-noha + OPNFV_CLEAN=yes + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC=$GERRIT_REFSPEC + GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER + GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE + PROMOTE=True + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: create snapshot + condition: SUCCESSFUL + projects: + - name: 'apex-create-snapshot' + current-parameters: false + predefined-parameters: | + SNAP_TYPE=fdio + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: upload snapshot + condition: SUCCESSFUL + projects: + - name: 'apex-upload-snapshot' + current-parameters: false + predefined-parameters: | + SNAP_TYPE=fdio + node-parameters: true + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + +# Flex job +- job-template: + name: 'apex-flex-daily-os-nosdn-nofeature-ha-{stream}' + + project-type: 'multijob' + + disabled: false + + node: 'flex-pod2' + + scm: + - git-scm + triggers: + - 'apex-{stream}' + parameters: + - '{project}-defaults' + - project-parameter: + project: '{project}' + branch: '{branch}' + - apex-parameter: + gs-pathname: '{gs-pathname}' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-ha' + description: "Scenario to deploy with." + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on this Jenkins Slave' + - string: + name: SSH_KEY + default: /root/.ssh/id_rsa + description: 'SSH key to use for Apex' + properties: + - logrotate-default + - build-blocker: + use-build-blocker: true + block-level: 'NODE' + blocking-jobs: + - 'apex-verify.*' + - 'apex-runner.*' + - 'apex-.*-promote.*' + - 'apex-run.*' + - 'apex-.+-baremetal-.+' + - throttle: + max-per-node: 1 + max-total: 10 + option: 'project' + builders: + - description-setter: + description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO" + - multijob: + name: 'Baremetal Deploy' + condition: SUCCESSFUL + projects: + - name: 'apex-deploy-baremetal-{stream}' + node-parameters: true + current-parameters: true + predefined-parameters: | + OPNFV_CLEAN=yes + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC= + DEPLOY_SCENARIO=$DEPLOY_SCENARIO + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: Yardstick + condition: ALWAYS + projects: + - name: 'yardstick-apex-baremetal-daily-{stream}' + node-parameters: true + current-parameters: false + predefined-parameters: + DEPLOY_SCENARIO=$DEPLOY_SCENARIO + kill-phase-on: NEVER + abort-all-job: false + git-revision: false + +# Dovetail Danube test job +- job-template: + name: 'apex-dovetail-daily-os-nosdn-nofeature-ha-baremetal-danube' + + project-type: 'multijob' + + node: 'huawei-pod4' + + disabled: false + + parameters: + - '{project}-defaults' + - project-parameter: + project: '{project}' + branch: 'stable/danube' + - apex-parameter: + gs-pathname: '/danube' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-ha' + description: "Scenario to deploy with." + + properties: + - logrotate-default + - build-blocker: + use-build-blocker: true + block-level: 'NODE' + blocking-jobs: + - 'apex-verify.*' + - 'apex-runner.*' + - 'apex-.*-promote.*' + - 'apex-run.*' + + triggers: + - timed: '0 12 * * *' + + builders: + - description-setter: + description: "Testing on $NODE_NAME - Scenario: $DEPLOY_SCENARIO" + - multijob: + name: 'Baremetal Deploy' + condition: SUCCESSFUL + projects: + - name: 'apex-deploy-baremetal-danube' + node-parameters: true + current-parameters: true + predefined-parameters: | + OPNFV_CLEAN=yes + GERRIT_BRANCH=$GERRIT_BRANCH + GERRIT_REFSPEC= + DEPLOY_SCENARIO=$DEPLOY_SCENARIO + kill-phase-on: FAILURE + abort-all-job: true + git-revision: false + - multijob: + name: Dovetail + condition: ALWAYS + projects: + - name: 'dovetail-apex-baremetal-proposed_tests-danube' + node-parameters: true + current-parameters: false + predefined-parameters: + DEPLOY_SCENARIO=$DEPLOY_SCENARIO + kill-phase-on: NEVER + abort-all-job: false + git-revision: false + +######################## +# parameter macros +######################## +- parameter: + name: apex-parameter + parameters: + - string: + name: ARTIFACT_NAME + default: 'latest' + description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact" + - string: + name: ARTIFACT_VERSION + default: 'daily' + description: "Artifact version type" + - string: + name: BUILD_DIRECTORY + default: $WORKSPACE/.build + description: "Directory where the build artifact will be located upon the completion of the build." + - string: + name: CACHE_DIRECTORY + default: $HOME/opnfv/apex-cache{gs-pathname} + description: "Directory where the cache to be used during the build is located." + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW." + - string: + name: GS_PATHNAME + default: '{gs-pathname}' + description: "Version directory where opnfv artifacts are stored in gs repository" + - string: + name: GS_URL + default: $GS_BASE{gs-pathname} + description: "URL to Google Storage." + - string: + name: PROMOTE + default: 'False' + description: "Flag to know if we should promote/upload snapshot artifacts." + +######################## +# builder macros +######################## + +# danube Builder +- builder: + name: apex-builder-danube + builders: + - multijob: + name: Baremetal Deploy and Test Phase + condition: SUCCESSFUL + projects: + + - name: 'apex-os-nosdn-nofeature-noha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1019,7 +1333,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-odl_l3-fdio-noha-baremetal-danube' + - name: 'apex-os-nosdn-nofeature-ha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1028,7 +1342,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-odl_l3-fdio-ha-baremetal-danube' + - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1037,7 +1351,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-odl_l3-fdio_dvr-noha-baremetal-danube' + - name: 'apex-os-nosdn-ovs-noha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1046,7 +1360,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-odl_l3-fdio_dvr-ha-baremetal-danube' + - name: 'apex-os-nosdn-ovs-ha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1055,7 +1369,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-odl_l3-csit-noha-baremetal-danube' + - name: 'apex-os-nosdn-fdio-noha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1064,7 +1378,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-onos-nofeature-ha-baremetal-danube' + - name: 'apex-os-nosdn-fdio-ha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1073,7 +1387,7 @@ abort-all-job: true git-revision: false - - name: 'apex-os-ovn-nofeature-noha-baremetal-danube' + - name: 'apex-os-nosdn-kvm-ha-baremetal-danube' node-parameters: false current-parameters: false predefined-parameters: | @@ -1082,72 +1396,173 @@ abort-all-job: true git-revision: false + - name: 'apex-os-nosdn-kvm-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false -# master Daily -- job-template: - name: 'apex-daily-master' + - name: 'apex-os-odl_l2-fdio-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - # Job template for daily build - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - # branch: branch (eg. stable) - project-type: 'multijob' + - name: 'apex-os-odl_l2-fdio-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - node: 'apex-baremetal-master' + - name: 'apex-os-odl_netvirt-fdio-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - disabled: false + - name: 'apex-os-odl_l2-sfc-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - scm: - - git-scm + - name: 'apex-os-odl_l3-nofeature-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - parameters: - - '{project}-defaults' - - '{project}-baremetal-master-defaults' - - project-parameter: - project: '{project}' - branch: 'master' - - apex-parameter: - gs-pathname: '' + - name: 'apex-os-odl_l3-nofeature-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - properties: - - logrotate-default + - name: 'apex-os-odl_l3-ovs-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - triggers: - - 'apex-master' + - name: 'apex-os-odl_l3-ovs-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - builders: - - multijob: - name: build - condition: SUCCESSFUL - projects: - - name: 'apex-build-master' + - name: 'apex-os-odl-bgpvpn-ha-baremetal-danube' + node-parameters: false current-parameters: false predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC= - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - node-parameters: true - kill-phase-on: FAILURE + OPNFV_CLEAN=yes + kill-phase-on: NEVER abort-all-job: true - git-revision: true - - multijob: - name: 'Verify and upload ISO' - condition: SUCCESSFUL - projects: - - name: 'apex-verify-iso-master' + git-revision: false + + - name: 'apex-os-odl-gluon-noha-baremetal-danube' + node-parameters: false current-parameters: false predefined-parameters: | - BUILD_DIRECTORY=$WORKSPACE/../apex-build-master/.build - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC= - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - node-parameters: true - kill-phase-on: FAILURE + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl_l3-fdio-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl_l3-fdio-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl_l3-fdio_dvr-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl_l3-fdio_dvr-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl_l3-csit-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-onos-nofeature-ha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-ovn-nofeature-noha-baremetal-danube' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER abort-all-job: true - git-revision: true + git-revision: false + + +# master Builder +- builder: + name: apex-builder-master + builders: - multijob: name: Baremetal Deploy and Test Phase condition: SUCCESSFUL @@ -1343,430 +1758,206 @@ git-revision: false - -# snapshot create -- job-template: - name: 'apex-create-snapshot' - - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - - disabled: false - - builders: - - shell: - !include-raw-escape: ./apex-snapshot-create.sh - -# snapshot upload -- job-template: - name: 'apex-upload-snapshot' - - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - - disabled: false - - builders: - - inject: - properties-content: ARTIFACT_TYPE=snapshot - - 'apex-upload-artifact' - -# CSIT promote -- job-template: - name: 'apex-csit-promote-daily-{stream}' - - # Job template for promoting CSIT Snapshots - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - # branch: branch (eg. stable) - node: '{virtual-slave}' - project-type: 'multijob' - disabled: false - - scm: - - git-scm - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - apex-parameter: - gs-pathname: '{gs-pathname}' - - properties: - - build-blocker: - use-build-blocker: true - block-level: 'NODE' - blocking-jobs: - - 'apex-verify.*' - - 'apex-deploy.*' - - 'apex-runner.*' - - 'apex-daily.*' - - triggers: - - timed: '0 12 * * 0' - - builders: +# euphrates Builder +- builder: + name: apex-builder-euphrates + builders: - multijob: - name: build + name: Baremetal Deploy and Test Phase condition: SUCCESSFUL projects: - - name: 'apex-build-{stream}' + + - name: 'apex-os-nosdn-nofeature-noha-baremetal-euphrates' + node-parameters: false current-parameters: false predefined-parameters: | - GERRIT_BRANCH=$GERRIT_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 + OPNFV_CLEAN=yes + kill-phase-on: NEVER abort-all-job: true - git-revision: true - - multijob: - name: deploy-virtual - condition: SUCCESSFUL - projects: - - name: 'apex-deploy-virtual-{stream}' + git-revision: false + + - name: 'apex-os-nosdn-nofeature-ha-baremetal-euphrates' + node-parameters: false current-parameters: false predefined-parameters: | - DEPLOY_SCENARIO=os-odl_l3-csit-noha OPNFV_CLEAN=yes - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - PROMOTE=True - node-parameters: true - kill-phase-on: FAILURE + kill-phase-on: NEVER abort-all-job: true git-revision: false - - multijob: - name: functest-smoke - condition: SUCCESSFUL - projects: - - name: 'functest-apex-virtual-suite-{stream}' - current-parameters: false - predefined-parameters: | - DEPLOY_SCENARIO=os-odl_l3-nofeature-noha - FUNCTEST_SUITE_NAME=tempest_smoke_serial - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - node-parameters: true - kill-phase-on: FAILURE - abort-all-job: true - git-revision: false - - multijob: - name: create snapshot - condition: SUCCESSFUL - projects: - - name: 'apex-create-snapshot' - current-parameters: false - predefined-parameters: | - SNAP_TYPE=csit - node-parameters: true - kill-phase-on: FAILURE - abort-all-job: true - git-revision: false - - multijob: - name: upload snapshot - condition: SUCCESSFUL - projects: - - name: 'apex-upload-snapshot' - current-parameters: false - predefined-parameters: | - SNAP_TYPE=csit - node-parameters: true - kill-phase-on: FAILURE - abort-all-job: true - git-revision: false - -# FDIO promote -- job-template: - name: 'apex-fdio-promote-daily-{stream}' - - # Job template for promoting CSIT Snapshots - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - # branch: branch (eg. stable) - node: '{virtual-slave}' - project-type: 'multijob' - disabled: false - - scm: - - git-scm - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - apex-parameter: - gs-pathname: '{gs-pathname}' - - properties: - - build-blocker: - use-build-blocker: true - block-level: 'NODE' - blocking-jobs: - - 'apex-verify.*' - - 'apex-deploy.*' - - 'apex-runner.*' - - 'apex-daily.*' - builders: - - multijob: - name: build - condition: SUCCESSFUL - projects: - - name: 'apex-build-{stream}' + - name: 'apex-os-odl-nofeature-ha-baremetal-euphrates' + node-parameters: false current-parameters: false predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + - name: 'apex-os-odl-nofeature-noha-baremetal-euphrates' node-parameters: false - kill-phase-on: FAILURE + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER abort-all-job: true - git-revision: true - - multijob: - name: deploy-virtual - condition: SUCCESSFUL - projects: - - name: 'apex-deploy-virtual-{stream}' + git-revision: false + + - name: 'apex-os-odl-bgpvpn-ha-baremetal-euphrates' + node-parameters: false current-parameters: false predefined-parameters: | - DEPLOY_SCENARIO=os-odl_netvirt-fdio-noha OPNFV_CLEAN=yes - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - PROMOTE=True - node-parameters: true - kill-phase-on: FAILURE + kill-phase-on: NEVER abort-all-job: true git-revision: false - - multijob: - name: create snapshot - condition: SUCCESSFUL - projects: - - name: 'apex-create-snapshot' - current-parameters: false - predefined-parameters: | - SNAP_TYPE=fdio - node-parameters: true - kill-phase-on: FAILURE - abort-all-job: true - git-revision: false - - multijob: - name: upload snapshot - condition: SUCCESSFUL - projects: - - name: 'apex-upload-snapshot' - current-parameters: false - predefined-parameters: | - SNAP_TYPE=fdio - node-parameters: true - kill-phase-on: FAILURE - abort-all-job: true - git-revision: false -# Flex job -- job-template: - name: 'apex-flex-daily-os-nosdn-nofeature-ha-{stream}' + - name: 'apex-os-ovn-nofeature-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - project-type: 'multijob' + - name: 'apex-os-nosdn-fdio-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - disabled: false + - name: 'apex-os-nosdn-fdio-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - node: 'flex-pod2' + - name: 'apex-os-odl-fdio-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - scm: - - git-scm - triggers: - - 'apex-{stream}' - parameters: - - '{project}-defaults' - - project-parameter: - project: '{project}' - branch: '{branch}' - - apex-parameter: - gs-pathname: '{gs-pathname}' - - string: - name: DEPLOY_SCENARIO - default: 'os-nosdn-nofeature-ha' - description: "Scenario to deploy with." - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: SSH_KEY - default: /root/.ssh/id_rsa - description: 'SSH key to use for Apex' - properties: - - logrotate-default - - build-blocker: - use-build-blocker: true - block-level: 'NODE' - blocking-jobs: - - 'apex-verify.*' - - 'apex-runner.*' - - 'apex-.*-promote.*' - - 'apex-run.*' - - 'apex-.+-baremetal-.+' - - throttle: - max-per-node: 1 - max-total: 10 - option: 'project' - builders: - - description-setter: - description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO" - - multijob: - name: 'Baremetal Deploy' - condition: SUCCESSFUL - projects: - - name: 'apex-deploy-baremetal-{stream}' - node-parameters: true - current-parameters: true + - name: 'apex-os-odl-fdio-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false predefined-parameters: | OPNFV_CLEAN=yes - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC= - DEPLOY_SCENARIO=$DEPLOY_SCENARIO - kill-phase-on: FAILURE + kill-phase-on: NEVER abort-all-job: true git-revision: false - - multijob: - name: Yardstick - condition: ALWAYS - projects: - - name: 'yardstick-apex-baremetal-daily-{stream}' - node-parameters: true + + - name: 'apex-os-nosdn-bar-ha-baremetal-euphrates' + node-parameters: false current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + predefined-parameters: | + OPNFV_CLEAN=yes kill-phase-on: NEVER - abort-all-job: false + abort-all-job: true git-revision: false -# Dovetail Danube test job -- job-template: - name: 'apex-dovetail-daily-os-nosdn-nofeature-ha-baremetal-danube' + - name: 'apex-os-nosdn-bar-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - project-type: 'multijob' + - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - node: 'huawei-pod4' + - name: 'apex-os-nosdn-ovs_dpdk-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - disabled: false + - name: 'apex-os-nosdn-ovs_dpdk-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - parameters: - - '{project}-defaults' - - project-parameter: - project: '{project}' - branch: 'stable/danube' - - apex-parameter: - gs-pathname: '/danube' - - string: - name: DEPLOY_SCENARIO - default: 'os-nosdn-nofeature-ha' - description: "Scenario to deploy with." + - name: 'apex-os-nosdn-kvm_ovs_dpdk-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - properties: - - logrotate-default - - build-blocker: - use-build-blocker: true - block-level: 'NODE' - blocking-jobs: - - 'apex-verify.*' - - 'apex-runner.*' - - 'apex-.*-promote.*' - - 'apex-run.*' + - name: 'apex-os-nosdn-kvm_ovs_dpdk-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - triggers: - - timed: '0 12 * * *' + - name: 'apex-os-odl-sfc-noha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false - builders: - - description-setter: - description: "Testing on $NODE_NAME - Scenario: $DEPLOY_SCENARIO" - - multijob: - name: 'Baremetal Deploy' - condition: SUCCESSFUL - projects: - - name: 'apex-deploy-baremetal-danube' - node-parameters: true - current-parameters: true + - name: 'apex-os-odl-sfc-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false predefined-parameters: | OPNFV_CLEAN=yes - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC= - DEPLOY_SCENARIO=$DEPLOY_SCENARIO - kill-phase-on: FAILURE + kill-phase-on: NEVER abort-all-job: true git-revision: false - - multijob: - name: Dovetail - condition: ALWAYS - projects: - - name: 'dovetail-apex-baremetal-proposed_tests-danube' - node-parameters: true + + - name: 'apex-os-odl-fdio-dvr-noha-baremetal-euphrates' + node-parameters: false current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + predefined-parameters: | + OPNFV_CLEAN=yes kill-phase-on: NEVER - abort-all-job: false + abort-all-job: true git-revision: false -######################## -# parameter macros -######################## -- parameter: - name: apex-parameter - parameters: - - string: - name: ARTIFACT_NAME - default: 'latest' - description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact" - - string: - name: ARTIFACT_VERSION - default: 'daily' - description: "Artifact version type" - - string: - name: BUILD_DIRECTORY - default: $WORKSPACE/.build - description: "Directory where the build artifact will be located upon the completion of the build." - - string: - name: CACHE_DIRECTORY - default: $HOME/opnfv/apex-cache{gs-pathname} - description: "Directory where the cache to be used during the build is located." - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW." - - string: - name: GS_PATHNAME - default: '{gs-pathname}' - description: "Version directory where opnfv artifacts are stored in gs repository" - - string: - name: GS_URL - default: $GS_BASE{gs-pathname} - description: "URL to Google Storage." - - string: - name: PROMOTE - default: 'False' - description: "Flag to know if we should promote/upload snapshot artifacts." + - name: 'apex-os-odl-fdio-dvr-ha-baremetal-euphrates' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false + + -######################## -# builder macros -######################## - builder: name: 'apex-unit-test' builders: @@ -1796,6 +1987,10 @@ ######################## - trigger: name: 'apex-master' + triggers: + - timed: '0 3 1 1 7' +- trigger: + name: 'apex-euphrates' triggers: - timed: '0 12 * * *' - trigger: diff --git a/jjb/apex/apex.yml.j2 b/jjb/apex/apex.yml.j2 index df8cf92c0..cd27c2c63 100644 --- a/jjb/apex/apex.yml.j2 +++ b/jjb/apex/apex.yml.j2 @@ -7,8 +7,7 @@ - 'apex-verify-unit-tests-{stream}' - 'apex-runner-cperf-{stream}' - 'apex-deploy-{platform}-{stream}' - - 'apex-daily-master' - - 'apex-daily-danube' + - 'apex-daily-{stream}' - 'apex-csit-promote-daily-{stream}' - 'apex-fdio-promote-daily-{stream}' - 'apex-{scenario}-baremetal-{scenario_stream}' @@ -28,7 +27,14 @@ baremetal-slave: 'apex-baremetal-master' verify-scenario: 'os-odl-nofeature-ha' scenario_stream: 'master' - + - euphrates: &euphrates + branch: 'stable/euphrates' + gs-pathname: '' + build-slave: 'apex-build-master' + virtual-slave: 'apex-virtual-master' + baremetal-slave: 'apex-baremetal-master' + verify-scenario: 'os-odl-nofeature-ha' + scenario_stream: 'euphrates' - danube: &danube branch: 'stable/danube' gs-pathname: '/danube' @@ -689,10 +695,8 @@ # steps: # - shell: 'echo "Tests Passed"' -{% for stream in scenarios %} -# {{ stream }} Daily - job-template: - name: 'apex-daily-{{ stream }}' + name: 'apex-daily-{stream}' # Job template for daily build # @@ -701,7 +705,7 @@ # branch: branch (eg. stable) project-type: 'multijob' - node: '{{ build_slave[stream] }}' + node: '{baremetal-slave}' disabled: false @@ -710,25 +714,25 @@ parameters: - '{project}-defaults' - - '{project}-baremetal-{{ stream }}-defaults' + - '{project}-baremetal-{stream}-defaults' - project-parameter: project: '{project}' - branch: '{{ branch[stream] }}' + branch: '{branch}' - apex-parameter: - gs-pathname: '{{ gspathname[stream] }}' + gs-pathname: '{gs-pathname}' properties: - logrotate-default triggers: - - 'apex-{{ stream }}' + - 'apex-{stream}' builders: - multijob: name: build condition: SUCCESSFUL projects: - - name: 'apex-build-{{ stream }}' + - name: 'apex-build-{stream}' current-parameters: false predefined-parameters: | GERRIT_BRANCH=$GERRIT_BRANCH @@ -743,10 +747,10 @@ name: 'Verify and upload ISO' condition: SUCCESSFUL projects: - - name: 'apex-verify-iso-{{ stream }}' + - name: 'apex-verify-iso-{stream}' current-parameters: false predefined-parameters: | - BUILD_DIRECTORY=$WORKSPACE/../apex-build-{{ stream }}/.build + BUILD_DIRECTORY=$WORKSPACE/../apex-build-{stream}/.build GERRIT_BRANCH=$GERRIT_BRANCH GERRIT_REFSPEC= GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER @@ -755,21 +759,7 @@ kill-phase-on: FAILURE abort-all-job: true git-revision: true - - multijob: - name: Baremetal Deploy and Test Phase - condition: SUCCESSFUL - projects: -{% for scenario in scenarios[stream] %} - - name: 'apex-{{ scenario }}-baremetal-{{ stream }}' - node-parameters: false - current-parameters: false - predefined-parameters: | - OPNFV_CLEAN=yes - kill-phase-on: NEVER - abort-all-job: true - git-revision: false -{% endfor %} -{% endfor %} + - apex-builder-{stream} # snapshot create - job-template: @@ -1194,6 +1184,27 @@ ######################## # builder macros ######################## +{% for stream in scenarios %} +# {{ stream }} Builder +- builder: + name: apex-builder-{{ stream }} + builders: + - multijob: + name: Baremetal Deploy and Test Phase + condition: SUCCESSFUL + projects: +{% for scenario in scenarios[stream] %} + - name: 'apex-{{ scenario }}-baremetal-{{ stream }}' + node-parameters: false + current-parameters: false + predefined-parameters: | + OPNFV_CLEAN=yes + kill-phase-on: NEVER + abort-all-job: true + git-revision: false +{% endfor %} +{% endfor %} + - builder: name: 'apex-unit-test' builders: @@ -1223,6 +1234,10 @@ ######################## - trigger: name: 'apex-master' + triggers: + - timed: '0 3 1 1 7' +- trigger: + name: 'apex-euphrates' triggers: - timed: '0 12 * * *' - trigger: diff --git a/jjb/apex/scenarios.yaml.hidden b/jjb/apex/scenarios.yaml.hidden index def4e796a..e7fe92375 100644 --- a/jjb/apex/scenarios.yaml.hidden +++ b/jjb/apex/scenarios.yaml.hidden @@ -20,6 +20,28 @@ master: - 'os-odl-sfc-ha' - 'os-odl-fdio-dvr-noha' - 'os-odl-fdio-dvr-ha' +euphrates: + - 'os-nosdn-nofeature-noha' + - 'os-nosdn-nofeature-ha' + - 'os-odl-nofeature-ha' + - 'os-odl-nofeature-noha' + - 'os-odl-bgpvpn-ha' + - 'os-ovn-nofeature-noha' + - 'os-nosdn-fdio-noha' + - 'os-nosdn-fdio-ha' + - 'os-odl-fdio-noha' + - 'os-odl-fdio-ha' + - 'os-nosdn-bar-ha' + - 'os-nosdn-bar-noha' + - 'os-nosdn-nofeature-ha-ipv6' + - 'os-nosdn-ovs_dpdk-noha' + - 'os-nosdn-ovs_dpdk-ha' + - 'os-nosdn-kvm_ovs_dpdk-noha' + - 'os-nosdn-kvm_ovs_dpdk-ha' + - 'os-odl-sfc-noha' + - 'os-odl-sfc-ha' + - 'os-odl-fdio-dvr-noha' + - 'os-odl-fdio-dvr-ha' danube: - 'os-nosdn-nofeature-noha' - 'os-nosdn-nofeature-ha' diff --git a/jjb/barometer/barometer.yml b/jjb/barometer/barometer.yml index 8a5bea02e..d29673820 100644 --- a/jjb/barometer/barometer.yml +++ b/jjb/barometer/barometer.yml @@ -18,7 +18,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/bottlenecks/bottlenecks-ci-jobs.yml b/jjb/bottlenecks/bottlenecks-ci-jobs.yml index bb2a13ccc..cb43ff149 100644 --- a/jjb/bottlenecks/bottlenecks-ci-jobs.yml +++ b/jjb/bottlenecks/bottlenecks-ci-jobs.yml @@ -19,8 +19,8 @@ gs-packagepath: '/{suite}' # docker tag used for version control docker-tag: 'latest' - danube: &danube - stream: danube + euphrates: &euphrates + stream: euphrates branch: 'stable/{stream}' gs-pathname: '/{stream}' gs-packagepath: '/{stream}/{suite}' @@ -49,12 +49,12 @@ slave-label: compass-baremetal-branch installer: compass auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - virtual: slave-label: compass-virtual-branch installer: compass auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates # ------------------------------- # None-CI PODs @@ -63,7 +63,7 @@ # slave-label: '{pod}' # installer: joid # auto-trigger-name: 'daily-trigger-disabled' - # <<: *danube + # <<: *euphrates # - orange-pod2: # slave-label: '{pod}' # installer: joid diff --git a/jjb/bottlenecks/bottlenecks-project-jobs.yml b/jjb/bottlenecks/bottlenecks-project-jobs.yml index 10f73b8e5..93b2d913c 100644 --- a/jjb/bottlenecks/bottlenecks-project-jobs.yml +++ b/jjb/bottlenecks/bottlenecks-project-jobs.yml @@ -21,7 +21,7 @@ # This is used for different test suite dependent packages storage gs-packagepath: '/{suite}' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' gs-packagepath: '/{stream}/{suite}' diff --git a/jjb/calipso/calipso.yml b/jjb/calipso/calipso.yml index c5ba8eb1e..c282efa73 100644 --- a/jjb/calipso/calipso.yml +++ b/jjb/calipso/calipso.yml @@ -10,6 +10,9 @@ - master: branch: '{stream}' disabled: false + - euphrates: + branch: 'stable/{stream}' + disabled: false - job-template: name: 'calipso-verify-{stream}' diff --git a/jjb/daisy4nfv/daisy-daily-jobs.yml b/jjb/daisy4nfv/daisy-daily-jobs.yml index 9a680e7b8..a9249eaf8 100644 --- a/jjb/daisy4nfv/daisy-daily-jobs.yml +++ b/jjb/daisy4nfv/daisy-daily-jobs.yml @@ -19,6 +19,12 @@ branch: '{stream}' disabled: false gs-pathname: '' + euphrates: &euphrates + stream: euphrates + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false + #-------------------------------- # POD, INSTALLER, AND BRANCH MAPPING #-------------------------------- @@ -210,3 +216,30 @@ name: 'daisy-os-odl-nofeature-ha-virtual-daily-master-trigger' triggers: - timed: '0 12 * * *' + +#----------------------------------------------- +# Triggers for job running on daisy-baremetal against euphrates branch +#----------------------------------------------- +# Basic HA Scenarios +- trigger: + name: 'daisy-os-nosdn-nofeature-ha-baremetal-daily-euphrates-trigger' + triggers: + - timed: '0 0 * * *' +# ODL Scenarios +- trigger: + name: 'daisy-os-odl-nofeature-ha-baremetal-daily-euphrates-trigger' + triggers: + - timed: '0 20 * * *' +#----------------------------------------------- +# Triggers for job running on daisy-virtual against euphrates branch +#----------------------------------------------- +# Basic HA Scenarios +- trigger: + name: 'daisy-os-nosdn-nofeature-ha-virtual-daily-euphrates-trigger' + triggers: + - timed: '0 0 * * *' +# ODL Scenarios +- trigger: + name: 'daisy-os-odl-nofeature-ha-virtual-daily-euphrates-trigger' + triggers: + - timed: '0 20 * * *' diff --git a/jjb/daisy4nfv/daisy-project-jobs.yml b/jjb/daisy4nfv/daisy-project-jobs.yml index bcb89105e..8ecee7b54 100644 --- a/jjb/daisy4nfv/daisy-project-jobs.yml +++ b/jjb/daisy4nfv/daisy-project-jobs.yml @@ -20,6 +20,10 @@ branch: '{stream}' gs-pathname: '' disabled: false + - euphrates: + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false phase: - 'build': diff --git a/jjb/daisy4nfv/daisy4nfv-merge-jobs.yml b/jjb/daisy4nfv/daisy4nfv-merge-jobs.yml index 97d830f9f..23c6c7b1c 100644 --- a/jjb/daisy4nfv/daisy4nfv-merge-jobs.yml +++ b/jjb/daisy4nfv/daisy4nfv-merge-jobs.yml @@ -18,7 +18,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: true @@ -57,7 +57,7 @@ - build-blocker: use-build-blocker: true blocking-jobs: - - '{alias}-merge-(master|danube)' + - '{alias}-merge-(master|euphrates)' block-level: 'NODE' scm: diff --git a/jjb/daisy4nfv/daisy4nfv-verify-jobs.yml b/jjb/daisy4nfv/daisy4nfv-verify-jobs.yml index 1828ce459..2cf68a99a 100644 --- a/jjb/daisy4nfv/daisy4nfv-verify-jobs.yml +++ b/jjb/daisy4nfv/daisy4nfv-verify-jobs.yml @@ -15,7 +15,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false @@ -86,6 +86,8 @@ pattern: 'code/**' - compare-type: ANT pattern: 'deploy/**' + - compare-type: ANT + pattern: 'tests/**' disable-strict-forbidden-file-verification: 'true' forbidden-file-paths: - compare-type: ANT diff --git a/jjb/doctor/doctor.yml b/jjb/doctor/doctor.yml index b007e1432..7205cded3 100644 --- a/jjb/doctor/doctor.yml +++ b/jjb/doctor/doctor.yml @@ -82,7 +82,7 @@ branch-pattern: '**/{branch}' file-paths: - compare-type: ANT - pattern: 'tests/**' + pattern: 'doctor_tests/**' builders: - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh" @@ -108,7 +108,7 @@ - '{auto-trigger-name}': project: '{project}' branch: '{branch}' - files: 'tests/**' + files: 'doctor_tests/**' builders: - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh" @@ -174,7 +174,7 @@ - '{auto-trigger-name}': project: '{project}' branch: '{branch}' - files: 'tests/**' + files: 'doctor_tests/**' builders: - 'clean-workspace-log' @@ -195,11 +195,11 @@ functest_log="$HOME/opnfv/functest/results/{stream}/$FUNCTEST_SUITE_NAME.log" # NOTE: checking the test result, as the previous job could return # 0 regardless the result of doctor test scenario. - grep -e ' OK$' $functest_log || exit 1 + grep -e 'doctor test successfully' $functest_log || exit 1 publishers: - archive: - artifacts: 'tests/*.log' + artifacts: 'doctor_tests/*.log' - archive: artifacts: 'functest_results/$FUNCTEST_SUITE_NAME.log' - email-jenkins-admins-on-failure diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh index d15b98554..35311c3a9 100755 --- a/jjb/functest/functest-alpine.sh +++ b/jjb/functest/functest-alpine.sh @@ -71,7 +71,11 @@ set +e if [ ${FUNCTEST_SUITE_NAME} == 'healthcheck' ]; then tiers=(healthcheck) else - tiers=(healthcheck smoke features vnf) + if [ ${DEPLOY_TYPE} == 'baremetal' ]; then + tiers=(healthcheck smoke features vnf) + else + tiers=(healthcheck smoke features) + fi fi cmd_opt='prepare_env start && run_tests -r -t all' diff --git a/jjb/global/slave-params.yml b/jjb/global/slave-params.yml index 19d5a9545..2018dd582 100644 --- a/jjb/global/slave-params.yml +++ b/jjb/global/slave-params.yml @@ -26,6 +26,28 @@ default-slaves: - lf-pod1 +- parameter: + name: 'apex-baremetal-euphrates-defaults' + parameters: + - label: + name: SLAVE_LABEL + default: 'apex-baremetal-master' + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on this Jenkins Slave' + - string: + name: SSH_KEY + default: /root/.ssh/id_rsa + description: 'SSH key to use for Apex' + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - lf-pod1 + default-slaves: + - lf-pod1 + - parameter: name: 'apex-baremetal-danube-defaults' parameters: @@ -72,6 +94,30 @@ - lf-virtual2 - lf-virtual3 +- parameter: + name: 'apex-virtual-euphrates-defaults' + parameters: + - label: + name: SLAVE_LABEL + default: 'apex-virtual-master' + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on this Jenkins Slave' + - string: + name: SSH_KEY + default: /root/.ssh/id_rsa + description: 'SSH key to use for Apex' + - node: + name: SLAVE_NAME + description: 'Slave name on Jenkins' + allowed-slaves: + - lf-virtual2 + - lf-virtual3 + default-slaves: + - lf-virtual2 + - lf-virtual3 + - parameter: name: 'apex-virtual-danube-defaults' parameters: diff --git a/jjb/octopus/octopus.yml b/jjb/octopus/octopus.yml index c06fa89e8..f51db1bc1 100644 --- a/jjb/octopus/octopus.yml +++ b/jjb/octopus/octopus.yml @@ -14,7 +14,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/opnfvdocs/opnfvdocs.yml b/jjb/opnfvdocs/opnfvdocs.yml index 6f63db96b..95bc8a9dd 100644 --- a/jjb/opnfvdocs/opnfvdocs.yml +++ b/jjb/opnfvdocs/opnfvdocs.yml @@ -18,7 +18,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/ovn4nfv/ovn4nfv-project-jobs.yml b/jjb/ovn4nfv/ovn4nfv-project-jobs.yml index 8c82cac5e..b5e078ca6 100644 --- a/jjb/ovn4nfv/ovn4nfv-project-jobs.yml +++ b/jjb/ovn4nfv/ovn4nfv-project-jobs.yml @@ -10,6 +10,10 @@ branch: '{stream}' gs-pathname: '' disabled: false + - euphrates: + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false jobs: - 'ovn4nfv-build-{stream}' diff --git a/jjb/parser/parser.yml b/jjb/parser/parser.yml index e9a4c9dc7..87544196a 100644 --- a/jjb/parser/parser.yml +++ b/jjb/parser/parser.yml @@ -16,7 +16,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/pharos/pharos.yml b/jjb/pharos/pharos.yml index 1009d6497..0c104c0c0 100644 --- a/jjb/pharos/pharos.yml +++ b/jjb/pharos/pharos.yml @@ -16,7 +16,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/promise/promise.yml b/jjb/promise/promise.yml index 3e328dc84..3f1d9e23b 100644 --- a/jjb/promise/promise.yml +++ b/jjb/promise/promise.yml @@ -16,7 +16,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/jjb/stor4nfv/stor4nfv-project.yml b/jjb/stor4nfv/stor4nfv-project.yml new file mode 100644 index 000000000..5885c4675 --- /dev/null +++ b/jjb/stor4nfv/stor4nfv-project.yml @@ -0,0 +1,64 @@ +--- +################################################### +# All the jobs except verify have been removed! +# They will only be enabled on request by projects! +################################################### +- project: + name: stor4nfv + + project: '{name}' + + jobs: + - 'stor4nfv-verify-{stream}' + + stream: + - master: + branch: '{stream}' + gs-pathname: '' + disabled: false + - danube: + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false + +- job-template: + name: 'stor4nfv-verify-{stream}' + + disabled: '{obj:disabled}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + 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}' + disable-strict-forbidden-file-verification: 'true' + forbidden-file-paths: + - compare-type: ANT + pattern: 'docs/**|.gitignore' + + builders: + - shell: | + echo "Nothing to verify!" diff --git a/jjb/xci/bifrost-verify-jobs.yml b/jjb/xci/bifrost-verify-jobs.yml index d6eb5ffdb..f9106831c 100644 --- a/jjb/xci/bifrost-verify-jobs.yml +++ b/jjb/xci/bifrost-verify-jobs.yml @@ -21,19 +21,19 @@ #-------------------------------- distro: - 'xenial': - disabled: false + disabled: true dib-os-release: 'xenial' dib-os-element: 'ubuntu-minimal' dib-os-packages: 'vlan,vim,less,bridge-utils,language-pack-en,iputils-ping,rsyslog,curl' extra-dib-elements: 'openssh-server' - 'centos7': - disabled: false + disabled: true dib-os-release: '7' dib-os-element: 'centos-minimal' dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl' extra-dib-elements: 'openssh-server' - 'suse': - disabled: false + disabled: true dib-os-release: '42.3' dib-os-element: 'opensuse-minimal' dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl' diff --git a/jjb/xci/xci-verify-jobs.yml b/jjb/xci/xci-verify-jobs.yml index f0a673bd8..324bfd14c 100644 --- a/jjb/xci/xci-verify-jobs.yml +++ b/jjb/xci/xci-verify-jobs.yml @@ -89,11 +89,11 @@ branch-pattern: '**/{branch}' disable-strict-forbidden-file-verification: 'true' file-paths: + - compare-type: ANT + pattern: 'bifrost/**' - compare-type: ANT pattern: 'xci/**' forbidden-file-paths: - - compare-type: ANT - pattern: 'bifrost/**' - compare-type: ANT pattern: 'prototypes/**' - compare-type: ANT @@ -111,6 +111,9 @@ - label: name: SLAVE_LABEL default: 'xci-virtual-{distro}' + - string: + name: CLEAN_DIB_IMAGES + default: 'true' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT @@ -128,6 +131,7 @@ predefined-parameters: | DISTRO={distro} DEPLOY_SCENARIO=os-nosdn-nofeature-noha + CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES node-parameters: true kill-phase-on: FAILURE abort-all-job: true @@ -140,6 +144,7 @@ predefined-parameters: | DISTRO={distro} DEPLOY_SCENARIO=os-nosdn-nofeature-noha + CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES FUNCTEST_SUITE_NAME=healthcheck node-parameters: true kill-phase-on: NEVER @@ -178,6 +183,9 @@ - string: name: XCI_FLAVOR default: 'mini' + - string: + name: CLEAN_DIB_IMAGES + default: 'true' - string: name: OPNFV_RELENG_DEV_PATH default: $WORKSPACE/ diff --git a/jjb/yardstick/yardstick-daily-jobs.yml b/jjb/yardstick/yardstick-daily-jobs.yml index 5d38a0b7d..4c54b735a 100644 --- a/jjb/yardstick/yardstick-daily-jobs.yml +++ b/jjb/yardstick/yardstick-daily-jobs.yml @@ -14,8 +14,8 @@ branch: '{stream}' gs-pathname: '' docker-tag: 'latest' - danube: &danube - stream: danube + euphrates: &euphrates + stream: euphrates branch: 'stable/{stream}' gs-pathname: '{stream}' docker-tag: 'stable' @@ -40,15 +40,15 @@ auto-trigger-name: 'daily-trigger-disabled' <<: *master - virtual: - slave-label: apex-virtual-danube + slave-label: apex-virtual-euphrates installer: apex auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - baremetal: - slave-label: apex-baremetal-danube + slave-label: apex-baremetal-euphrates installer: apex auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates # fuel CI PODs - baremetal: slave-label: fuel-baremetal @@ -64,12 +64,12 @@ slave-label: fuel-baremetal installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - virtual: slave-label: fuel-virtual installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates # armband CI PODs - armband-baremetal: slave-label: armband-baremetal @@ -85,12 +85,12 @@ slave-label: armband-baremetal installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - armband-virtual: slave-label: armband-virtual installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates # joid CI PODs - baremetal: slave-label: joid-baremetal @@ -106,12 +106,12 @@ slave-label: joid-baremetal installer: joid auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - virtual: slave-label: joid-virtual installer: joid auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates # compass CI PODs - baremetal: slave-label: compass-baremetal @@ -127,12 +127,12 @@ slave-label: compass-baremetal installer: compass auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - virtual: slave-label: compass-virtual installer: compass auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates #-------------------------------- # None-CI PODs #-------------------------------- @@ -150,7 +150,7 @@ slave-label: '{pod}' installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - zte-pod2: slave-label: '{pod}' installer: fuel @@ -165,7 +165,7 @@ slave-label: '{pod}' installer: fuel auto-trigger-name: 'daily-trigger-disabled' - <<: *danube + <<: *euphrates - orange-pod2: slave-label: '{pod}' installer: joid @@ -321,14 +321,14 @@ default: '-i 104.197.68.199:8086' description: 'Arguments to use in order to choose the backend DB' - parameter: - name: 'yardstick-params-apex-virtual-danube' + name: 'yardstick-params-apex-virtual-euphrates' parameters: - string: name: YARDSTICK_DB_BACKEND default: '-i 104.197.68.199:8086' description: 'Arguments to use in order to choose the backend DB' - parameter: - name: 'yardstick-params-apex-baremetal-danube' + name: 'yardstick-params-apex-baremetal-euphrates' parameters: - string: name: YARDSTICK_DB_BACKEND diff --git a/jjb/yardstick/yardstick-project-jobs.yml b/jjb/yardstick/yardstick-project-jobs.yml index 643c1f932..7738aeda5 100644 --- a/jjb/yardstick/yardstick-project-jobs.yml +++ b/jjb/yardstick/yardstick-project-jobs.yml @@ -16,7 +16,7 @@ branch: '{stream}' gs-pathname: '' disabled: false - - danube: + - euphrates: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false diff --git a/utils/test/testapi/3rd_party/static/testapi-ui/components/pods/pods.html b/utils/test/testapi/3rd_party/static/testapi-ui/components/pods/pods.html index e366670a9..22f29347b 100644 --- a/utils/test/testapi/3rd_party/static/testapi-ui/components/pods/pods.html +++ b/utils/test/testapi/3rd_party/static/testapi-ui/components/pods/pods.html @@ -54,6 +54,7 @@ {{pod.name}}

+ owner: {{pod.owner}}
role: {{pod.role}}
mode: {{pod.mode}}
create_date: {{pod.creation_date}}
diff --git a/utils/test/testapi/opnfv_testapi/common/check.py b/utils/test/testapi/opnfv_testapi/common/check.py index acd331784..e80b1c6b7 100644 --- a/utils/test/testapi/opnfv_testapi/common/check.py +++ b/utils/test/testapi/opnfv_testapi/common/check.py @@ -10,19 +10,33 @@ import functools import re from tornado import gen -from tornado import web +from opnfv_testapi.common import constants from opnfv_testapi.common import message from opnfv_testapi.common import raises from opnfv_testapi.db import api as dbapi -def authenticate(method): - @web.asynchronous - @gen.coroutine +def is_authorized(method): @functools.wraps(method) def wrapper(self, *args, **kwargs): - if self.auth: + if self.table in ['pods']: + testapi_id = self.get_secure_cookie(constants.TESTAPI_ID) + if not testapi_id: + raises.Unauthorized(message.not_login()) + user_info = yield dbapi.db_find_one('users', {'user': testapi_id}) + if not user_info: + raises.Unauthorized(message.not_lfid()) + kwargs['owner'] = testapi_id + ret = yield gen.coroutine(method)(self, *args, **kwargs) + raise gen.Return(ret) + return wrapper + + +def valid_token(method): + @functools.wraps(method) + def wrapper(self, *args, **kwargs): + if self.auth and self.table == 'results': try: token = self.request.headers['X-Auth-Token'] except KeyError: diff --git a/utils/test/testapi/opnfv_testapi/common/message.py b/utils/test/testapi/opnfv_testapi/common/message.py index 951cbaf9c..8b5c3fb7a 100644 --- a/utils/test/testapi/opnfv_testapi/common/message.py +++ b/utils/test/testapi/opnfv_testapi/common/message.py @@ -42,6 +42,14 @@ def invalid_token(): return 'Invalid Token' +def not_login(): + return 'TestAPI id is not provided' + + +def not_lfid(): + return 'Not a valid Linux Foundation Account' + + def no_update(): return 'Nothing to update' diff --git a/utils/test/testapi/opnfv_testapi/resources/handlers.py b/utils/test/testapi/opnfv_testapi/resources/handlers.py index ed55c7028..8e5dab235 100644 --- a/utils/test/testapi/opnfv_testapi/resources/handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/handlers.py @@ -73,7 +73,10 @@ class GenericApiHandler(web.RequestHandler): cls_data = self.table_cls.from_dict(data) return cls_data.format_http() - @check.authenticate + @web.asynchronous + @gen.coroutine + @check.is_authorized + @check.valid_token @check.no_body @check.miss_fields @check.carriers_exist @@ -172,13 +175,15 @@ class GenericApiHandler(web.RequestHandler): def _get_one(self, data, query=None): self.finish_request(self.format_data(data)) - @check.authenticate + @web.asynchronous + @gen.coroutine @check.not_exist def _delete(self, data, query=None): yield dbapi.db_delete(self.table, query) self.finish_request() - @check.authenticate + @web.asynchronous + @gen.coroutine @check.no_body @check.not_exist @check.updated_one_not_exist @@ -189,7 +194,8 @@ class GenericApiHandler(web.RequestHandler): update_req['_id'] = str(data._id) self.finish_request(update_req) - @check.authenticate + @web.asynchronous + @gen.coroutine @check.no_body @check.not_exist @check.updated_one_not_exist diff --git a/utils/test/testapi/opnfv_testapi/resources/pod_models.py b/utils/test/testapi/opnfv_testapi/resources/pod_models.py index 2c3ea978b..415d3d66b 100644 --- a/utils/test/testapi/opnfv_testapi/resources/pod_models.py +++ b/utils/test/testapi/opnfv_testapi/resources/pod_models.py @@ -29,13 +29,14 @@ class PodCreateRequest(models.ModelBase): class Pod(models.ModelBase): def __init__(self, name='', mode='', details='', - role="", _id='', create_date=''): + role="", _id='', create_date='', owner=''): self.name = name self.mode = mode self.details = details self.role = role self._id = _id self.creation_date = create_date + self.owner = owner @swagger.model() diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/common/test_config.py b/utils/test/testapi/opnfv_testapi/tests/unit/common/test_config.py index 8cfc513be..ea2297275 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/common/test_config.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/common/test_config.py @@ -1,4 +1,5 @@ import argparse +import pytest def test_config_normal(mocker, config_normal): @@ -13,3 +14,11 @@ def test_config_normal(mocker, config_normal): assert CONF.api_debug is True assert CONF.api_authenticate is False assert CONF.ui_url == 'http://localhost:8000' + + +def test_config_file_not_exist(mocker): + mocker.patch('os.path.exists', return_value=False) + with pytest.raises(Exception) as m_exc: + from opnfv_testapi.common import config + config.Config() + assert 'not found' in str(m_exc.value) diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/executor.py b/utils/test/testapi/opnfv_testapi/tests/unit/executor.py index b8f696caf..aa99b9086 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/executor.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/executor.py @@ -9,6 +9,39 @@ import functools import httplib +from concurrent.futures import ThreadPoolExecutor +import mock + + +O_get_secure_cookie = ( + 'opnfv_testapi.resources.handlers.GenericApiHandler.get_secure_cookie') + + +def thread_execute(method, *args, **kwargs): + with ThreadPoolExecutor(max_workers=2) as executor: + result = executor.submit(method, *args, **kwargs) + return result + + +def mock_invalid_lfid(): + def _mock_invalid_lfid(xstep): + def wrap(self, *args, **kwargs): + with mock.patch(O_get_secure_cookie) as m_cookie: + m_cookie.return_value = 'InvalidUser' + return xstep(self, *args, **kwargs) + return wrap + return _mock_invalid_lfid + + +def mock_valid_lfid(): + def _mock_valid_lfid(xstep): + def wrap(self, *args, **kwargs): + with mock.patch(O_get_secure_cookie) as m_cookie: + m_cookie.return_value = 'ValidUser' + return xstep(self, *args, **kwargs) + return wrap + return _mock_valid_lfid + def upload(excepted_status, excepted_response): def _upload(create_request): diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py b/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py index 3320a866a..c44a92c11 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py @@ -288,3 +288,4 @@ testcases = MemDb('testcases') results = MemDb('results') scenarios = MemDb('scenarios') tokens = MemDb('tokens') +users = MemDb('users') diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_base.py b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_base.py index 39633e5f5..89cd7e8ed 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_base.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_base.py @@ -6,13 +6,16 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from datetime import datetime import json from os import path +from bson.objectid import ObjectId import mock from tornado import testing from opnfv_testapi.resources import models +from opnfv_testapi.resources import pod_models from opnfv_testapi.tests.unit import fake_pymongo @@ -26,10 +29,32 @@ class TestBase(testing.AsyncHTTPTestCase): self.get_res = None self.list_res = None self.update_res = None + self.pod_d = pod_models.Pod(name='zte-pod1', + mode='virtual', + details='zte pod 1', + role='community-ci', + _id=str(ObjectId()), + owner='ValidUser', + create_date=str(datetime.now())) + self.pod_e = pod_models.Pod(name='zte-pod2', + mode='metal', + details='zte pod 2', + role='production-ci', + _id=str(ObjectId()), + owner='ValidUser', + create_date=str(datetime.now())) self.req_d = None self.req_e = None self.addCleanup(self._clear) super(TestBase, self).setUp() + fake_pymongo.users.insert({"user": "ValidUser", + 'email': 'validuser@lf.com', + 'fullname': 'Valid User', + 'groups': [ + 'opnfv-testapi-users', + 'opnfv-gerrit-functest-submitters', + 'opnfv-gerrit-qtip-contributors'] + }) def tearDown(self): self.db_patcher.stop() diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_pod.py b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_pod.py index d1a19f7f0..5d9da3a86 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_pod.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_pod.py @@ -12,24 +12,29 @@ import unittest from opnfv_testapi.common import message from opnfv_testapi.resources import pod_models from opnfv_testapi.tests.unit import executor +from opnfv_testapi.tests.unit import fake_pymongo from opnfv_testapi.tests.unit.resources import test_base as base class TestPodBase(base.TestBase): def setUp(self): super(TestPodBase, self).setUp() - self.req_d = pod_models.PodCreateRequest('zte-1', 'virtual', - 'zte pod 1', 'ci-pod') - self.req_e = pod_models.PodCreateRequest('zte-2', 'metal', 'zte pod 2') - self.req_f = pod_models.PodCreateRequest('Zte-1', 'virtual', - 'zte pod 1', 'ci-pod') self.get_res = pod_models.Pod self.list_res = pod_models.Pods self.basePath = '/api/v1/pods' + self.req_d = pod_models.PodCreateRequest(name=self.pod_d.name, + mode=self.pod_d.mode, + details=self.pod_d.details, + role=self.pod_d.role) + self.req_e = pod_models.PodCreateRequest(name=self.pod_e.name, + mode=self.pod_e.mode, + details=self.pod_e.details, + role=self.pod_e.role) def assert_get_body(self, pod, req=None): if not req: req = self.req_d + self.assertEqual(pod.owner, 'ValidUser') self.assertEqual(pod.name, req.name) self.assertEqual(pod.mode, req.mode) self.assertEqual(pod.details, req.details) @@ -39,38 +44,54 @@ class TestPodBase(base.TestBase): class TestPodCreate(TestPodBase): + @executor.create(httplib.BAD_REQUEST, message.not_login()) + def test_notlogin(self): + return self.req_d + + @executor.mock_invalid_lfid() + @executor.create(httplib.BAD_REQUEST, message.not_lfid()) + def test_invalidLfid(self): + return self.req_d + + @executor.mock_valid_lfid() @executor.create(httplib.BAD_REQUEST, message.no_body()) def test_withoutBody(self): return None + @executor.mock_valid_lfid() @executor.create(httplib.BAD_REQUEST, message.missing('name')) def test_emptyName(self): return pod_models.PodCreateRequest('') + @executor.mock_valid_lfid() @executor.create(httplib.BAD_REQUEST, message.missing('name')) def test_noneName(self): return pod_models.PodCreateRequest(None) + @executor.mock_valid_lfid() @executor.create(httplib.OK, 'assert_create_body') def test_success(self): return self.req_d + @executor.mock_valid_lfid() @executor.create(httplib.FORBIDDEN, message.exist_base) def test_alreadyExist(self): - self.create_d() + fake_pymongo.pods.insert(self.pod_d.format()) return self.req_d + @executor.mock_valid_lfid() @executor.create(httplib.FORBIDDEN, message.exist_base) def test_alreadyExistCaseInsensitive(self): - self.create(self.req_f) + fake_pymongo.pods.insert(self.pod_d.format()) + self.req_d.name = self.req_d.name.upper() return self.req_d class TestPodGet(TestPodBase): def setUp(self): super(TestPodGet, self).setUp() - self.create_d() - self.create_e() + fake_pymongo.pods.insert(self.pod_d.format()) + fake_pymongo.pods.insert(self.pod_e.format()) @executor.get(httplib.NOT_FOUND, message.not_found_base) def test_notExist(self): @@ -78,7 +99,7 @@ class TestPodGet(TestPodBase): @executor.get(httplib.OK, 'assert_get_body') def test_getOne(self): - return self.req_d.name + return self.pod_d.name @executor.get(httplib.OK, '_assert_list') def test_list(self): @@ -87,10 +108,10 @@ class TestPodGet(TestPodBase): def _assert_list(self, body): self.assertEqual(len(body.pods), 2) for pod in body.pods: - if self.req_d.name == pod.name: + if self.pod_d.name == pod.name: self.assert_get_body(pod) else: - self.assert_get_body(pod, self.req_e) + self.assert_get_body(pod, self.pod_e) if __name__ == '__main__': diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py index 1e83ed308..f5026c957 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py @@ -7,17 +7,18 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## import copy +from datetime import datetime +from datetime import timedelta import httplib -import unittest -from datetime import datetime, timedelta import json +import unittest from opnfv_testapi.common import message -from opnfv_testapi.resources import pod_models from opnfv_testapi.resources import project_models from opnfv_testapi.resources import result_models from opnfv_testapi.resources import testcase_models from opnfv_testapi.tests.unit import executor +from opnfv_testapi.tests.unit import fake_pymongo from opnfv_testapi.tests.unit.resources import test_base as base @@ -52,7 +53,8 @@ class Details(object): class TestResultBase(base.TestBase): def setUp(self): - self.pod = 'zte-pod1' + super(TestResultBase, self).setUp() + self.pod = self.pod_d.name self.project = 'functest' self.case = 'vPing' self.installer = 'fuel' @@ -65,7 +67,6 @@ class TestResultBase(base.TestBase): self.stop_date = str(datetime.now() + timedelta(minutes=1)) self.update_date = str(datetime.now() + timedelta(days=1)) self.update_step = -0.05 - super(TestResultBase, self).setUp() self.details = Details(timestart='0', duration='9s', status='OK') self.req_d = result_models.ResultCreateRequest( pod_name=self.pod, @@ -84,10 +85,6 @@ class TestResultBase(base.TestBase): self.list_res = result_models.TestResults self.update_res = result_models.TestResult self.basePath = '/api/v1/results' - self.req_pod = pod_models.PodCreateRequest( - self.pod, - 'metal', - 'zte pod 1') self.req_project = project_models.ProjectCreateRequest( self.project, 'vping test') @@ -95,7 +92,7 @@ class TestResultBase(base.TestBase): self.case, '/cases/vping', 'vping-ssh test') - self.create_help('/api/v1/pods', self.req_pod) + fake_pymongo.pods.insert(self.pod_d.format()) self.create_help('/api/v1/projects', self.req_project) self.create_help('/api/v1/projects/%s/cases', self.req_testcase, diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_token.py b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_token.py index 940e256c6..bd64723be 100644 --- a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_token.py +++ b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_token.py @@ -9,13 +9,12 @@ import unittest from tornado import web from opnfv_testapi.common import message -from opnfv_testapi.resources import project_models from opnfv_testapi.tests.unit import executor from opnfv_testapi.tests.unit import fake_pymongo -from opnfv_testapi.tests.unit.resources import test_base as base +from opnfv_testapi.tests.unit.resources import test_result -class TestToken(base.TestBase): +class TestTokenCreateResult(test_result.TestResultBase): def get_app(self): from opnfv_testapi.router import url_mappings return web.Application( @@ -25,27 +24,23 @@ class TestToken(base.TestBase): auth=True ) - -class TestTokenCreateProject(TestToken): def setUp(self): - super(TestTokenCreateProject, self).setUp() - self.req_d = project_models.ProjectCreateRequest('vping') + super(TestTokenCreateResult, self).setUp() fake_pymongo.tokens.insert({"access_token": "12345"}) - self.basePath = '/api/v1/projects' @executor.create(httplib.FORBIDDEN, message.invalid_token()) - def test_projectCreateTokenInvalid(self): + def test_resultCreateTokenInvalid(self): self.headers['X-Auth-Token'] = '1234' return self.req_d @executor.create(httplib.UNAUTHORIZED, message.unauthorized()) - def test_projectCreateTokenUnauthorized(self): + def test_resultCreateTokenUnauthorized(self): if 'X-Auth-Token' in self.headers: self.headers.pop('X-Auth-Token') return self.req_d @executor.create(httplib.OK, '_create_success') - def test_projectCreateTokenSuccess(self): + def test_resultCreateTokenSuccess(self): self.headers['X-Auth-Token'] = '12345' return self.req_d @@ -53,62 +48,5 @@ class TestTokenCreateProject(TestToken): self.assertIn('CreateResponse', str(type(body))) -class TestTokenDeleteProject(TestToken): - def setUp(self): - super(TestTokenDeleteProject, self).setUp() - self.req_d = project_models.ProjectCreateRequest('vping') - fake_pymongo.tokens.insert({"access_token": "12345"}) - self.basePath = '/api/v1/projects' - self.headers['X-Auth-Token'] = '12345' - self.create_d() - - @executor.delete(httplib.FORBIDDEN, message.invalid_token()) - def test_projectDeleteTokenIvalid(self): - self.headers['X-Auth-Token'] = '1234' - return self.req_d.name - - @executor.delete(httplib.UNAUTHORIZED, message.unauthorized()) - def test_projectDeleteTokenUnauthorized(self): - self.headers.pop('X-Auth-Token') - return self.req_d.name - - @executor.delete(httplib.OK, '_delete_success') - def test_projectDeleteTokenSuccess(self): - return self.req_d.name - - def _delete_success(self, body): - self.assertEqual('', body) - - -class TestTokenUpdateProject(TestToken): - def setUp(self): - super(TestTokenUpdateProject, self).setUp() - self.req_d = project_models.ProjectCreateRequest('vping') - fake_pymongo.tokens.insert({"access_token": "12345"}) - self.basePath = '/api/v1/projects' - self.headers['X-Auth-Token'] = '12345' - self.create_d() - - @executor.update(httplib.FORBIDDEN, message.invalid_token()) - def test_projectUpdateTokenIvalid(self): - self.headers['X-Auth-Token'] = '1234' - req = project_models.ProjectUpdateRequest('newName', 'new description') - return req, self.req_d.name - - @executor.update(httplib.UNAUTHORIZED, message.unauthorized()) - def test_projectUpdateTokenUnauthorized(self): - self.headers.pop('X-Auth-Token') - req = project_models.ProjectUpdateRequest('newName', 'new description') - return req, self.req_d.name - - @executor.update(httplib.OK, '_update_success') - def test_projectUpdateTokenSuccess(self): - req = project_models.ProjectUpdateRequest('newName', 'new description') - return req, self.req_d.name - - def _update_success(self, request, body): - self.assertIn(request.name, body) - - if __name__ == '__main__': unittest.main()