summaryrefslogtreecommitdiffstats
path: root/docs/testing/testing-dev.rst
blob: 29178145547bc5bb3c28caff23e691982b3f6533 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.. _testing-dev:

.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

========================
Testing Developer Guides
========================

Testing group
-------------
.. toctree::
   :maxdepth: 1

   ./developer/devguide/index

Bottlenecks
------------
.. toctree::
   :maxdepth: 1

   ../submodules/bottlenecks/docs/testing/developer/devguide/index


Dovetail / OPNFV Verified Program
---------------------------------
.. toctree::
   :maxdepth: 1

   ../submodules/dovetail/docs/testing/developer/testcaserequirements/index

Functest
---------
.. toctree::
   :maxdepth: 1

   ../submodules/functest/docs/testing/developer/devguide/index


StorPerf
--------
.. toctree::
   :maxdepth: 1

   ../submodules/storperf/docs/testing/developer/devguide/index


VSPERF
-------
.. toctree::
   :maxdepth: 1

   ../submodules/vswitchperf/docs/testing/developer/devguide/index


Yardstick
---------
.. toctree::
   :maxdepth: 1

   ../submodules/yardstick/docs/testing/developer/devguide/index
69 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
# this is the job configuration for bgs
- project:

    name: compass

    installer: 'compass'

    jobs:
        - 'compass-verify'
        - 'compass-upload-iso'
        - 'compass-merge'
        - 'compass-daily-{stream}'
        - 'compass-build'
        - 'compass-deploy-virtual-{flavor}'

    # stream:    branch with - in place of / (eg. stable-helium)
    # branch:    branch (eg. stable/helium)
    stream:
        - master:
            branch: 'master'

    flavor:
        - five:
            conf: 'five'
            node: 'huawei-build'
        - cluster:
            conf: 'cluster'
            node: 'huawei-build'



    project: 'compass4nfv'

########################
# job templates
########################
- job-template:
    name: 'compass-upload-iso'
    project-type: freestyle
    disabled: false

    node: master

    logrotate:
        daysToKeep: 30
        numToKeep: 10
        artifactDaysToKeep: -1
        artifactNumToKeep: -1

    parameters:
        - project-parameter:
            project: '{project}'
        - compass-parameter:
             installer: '{installer}'

    wrappers:
        - ssh-agent-credentials:
            user: '{ssh-credentials}'

    builders:
        - 'compass-copy-artifact'
        - 'compass-upload-artifact'

- job-template:
    name: 'compass-verify'

    project-type: freestyle

    disabled: false

    node: huawei-build

    logrotate:
        daysToKeep: 30
        numToKeep: 10
        artifactDaysToKeep: -1
        artifactNumToKeep: -1

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: 'master'
        - compass-parameter:
            installer: '{installer}'

    scm:
        - gerrit-trigger-scm:
            credentials-id: '{ssh-credentials}'
            refspec: '$GERRIT_REFSPEC'
            choosing-strategy: 'gerrit'

    wrappers:
        - ssh-agent-credentials:
            user: '{ssh-credentials}'

    triggers:
        - gerrit:
            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: '**/master'

    builders:
        - 'compass-build'
        #- 'compass-workspace-cleanup'

- job-template:
    name: 'compass-merge'

    # builder-merge job to run JJB update
    #
    # This job's purpose is to update all the JJB

    project-type: freestyle

    node: huawei-build

    logrotate:
        daysToKeep: 30
        numToKeep: 40
        artifactDaysToKeep: -1
        artifactNumToKeep: 5

    parameters:
        - project-parameter:
            project: '{project}'
        - gerrit-parameter:
            branch: 'master'
        - compass-parameter:
            installer: '{installer}'
    scm:
        - gerrit-trigger-scm:
            credentials-id: '{ssh-credentials}'
            refspec: ''
            choosing-strategy: 'default'

    wrappers:
        - ssh-agent-credentials:
            user: '{ssh-credentials}'

    triggers:
        - gerrit:
            trigger-on:
                - change-merged-event
                - comment-added-contains-event:
                    comment-contains-value: 'remerge'
            projects:
              - project-compare-type: 'ANT'
                project-pattern: '{project}'
                branches:
                    - branch-compare-type: 'ANT'
                      branch-pattern: '**/master'
    builders:
        - 'compass-merge'

- job-template:
    name: 'compass-daily-{stream}'

    project-type: freestyle

    node: huawei-build

    parameters:
        - project-parameter:
            project: '{project}'
        - compass-parameter:
            installer: '{installer}'

    scm:
        - git-scm:
            credentials-id: '{ssh-credentials}'
            refspec: ''
            branch: '{branch}'

    triggers:
        - pollscm: '@midnight'

    logrotate:
        daysToKeep: 30
        numToKeep: 10
        artifactDaysToKeep: -1
        artifactNumToKeep: -1

    builders:
        #- 'compass-build'
        #- 'compass-upload-artifact'
        #- 'compass-workspace-cleanup'
        - shell: |
            echo "Hello world!"
            echo "compass-deploy-virtual job will be triggered!"

    publishers:
        - trigger:
            project: 'compass-deploy-virtual-five'
            threshold: SUCCESS
        - trigger:
            project: 'compass-deploy-virtual-cluster'
            threshold: SUCCESS

- job-template:
    name: 'compass-build'

    project-type: freestyle

    node: huawei-build

    logrotate:
        daysToKeep: 30
        numToKeep: 10
        artifactDaysToKeep: -1
        artifactNumToKeep: -1

    parameters:
        - project-parameter:
            project: '{project}'
        - compass-parameter:
            installer: '{installer}'

    scm:
        - git-scm:
            credentials-id: '{ssh-credentials}'
            refspec: ''
            branch: 'master'

    builders:
        - 'compass-build'
        - 'compass-workspace-cleanup'

    publishers:
        - archive:
            artifacts: '$BUILD_DIRECTORY/*.*'
            allow-empty: 'true'
            fingerprint: true
        - trigger:
            project: 'compass-upload-iso'
            threshold: SUCCESS

