Merge "[compass] undo colorado CI build since we have release colorado3.0"
authormei mei <meimei@huawei.com>
Tue, 13 Dec 2016 01:29:27 +0000 (01:29 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 13 Dec 2016 01:29:27 +0000 (01:29 +0000)
13 files changed:
jjb/3rd_party_ci/download-netvirt-artifact.sh [new file with mode: 0755]
jjb/3rd_party_ci/functest-netvirt.sh [new file with mode: 0755]
jjb/3rd_party_ci/install-netvirt.sh [new file with mode: 0755]
jjb/3rd_party_ci/odl-netvirt.yml [new file with mode: 0644]
jjb/3rd_party_ci/postprocess-netvirt.sh [new file with mode: 0755]
jjb/apex/apex-build.sh
jjb/apex/apex-upload-artifact.sh
jjb/apex/apex.yml
jjb/armband/armband-ci-jobs.yml
jjb/doctor/doctor.yml
jjb/functest/functest-ci-jobs.yml
jjb/global/slave-params.yml
utils/test/testapi/opnfv_testapi/resources/testcase_models.py

diff --git a/jjb/3rd_party_ci/download-netvirt-artifact.sh b/jjb/3rd_party_ci/download-netvirt-artifact.sh
new file mode 100755 (executable)
index 0000000..d0b9a05
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+echo "Attempting to fetch the artifact location from ODL Jenkins"
+CHANGE_DETAILS_URL="https://git.opendaylight.org/gerrit/changes/netvirt~master~$GERRIT_CHANGE_ID/detail"
+# due to limitation with the Jenkins Gerrit Trigger, we need to use Gerrit REST API to get the change details
+ODL_JOB_URL=$(curl -s $CHANGE_DETAILS_URL | grep netvirt-patch-test-current-carbon | tail -1 | \
+    sed 's/\\n//g' | awk '{print $6}')
+NETVIRT_ARTIFACT_URL="${ODL_JOB_URL}org.opendaylight.integration\$distribution-karaf/artifact/org.opendaylight.integration/distribution-karaf/0.6.0-SNAPSHOT/distribution-karaf-0.6.0-SNAPSHOT.tar.gz"
+echo -e "URL to artifact is\n\t$NETVIRT_ARTIFACT_URL"
+echo "Downloading the artifact. This could take time..."
+curl -s -o $NETVIRT_ARTIFACT $NETVIRT_ARTIFACT_URL
+echo "Download complete"
+ls -al $NETVIRT_ARTIFACT
diff --git a/jjb/3rd_party_ci/functest-netvirt.sh b/jjb/3rd_party_ci/functest-netvirt.sh
new file mode 100755 (executable)
index 0000000..abc7975
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+echo "Hello World"
+ls -al $WORKSPACE
diff --git a/jjb/3rd_party_ci/install-netvirt.sh b/jjb/3rd_party_ci/install-netvirt.sh
new file mode 100755 (executable)
index 0000000..c24e890
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+echo "Using the downloaded artifact to install netvirt"
+ls -al $NETVIRT_ARTIFACT
diff --git a/jjb/3rd_party_ci/odl-netvirt.yml b/jjb/3rd_party_ci/odl-netvirt.yml
new file mode 100644 (file)
index 0000000..d44fc36
--- /dev/null
@@ -0,0 +1,214 @@
+- project:
+    name: 'netvirt'
+
+    project: 'netvirt'
+
+    installer: 'apex'
+#####################################
+# branch definitions
+#####################################
+    stream:
+        - master:
+            branch: '{stream}'
+            gs-pathname: ''
+            disabled: false
+#####################################
+# patch verification phases
+#####################################
+    phase:
+        - 'install'
+        - 'functest'
+        - 'postprocess'
+#####################################
+# jobs
+#####################################
+    jobs:
+        - 'odl-netvirt-verify-virtual-{stream}'
+        - 'odl-netvirt-verify-virtual-{phase}-{stream}'
+#####################################
+# job templates
+#####################################
+- job-template:
+    name: 'odl-netvirt-verify-virtual-{stream}'
+
+    project-type: multijob
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 5
+            max-per-node: 1
+            option: 'project'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - string:
+            name: NETVIRT_ARTIFACT
+            default: $WORKSPACE/distribution-karaf.tar.gz"
+        - 'odl-netvirt-virtual-defaults'
+
+    scm:
+        #- git:
+        #    url: 'https://git.opendaylight.org/gerrit/p/$PROJECT.git'
+        #    refspec: '$GERRIT_REFSPEC'
+        #    branches:
+        #        - 'origin/$GERRIT_BRANCH'
+        #    skip-tag: true
+        #    choosing-strategy: 'gerrit'
+        #    timeout: 10
+        #    wipe-workspace: true
+        - gerrit-trigger-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: '$GERRIT_REFSPEC'
+            choosing-strategy: 'gerrit'
+
+    triggers:
+        - gerrit:
+            server-name: 'git.opendaylight.org'
+            trigger-on:
+                - comment-added-contains-event:
+                    comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : SUCCESS'
+                - comment-added-contains-event:
+                    comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : UNSTABLE'
+            projects:
+              - project-compare-type: 'ANT'
+                project-pattern: '{project}'
+                branches:
+                  - branch-compare-type: 'ANT'
+                    branch-pattern: '**/{branch}'
+            readable-message: true
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - shell: |
+            #!/bin/bash
+            ls -al $WORKSPACE
+        - multijob:
+            name: install
+            condition: SUCCESSFUL
+            projects:
+                - name: 'odl-netvirt-verify-virtual-install-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
+                    GERRIT_PATCHSET_NUMBER=$GERRIT_PATCHSET_NUMBER
+                    GERRIT_PATCHSET_REVISION=$GERRIT_PATCHSET_REVISION
+                    NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
+                  node-parameters: true
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: functest
+            condition: SUCCESSFUL
+            projects:
+                - name: 'odl-netvirt-verify-virtual-functest-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
+                    GERRIT_PATCHSET_NUMBER=$GERRIT_PATCHSET_NUMBER
+                    GERRIT_PATCHSET_REVISION=$GERRIT_PATCHSET_REVISION
+                    NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
+                  node-parameters: true
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: postprocess
+            condition: SUCCESSFUL
+            projects:
+                - name: 'odl-netvirt-verify-virtual-postprocess-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    GERRIT_REFSPEC=$GERRIT_REFSPEC
+                    GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                    GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
+                    GERRIT_PATCHSET_NUMBER=$GERRIT_PATCHSET_NUMBER
+                    GERRIT_PATCHSET_REVISION=$GERRIT_PATCHSET_REVISION
+                    NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
+                  node-parameters: true
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+
+- job-template:
+    name: 'odl-netvirt-verify-virtual-{phase}-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 5
+            max-per-node: 1
+            option: 'project'
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'odl-netvirt-verify-virtual-install-.*'
+                - 'odl-netvirt-verify-virtual-functest-.*'
+                - 'odl-netvirt-verify-virtual-postprocess-.*'
+            block-level: 'NODE'
+
+    scm:
+        - gerrit-trigger-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: '$GERRIT_REFSPEC'
+            choosing-strategy: 'gerrit'
+
+    wrappers:
+        - ssh-agent-credentials:
+            users:
+                - '{ssh-credentials}'
+        - timeout:
+            timeout: 360
+            fail: true
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - 'odl-netvirt-virtual-defaults'
+        - '{installer}-defaults'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - '{project}-verify-{phase}-builder'
+#####################################
+# builder macros
+#####################################
+- builder:
+    name: 'netvirt-verify-install-builder'
+    builders:
+        - shell:
+            !include-raw: ./download-netvirt-artifact.sh
+        - shell:
+            !include-raw: ./install-netvirt.sh
+
+- builder:
+    name: 'netvirt-verify-functest-builder'
+    builders:
+        - shell:
+            !include-raw: ./functest-netvirt.sh
+
+- builder:
+    name: 'netvirt-verify-postprocess-builder'
+    builders:
+        - shell:
+            !include-raw: ./postprocess-netvirt.sh
diff --git a/jjb/3rd_party_ci/postprocess-netvirt.sh b/jjb/3rd_party_ci/postprocess-netvirt.sh
new file mode 100755 (executable)
index 0000000..abc7975
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+echo "Hello World"
+ls -al $WORKSPACE
index e3e3f61..ee1dfb5 100755 (executable)
@@ -23,7 +23,7 @@ fi
 # start the build
 cd $WORKSPACE/ci
 ./build.sh $BUILD_ARGS
-RPM_VERSION=$(grep Version: $BUILD_DIRECTORY/rpm_specs/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-')
+RPM_VERSION=$(grep Version: $WORKSPACE/build/rpm_specs/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-')
 # list the contents of BUILD_OUTPUT directory
 echo "Build Directory is ${BUILD_DIRECTORY}"
 echo "Build Directory Contents:"
index f54e4c5..64f13f4 100755 (executable)
@@ -11,6 +11,8 @@ echo
 # source the opnfv.properties to get ARTIFACT_VERSION
 source $WORKSPACE/opnfv.properties
 
+BUILD_DIRECTORY=${WORKSPACE}/.build
+
 # clone releng repository
 echo "Cloning releng repository..."
 [ -d releng ] && rm -rf releng
index b3de969..d8784c6 100644 (file)
         - trigger-builds:
           - project: 'apex-deploy-virtual-os-nosdn-nofeature-noha-{stream}'
             predefined-parameters: |
-              BUILD_DIRECTORY=apex-build-{stream}/build
+              BUILD_DIRECTORY=apex-build-{stream}/.build
               OPNFV_CLEAN=yes
             git-revision: false
             same-node: true
index b1cd9bf..77718e1 100644 (file)
                 build-step-failure-threshold: 'never'
                 failure-threshold: 'never'
                 unstable-threshold: 'FAILURE'
+        # 1.dovetail only master by now, not sync with A/B/C branches
+        # 2.here the stream means the SUT stream, dovetail stream is defined in its own job
+        # 3.only debug testsuite here(includes 3 basic testcase,
+        #   i.e. one tempest smoke ipv6, two vping from functest)
+        # 4.not used for release criteria or compliance,
+        #   only to debug the dovetail tool bugs with arm pods
+        - trigger-builds:
+            - project: 'dovetail-{installer}-{pod}-debug-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              block: true
+              same-node: true
+              block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
 
 - job-template:
     name: '{installer}-deploy-{pod}-daily-{stream}'
index 8a0d015..f9ee3de 100644 (file)
     builders:
         - 'functest-suite-builder'
         - shell: |
-            cp $HOME/opnfv/functest/results/{stream}/{project}.log $WORKSPACE/tests/
+            functest_log="$HOME/opnfv/functest/results/{stream}/{project}.log"
+            to_be_archived="$WORKSPACE/tests/functest-{project}.log"
+            cp $functest_log $to_be_archived
+            # 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
 
     publishers:
         - archive:
index 915828c..cd70179 100644 (file)
             description: 'Tag to pull docker image'
         - string:
             name: CLEAN_DOCKER_IMAGES
-            default: 'true'
+            default: 'false'
             description: 'Remove downloaded docker images (opnfv/functest:*)'
         - functest-parameter:
             gs-pathname: '{gs-pathname}'
index dd0c979..d1b4b8f 100644 (file)
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+    name: 'odl-netvirt-virtual-defaults'
+    parameters:
+        - label:
+            name: SLAVE_LABEL
+            default: 'odl-netvirt-virtual'
+        - string:
+            name: GIT_BASE
+            default: https://git.opendaylight.org/gerrit/p/$PROJECT.git
+            description: 'Git URL to use on this Jenkins Slave'
 #####################################################
 # These slaves are just dummy slaves for sandbox jobs
 #####################################################
index e1f2fb6..0ed705f 100644 (file)
@@ -11,10 +11,23 @@ from opnfv_testapi.tornado_swagger import swagger
 
 @swagger.model()
 class TestcaseCreateRequest(object):
-    def __init__(self, name, url=None, description=None):
+    def __init__(self, name, url=None, description=None,
+                 tier=None, ci_loop=None, criteria=None,
+                 blocking=None, dependencies=None, run=None,
+                 domains=None, tags=None, version=None):
         self.name = name
         self.url = url
         self.description = description
+        self.tier = tier
+        self.ci_loop = ci_loop
+        self.criteria = criteria
+        self.blocking = blocking
+        self.dependencies = dependencies
+        self.run = run
+        self.domains = domains
+        self.tags = tags
+        self.version = version
+        self.trust = "Silver"
 
     def format(self):
         return {
@@ -26,29 +39,66 @@ class TestcaseCreateRequest(object):
 
 @swagger.model()
 class TestcaseUpdateRequest(object):
-    def __init__(self, name=None, description=None, project_name=None):
+    def __init__(self, name=None, description=None, project_name=None,
+                 tier=None, ci_loop=None, criteria=None,
+                 blocking=None, dependencies=None, run=None,
+                 domains=None, tags=None, version=None, trust=None):
         self.name = name
         self.description = description
         self.project_name = project_name
+        self.tier = tier
+        self.ci_loop = ci_loop
+        self.criteria = criteria
+        self.blocking = blocking
+        self.dependencies = dependencies
+        self.run = run
+        self.domains = domains
+        self.tags = tags
+        self.version = version
+        self.trust = trust
 
     def format(self):
         return {
             "name": self.name,
             "description": self.description,
             "project_name": self.project_name,
+            "tier": self.tier,
+            "ci_loop": self.ci_loop,
+            "criteria": self.criteria,
+            "blocking": self.blocking,
+            "dependencies": self.dependencies,
+            "run": self.run,
+            "domains": self.domains,
+            "tags": self.tags,
+            "version": self.version,
+            "trust": self.trust
         }
 
 
 @swagger.model()
 class Testcase(object):
     def __init__(self, _id=None, name=None, project_name=None,
-                 description=None, url=None, creation_date=None):
+                 description=None, url=None, creation_date=None,
+                 tier=None, ci_loop=None, criteria=None,
+                 blocking=None, dependencies=None, run=None,
+                 domains=None, tags=None, version=None,
+                 trust=None):
         self._id = None
         self.name = None
         self.project_name = None
         self.description = None
         self.url = None
         self.creation_date = None
+        self.tier=None
+        self.ci_loop=None
+        self.criteria=None
+        self.blocking=None
+        self.dependencies=None
+        self.run=None
+        self.domains=None
+        self.tags=None
+        self.version=None
+        self.trust=None
 
     @staticmethod
     def from_dict(a_dict):
@@ -63,6 +113,16 @@ class Testcase(object):
         t.name = a_dict.get('name')
         t.description = a_dict.get('description')
         t.url = a_dict.get('url')
+        t.tier = a_dict.get('tier')
+        t.ci_loop = a_dict.get('ci_loop')
+        t.criteria = a_dict.get('criteria')
+        t.blocking = a_dict.get('blocking')
+        t.dependencies = a_dict.get('dependencies')
+        t.run = a_dict.get('run')
+        t.domains = a_dict.get('domains')
+        t.tags = a_dict.get('tags')
+        t.version = a_dict.get('version')
+        t.trust = a_dict.get('trust')
 
         return t
 
@@ -72,7 +132,17 @@ class Testcase(object):
             "description": self.description,
             "project_name": self.project_name,
             "creation_date": str(self.creation_date),
-            "url": self.url
+            "url": self.url,
+            "tier": self.tier,
+            "ci_loop": self.ci_loop,
+            "criteria": self.criteria,
+            "blocking": self.blocking,
+            "dependencies": self.dependencies,
+            "run": self.run,
+            "domains": self.domains,
+            "tags": self.tags,
+            "version": self.version,
+            "trust": self.trust
         }
 
     def format_http(self):
@@ -83,6 +153,16 @@ class Testcase(object):
             "description": self.description,
             "creation_date": str(self.creation_date),
             "url": self.url,
+            "tier": self.tier,
+            "ci_loop": self.ci_loop,
+            "criteria": self.criteria,
+            "blocking": self.blocking,
+            "dependencies": self.dependencies,
+            "run": self.run,
+            "domains": self.domains,
+            "tags": self.tags,
+            "version": self.version,
+            "trust": self.trust
         }