- job-template:
    name: 'compass-deploy-virtual-{flavor}'

    project-type: freestyle

    disabled: false

    node: '{node}'

    parameters:
        - project-parameter:
            project: '{project}'
        - compass-parameter:
            installer: '{installer}'
        - string:
            name: FLAVOR_CONF
            default: '{conf}'
            description: ""

    triggers:
        - pollscm: "H/2 * * * *"

    logrotate:
        daysToKeep: 30
        numToKeep: 10
        artifactDaysToKeep: -1
        artifactNumToKeep: -1

    builders:
        - 'compass-ci-preclean-workspace'
        - 'compass-deploy-virtual-flavor'

########################
# parameter macros
########################
- parameter:
    name: compass-parameter
    parameters:
        - string:
            name: INSTALLER
            default: '{installer}'
            description: "Installer to use."
        - string:
            name: BUILD_DIRECTORY
            default: build_output
            description: "Directory where the build artifact will be located upon the completion of the build."
        - string:
            name: CACHE_DIRECTORY
            default: $HOME/opnfv/cache/$INSTALLER
            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_URL
            default: artifacts.opnfv.org/$PROJECT/$INSTALLER
            description: "URL to Google Storage."
        - string:
            name: INTERNAL_REPO
            default: "root@192.168.127.11:~/xh/work/build/work"
            description: "Artifact Repository"
########################
# builder macros
########################
- builder:
    name: compass-copy-artifact
    builders:
        - copyartifact:
            project: "compass-build"
            filter: "$BUILD_DIRECTORY/compass.iso, $BUILD_DIRECTORY/opnfv.properties"
            target: ./
            which-build: upstream-build
            optional: true
            flatten: true
            parameter-filters: PUBLISH=true


- builder:
    name: compass-merge
    builders:
        - shell: |
            #!/bin/bash
            echo "Hello World!"


- builder:
    name: 'compass-build'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # log info to console
            echo "Starting the build of $INSTALLER. This could take some time..."
            echo "--------------------------------------------------------"
            echo

            # create the cache directory if it doesn't exist
            [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY

            # set OPNFV_ARTIFACT_VERSION
            export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")

            # start the build
            cd $WORKSPACE/ci
            ./build.sh
            mkdir $WORKSPACE/$BUILD_DIRECTORY
            mv $WORKSPACE/ci/work/compass.iso $WORKSPACE/$BUILD_DIRECTORY/

            # list the build artifacts
            ls -al $WORKSPACE/$BUILD_DIRECTORY

            # save information regarding artifact into file
            (
                echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
                echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
                echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
                echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
                echo "OPNFV_ARTIFACT_MD5SUM=$(md5sum $WORKSPACE/$BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)"
                echo "OPNFV_BUILD_URL=$BUILD_URL"
            ) > $WORKSPACE/$BUILD_DIRECTORY/opnfv.properties

            echo
            echo "--------------------------------------------------------"
            echo "Done!"

- builder:
    name: 'compass-deploy'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # log info to console
            echo "Hello world!"

- builder:
    name: 'compass-deploy-virtual-flavor'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # log info to console
            echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..."
            echo "--------------------------------------------------------"
            echo

            cd $WORKSPACE
            ./ci/deploy.sh $FLAVOR_CONF
            # ssh -o BatchMode=yes -o TCPKeepAlive=yes cideploy@10.118.34.205 ./cideploy.sh

            echo
            echo "--------------------------------------------------------"
            echo "Done!"

- builder:
    name: 'compass-upload-artifact'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # log info to console
            echo "Uploading the $INSTALLER artifact. This could take some time..."
            echo "--------------------------------------------------------"
            echo

            # source the opnfv.properties to get ARTIFACT_VERSION
            source $WORKSPACE/opnfv.properties

            scp $WORKSPACE/compass.iso $INTERNAL_REPO/
            scp $WORKSPACE/opnfv.properties $INTERNAL_REPO/
            scp $WORKSPACE/compass.iso $INTERNAL_REPO/opnfv-$OPNFV_ARTIFACT_VERSION.iso

            # upload artifact and additional files to google storage
            gsutil cp $WORKSPACE/compass.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1

            echo
            echo "--------------------------------------------------------"
            echo "Done!"
            echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"

- builder:
    name: 'compass-download-artifact'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # log info to console
            echo "Downloading the $INSTALLER artifact. This could take some time..."
            echo "--------------------------------------------------------"
            echo

            # get the latest.properties file in order to get info regarding latest artifact
            curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties

            # check if we got the file
            [[ -f latest.properties ]] || exit 1

            # source the file so we get OPNFV vars
            source latest.properties

            # download the file
            curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1

            # list the file
            ls -al $WORKSPACE/opnfv.iso

            echo
            echo "--------------------------------------------------------"
            echo "Done!"

- builder:
    name: 'compass-workspace-cleanup'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            # delete everything that is in $WORKSPACE
            /bin/rm -rf $WORKSPACE

- builder:
    name: 'compass-ci-preclean-workspace'
    builders:
        - shell: |
            #!/bin/bash
            set -o errexit
            set -o nounset
            set -o pipefail

            cd $WORKSPACE/..
            sudo rm $WORKSPACE -rf
            git clone $GIT_BASE  $WORKSPACE