diff options
Diffstat (limited to 'jjb')
25 files changed, 860 insertions, 132 deletions
diff --git a/jjb/armband/armband-ci-jobs.yml b/jjb/armband/armband-ci-jobs.yml index da3992ea8..339c3cc5b 100644 --- a/jjb/armband/armband-ci-jobs.yml +++ b/jjb/armband/armband-ci-jobs.yml @@ -62,6 +62,8 @@ auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger' - 'os-odl-nofeature-ha': auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger' + - 'os-nosdn-ovs-ha': + auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger' # NOHA scenarios - 'os-nosdn-nofeature-noha': @@ -159,20 +161,60 @@ failure-threshold: 'never' unstable-threshold: 'FAILURE' # 1.here the stream means the SUT stream, dovetail stream is defined in its own job - # 2.only debug testsuite here(refstack, ha, vping, ipv6, tempest, bgpvpn) - # 3.not used for release criteria or compliance, + # 2.testsuite proposed_tests here is for new test cases planning to add into OVP + # 3.run proposed_tests on Monday, Wednesday and Friday against ha scenario + # 4.testsuite default here is for the test cases already added into OVP + # 5.run default testsuite on Tuesday against ha scenario + # 6.not used for release criteria or compliance, # only to debug the dovetail tool bugs with arm pods - - trigger-builds: - - project: 'dovetail-{installer}-{pod}-proposed_tests-{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' + - conditional-step: + condition-kind: and + condition-operands: + - condition-kind: regex-match + regex: '-ha$' + label: '{scenario}' + - condition-kind: day-of-week + day-selector: select-days + days: + MON: true + WED: true + FRI: true + use-build-time: true + steps: + - trigger-builds: + - project: 'dovetail-{installer}-{pod}-proposed_tests-{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' + - conditional-step: + condition-kind: and + condition-operands: + - condition-kind: regex-match + regex: '-ha$' + label: '{scenario}' + - condition-kind: day-of-week + day-selector: select-days + days: + TUES: true + use-build-time: true + steps: + - trigger-builds: + - project: 'dovetail-{installer}-{pod}-default-{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' # Armband uses Fuel's log collection project job, no need to duplicate - conditional-step: condition-kind: not @@ -250,7 +292,7 @@ - trigger: name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger' triggers: - - timed: '0 1 * * 2,4,6' + - timed: '0 1 * * 4,6' - trigger: name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-master-trigger' triggers: @@ -258,7 +300,11 @@ - trigger: name: 'fuel-os-odl-nofeature-ha-armband-baremetal-master-trigger' triggers: - - timed: '0 1 * * 1,3,5,7' + - timed: '0 1 * * 2,5,7' +- trigger: + name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-master-trigger' + triggers: + - timed: '0 1 * * 1,3' # --------------------------------------------------------------------- # Enea Armband CI Baremetal Triggers running against euphrates branch # --------------------------------------------------------------------- @@ -274,6 +320,11 @@ name: 'fuel-os-odl-nofeature-ha-armband-baremetal-euphrates-trigger' triggers: - timed: '' +- trigger: + name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-euphrates-trigger' + triggers: + - timed: '' + # -------------------------------------------------------------- # Enea Armband CI Virtual Triggers running against master branch # -------------------------------------------------------------- @@ -289,6 +340,10 @@ name: 'fuel-os-odl-nofeature-ha-armband-virtual-master-trigger' triggers: - timed: '' +- trigger: + name: 'fuel-os-nosdn-ovs-ha-armband-virtual-master-trigger' + triggers: + - timed: '' # ------------------------------------------------------------------- # Enea Armband CI Virtual Triggers running against euphrates branch # ------------------------------------------------------------------- @@ -304,3 +359,7 @@ name: 'fuel-os-odl-nofeature-ha-armband-virtual-euphrates-trigger' triggers: - timed: '' +- trigger: + name: 'fuel-os-nosdn-ovs-ha-armband-virtual-euphrates-trigger' + triggers: + - timed: '' diff --git a/jjb/compass4nfv/compass-ci-jobs.yml b/jjb/compass4nfv/compass-ci-jobs.yml index 7ce9e3a60..357f24e37 100644 --- a/jjb/compass4nfv/compass-ci-jobs.yml +++ b/jjb/compass4nfv/compass-ci-jobs.yml @@ -123,6 +123,9 @@ - 'os-nosdn-bar-ha': disabled: false auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger' + - 'os-nosdn-bar-noha': + disabled: false + auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger' - 'k8-nosdn-stor4nfv-ha': disabled: false auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger' @@ -539,6 +542,10 @@ triggers: - timed: '' - trigger: + name: 'compass-os-nosdn-bar-noha-baremetal-centos-master-trigger' + triggers: + - timed: '' # '0 19 * * *' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-baremetal-centos-master-trigger' triggers: - timed: '' @@ -632,6 +639,10 @@ triggers: - timed: '' - trigger: + name: 'compass-os-nosdn-bar-noha-huawei-pod7-danube-trigger' + triggers: + - timed: '' # '0 19 * * *' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-huawei-pod7-danube-trigger' triggers: - timed: '' @@ -724,6 +735,10 @@ triggers: - timed: '' - trigger: + name: 'compass-os-nosdn-bar-noha-baremetal-master-trigger' + triggers: + - timed: '' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-baremetal-master-trigger' triggers: - timed: '' @@ -816,6 +831,10 @@ triggers: - timed: '' - trigger: + name: 'compass-os-nosdn-bar-noha-baremetal-euphrates-trigger' + triggers: + - timed: '' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-baremetal-euphrates-trigger' triggers: - timed: '' @@ -908,6 +927,10 @@ triggers: - timed: '0 11 2-30/2 * *' - trigger: + name: 'compass-os-nosdn-bar-noha-virtual-master-trigger' + triggers: + - timed: '0 22 1-29/2 * *' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-virtual-master-trigger' triggers: - timed: '0 10 2-30/2 * *' @@ -1000,6 +1023,10 @@ triggers: - timed: '0 12 2-30/2 * *' - trigger: + name: 'compass-os-nosdn-bar-noha-virtual-euphrates-trigger' + triggers: + - timed: '0 12 1-29/2 * *' +- trigger: name: 'compass-k8-nosdn-stor4nfv-noha-virtual-euphrates-trigger' triggers: - timed: '' # '0 12 2-30/2 * *' diff --git a/jjb/container4nfv/arm64/compass-deploy.sh b/jjb/container4nfv/arm64/compass-deploy.sh index bbbf3f449..a22af09ba 100755 --- a/jjb/container4nfv/arm64/compass-deploy.sh +++ b/jjb/container4nfv/arm64/compass-deploy.sh @@ -5,9 +5,14 @@ cd compass4nfv export ADAPTER_OS_PATTERN='(?i)CentOS-7.*arm.*' export OS_VERSION="centos7" -export KUBERNETES_VERSION="v1.7.3" -export DHA="deploy/conf/vm_environment/k8-nosdn-nofeature-noha.yml" -export NETWORK="deploy/conf/vm_environment/network.yml" -export VIRT_NUMBER=2 VIRT_CPUS=4 VIRT_MEM=8192 VIRT_DISK=50G +export KUBERNETES_VERSION="v1.7.5" +if [[ "$NODE_NAME" =~ "-virtual" ]]; then + export DHA="deploy/conf/vm_environment/k8-nosdn-nofeature-noha.yml" + export NETWORK="deploy/conf/vm_environment/network.yml" + export VIRT_NUMBER=2 VIRT_CPUS=4 VIRT_MEM=8192 VIRT_DISK=50G +else + export DHA="deploy/conf/hardware_environment/huawei-pod8/k8-nosdn-nofeature-noha.yml" + export NETWORK="deploy/conf/hardware_environment/huawei-pod8/network.yml" +fi ./deploy.sh diff --git a/jjb/container4nfv/container4nfv-arm64.yml b/jjb/container4nfv/container4nfv-arm64.yml index b69c21400..324624387 100644 --- a/jjb/container4nfv/container4nfv-arm64.yml +++ b/jjb/container4nfv/container4nfv-arm64.yml @@ -9,15 +9,20 @@ disabled: false - 'k8-sriov-nofeature-noha': disabled: false + pod: + - virtual: + slave-label: arm-packet01 + - baremetal: + slave-label: compass-baremetal-arm jobs: - - 'container4nfv-{scenario}-virtual-daily-master' + - 'container4nfv-{scenario}-{pod}-daily-master' - job-template: - name: 'container4nfv-{scenario}-virtual-daily-master' + name: 'container4nfv-{scenario}-{pod}-daily-master' disabled: '{obj:disabled}' concurrent: false - node: arm-packet01 + node: '{slave-label}' scm: - git: @@ -28,7 +33,7 @@ wipe-workspace: true triggers: - - 'trigger-{scenario}-virtual' + - 'trigger-{scenario}-{pod}' wrappers: - timeout: @@ -46,6 +51,7 @@ same-node: true block: false + - trigger: name: 'trigger-k8-multus-nofeature-noha-virtual' triggers: @@ -54,3 +60,12 @@ name: 'trigger-k8-sriov-nofeature-noha-virtual' triggers: - timed: '0 16 * * *' + +- trigger: + name: 'trigger-k8-multus-nofeature-noha-baremetal' + triggers: + - timed: '0 16 * * *' +- trigger: + name: 'trigger-k8-sriov-nofeature-noha-baremetal' + triggers: + - timed: '0 20 * * *' diff --git a/jjb/fuel/fuel-daily-jobs.yml b/jjb/fuel/fuel-daily-jobs.yml index bbc8a8493..a214a56b8 100644 --- a/jjb/fuel/fuel-daily-jobs.yml +++ b/jjb/fuel/fuel-daily-jobs.yml @@ -198,20 +198,59 @@ failure-threshold: 'never' unstable-threshold: 'FAILURE' # 1.here the stream means the SUT stream, dovetail stream is defined in its own job - # 2.only debug testsuite here(refstack, ha, vping, ipv6, tempest, bgpvpn) - # 3.not used for release criteria or compliance, only to debug the dovetail tool bugs - # 4.ZTE pod1, os-nosdn-nofeature-ha and os-odl-bgpvpn-ha, run against danube - - trigger-builds: - - project: 'dovetail-fuel-{pod}-proposed_tests-{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' + # 2.testsuite proposed_tests here is for new test cases planning to add into OVP + # 3.run proposed_tests on Monday, Wednesday and Friday against ha scenario + # 4.testsuite default here is for the test cases already added into OVP + # 5.run default testsuite on Tuesday against ha scenario + # 6.not used for release criteria or compliance, only to debug the dovetail tool bugs + - conditional-step: + condition-kind: and + condition-operands: + - condition-kind: regex-match + regex: '-ha$' + label: '{scenario}' + - condition-kind: day-of-week + day-selector: select-days + days: + MON: true + WED: true + FRI: true + use-build-time: true + steps: + - trigger-builds: + - project: 'dovetail-fuel-{pod}-proposed_tests-{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' + - conditional-step: + condition-kind: and + condition-operands: + - condition-kind: regex-match + regex: '-ha$' + label: '{scenario}' + - condition-kind: day-of-week + day-selector: select-days + days: + TUES: true + use-build-time: true + steps: + - trigger-builds: + - project: 'dovetail-fuel-{pod}-default-{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' - conditional-step: condition-kind: not condition-operand: diff --git a/jjb/functest/functest-k8.sh b/jjb/functest/functest-k8.sh index 888aded81..3f08e4a0b 100755 --- a/jjb/functest/functest-k8.sh +++ b/jjb/functest/functest-k8.sh @@ -18,6 +18,9 @@ if [[ ${INSTALLER_TYPE} == 'compass' ]]; then echo "export KUBE_MASTER_URL=$KUBE_MASTER_URL" >> $rc_file KUBE_MASTER_IP=$(echo $KUBE_MASTER_URL|awk -F'https://|:[0-9]+' '$0=$2') echo "export KUBE_MASTER_IP=$KUBE_MASTER_IP" >> $rc_file +elif [[ ${INSTALLER_TYPE} == 'joid' && ${BRANCH} == 'master' ]]; then + admin_conf_file_vol="-v ${HOME}/joid_config/config:/root/joid_config/config" + rc_file=${HOME}/joid_config/k8config else echo "Not supported by other installers yet" exit 1 @@ -44,9 +47,10 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} \ DOCKER_TAG=`[[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/}` FUNCTEST_IMAGE=opnfv/functest-kubernetes:${DOCKER_TAG} +echo "Pulling Docker image ${FUNCTEST_IMAGE} ..." docker pull ${FUNCTEST_IMAGE}>/dev/null cmd_opt="run_tests -r -t all" -cmd="docker run --rm --privileged=true ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" +cmd="docker run --rm --privileged=true ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" echo "Running Functest k8s test cases, CMD: ${cmd}" eval ${cmd} ret_value=$? diff --git a/jjb/functest/functest-kubernetes-project-jobs.yml b/jjb/functest/functest-kubernetes-project-jobs.yml new file mode 100644 index 000000000..3eba5d177 --- /dev/null +++ b/jjb/functest/functest-kubernetes-project-jobs.yml @@ -0,0 +1,257 @@ +--- +################################################### +# All the jobs except verify have been removed! +# They will only be enabled on request by projects! +################################################### +- project: + name: functest-kubernetes-project-jobs + + project: 'functest-kubernetes' + + jobs: + - 'functest-kubernetes-verify-{stream}' + - 'functest-kubernetes-verify-{phase}-{stream}' + - 'functest-kubernetes-docs-upload-{stream}' + + stream: + - master: + branch: '{stream}' + gs-pathname: '' + disabled: false + - euphrates: + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false + + phase: + - 'unit-tests-and-docs': + slave-label: 'opnfv-build-ubuntu' + - 'build-x86_64': + slave-label: 'opnfv-build-ubuntu' + - 'build-aarch64': + slave-label: 'opnfv-build-ubuntu-arm' + +- job-template: + name: 'functest-kubernetes-verify-{stream}' + + disabled: '{obj:disabled}' + + project-type: 'multijob' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + triggers: + - 'functest-kubernetes-verify-triggers-macro': + project: '{project}' + branch: '{branch}' + + builders: + - shell: | + #!/bin/bash + # we do nothing here as the main stuff will be done + # in phase jobs + echo "Triggering phase jobs!" + - multijob: + name: 'functest-kubernetes-build-and-unittest' + execution-type: PARALLEL + projects: + - name: 'functest-kubernetes-verify-unit-tests-and-docs-{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 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + - name: 'functest-kubernetes-verify-build-x86_64-{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 + ARCH=x86_64 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + - name: 'functest-kubernetes-verify-build-aarch64-{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 + ARCH=aarch64 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + +- job-template: + name: 'functest-kubernetes-verify-{phase}-{stream}' + + disabled: '{obj:disabled}' + + wrappers: + - ssh-agent-wrapper + - build-timeout: + timeout: 30 + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{slave-label}-defaults' + + scm: + - git-scm-gerrit + + builders: + - 'functest-kubernetes-verify-{phase}-builders-macro' + + publishers: + - 'functest-kubernetes-verify-{phase}-publishers-macro' + +- job-template: + name: 'functest-kubernetes-docs-upload-{stream}' + + disabled: '{obj:disabled}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm + + triggers: + - 'functest-kubernetes-docs-upload-triggers-macro': + project: '{project}' + branch: '{branch}' + + builders: + - functest-kubernetes-upload-doc-artifact + +################################ +# job triggers +################################ +- trigger: + name: 'functest-kubernetes-verify-triggers-macro' + 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' + +- trigger: + name: 'functest-kubernetes-docs-upload-triggers-macro' + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + 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: '**/{branch}' + disable-strict-forbidden-file-verification: 'true' + forbidden-file-paths: + - compare-type: ANT + pattern: 'docs/**|.gitignore' +################################ +# job builders +################################ + +- builder: + name: 'functest-kubernetes-verify-unit-tests-and-docs-builders-macro' + builders: + - shell: | + cd $WORKSPACE && tox + +- builder: + name: 'functest-kubernetes-verify-build-x86_64-builders-macro' + builders: + - shell: | + echo "Not activated!" + +- builder: + name: 'functest-kubernetes-verify-build-aarch64-builders-macro' + builders: + - shell: | + echo "Not activated!" + +- builder: + name: 'functest-kubernetes-upload-doc-artifact' + builders: + - shell: | + cd $WORKSPACE && tox -edocs + wget -O - https://git.opnfv.org/releng/plain/utils/upload-artifact.sh | bash -s "api/_build" "docs" +################################ +# job publishers +################################ +- publisher: + name: 'functest-kubernetes-verify-unit-tests-and-docs-publishers-macro' + publishers: + - junit: + results: nosetests.xml + - cobertura: + report-file: "coverage.xml" + only-stable: "true" + health-auto-update: "true" + stability-auto-update: "true" + zoom-coverage-chart: "true" + targets: + - files: + healthy: 10 + unhealthy: 20 + failing: 30 + - method: + healthy: 50 + unhealthy: 40 + failing: 30 + - email-jenkins-admins-on-failure + +- publisher: + name: 'functest-kubernetes-verify-build-x86_64-publishers-macro' + publishers: + - email-jenkins-admins-on-failure + +- publisher: + name: 'functest-kubernetes-verify-build-aarch64-publishers-macro' + publishers: + - email-jenkins-admins-on-failure diff --git a/jjb/functest/xtesting-project-jobs.yml b/jjb/functest/xtesting-project-jobs.yml new file mode 100644 index 000000000..bf08775b6 --- /dev/null +++ b/jjb/functest/xtesting-project-jobs.yml @@ -0,0 +1,257 @@ +--- +################################################### +# All the jobs except verify have been removed! +# They will only be enabled on request by projects! +################################################### +- project: + name: xtesting-project-jobs + + project: 'functest-xtesting' + + jobs: + - 'xtesting-verify-{stream}' + - 'xtesting-verify-{phase}-{stream}' + - 'xtesting-docs-upload-{stream}' + + stream: + - master: + branch: '{stream}' + gs-pathname: '' + disabled: false + - euphrates: + branch: 'stable/{stream}' + gs-pathname: '/{stream}' + disabled: false + + phase: + - 'unit-tests-and-docs': + slave-label: 'opnfv-build-ubuntu' + - 'build-x86_64': + slave-label: 'opnfv-build-ubuntu' + - 'build-aarch64': + slave-label: 'opnfv-build-ubuntu-arm' + +- job-template: + name: 'xtesting-verify-{stream}' + + disabled: '{obj:disabled}' + + project-type: 'multijob' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + triggers: + - 'xtesting-verify-triggers-macro': + project: '{project}' + branch: '{branch}' + + builders: + - shell: | + #!/bin/bash + # we do nothing here as the main stuff will be done + # in phase jobs + echo "Triggering phase jobs!" + - multijob: + name: 'xtesting-build-and-unittest' + execution-type: PARALLEL + projects: + - name: 'xtesting-verify-unit-tests-and-docs-{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 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + - name: 'xtesting-verify-build-x86_64-{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 + ARCH=x86_64 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + - name: 'xtesting-verify-build-aarch64-{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 + ARCH=aarch64 + git-revision: true + node-parameters: false + kill-phase-on: FAILURE + abort-all-job: false + +- job-template: + name: 'xtesting-verify-{phase}-{stream}' + + disabled: '{obj:disabled}' + + wrappers: + - ssh-agent-wrapper + - build-timeout: + timeout: 30 + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - '{slave-label}-defaults' + + scm: + - git-scm-gerrit + + builders: + - 'xtesting-verify-{phase}-builders-macro' + + publishers: + - 'xtesting-verify-{phase}-publishers-macro' + +- job-template: + name: 'xtesting-docs-upload-{stream}' + + disabled: '{obj:disabled}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm + + triggers: + - 'xtesting-docs-upload-triggers-macro': + project: '{project}' + branch: '{branch}' + + builders: + - xtesting-upload-doc-artifact + +################################ +# job triggers +################################ +- trigger: + name: 'xtesting-verify-triggers-macro' + 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' + +- trigger: + name: 'xtesting-docs-upload-triggers-macro' + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + 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: '**/{branch}' + disable-strict-forbidden-file-verification: 'true' + forbidden-file-paths: + - compare-type: ANT + pattern: 'docs/**|.gitignore' +################################ +# job builders +################################ + +- builder: + name: 'xtesting-verify-unit-tests-and-docs-builders-macro' + builders: + - shell: | + cd $WORKSPACE && tox + +- builder: + name: 'xtesting-verify-build-x86_64-builders-macro' + builders: + - shell: | + echo "Not activated!" + +- builder: + name: 'xtesting-verify-build-aarch64-builders-macro' + builders: + - shell: | + echo "Not activated!" + +- builder: + name: 'xtesting-upload-doc-artifact' + builders: + - shell: | + cd $WORKSPACE && tox -edocs + wget -O - https://git.opnfv.org/releng/plain/utils/upload-artifact.sh | bash -s "api/_build" "docs" +################################ +# job publishers +################################ +- publisher: + name: 'xtesting-verify-unit-tests-and-docs-publishers-macro' + publishers: + - junit: + results: nosetests.xml + - cobertura: + report-file: "coverage.xml" + only-stable: "true" + health-auto-update: "true" + stability-auto-update: "true" + zoom-coverage-chart: "true" + targets: + - files: + healthy: 10 + unhealthy: 20 + failing: 30 + - method: + healthy: 50 + unhealthy: 40 + failing: 30 + - email-jenkins-admins-on-failure + +- publisher: + name: 'xtesting-verify-build-x86_64-publishers-macro' + publishers: + - email-jenkins-admins-on-failure + +- publisher: + name: 'xtesting-verify-build-aarch64-publishers-macro' + publishers: + - email-jenkins-admins-on-failure diff --git a/jjb/global/installer-report.sh b/jjb/global/installer-report.sh index e2fcfd6f6..c9c730594 100755 --- a/jjb/global/installer-report.sh +++ b/jjb/global/installer-report.sh @@ -8,18 +8,29 @@ ############################################################################## source $WORKSPACE/installer_track.sh -echo """ - INSTALLER: $INSTALLER - INSTALLER_VERSION: $INSTALLER_VERSION - JOB_NAME: $JOB_NAME - BUILD_ID: $BUILD_ID - SENARIO: $DEPLOY_SCENARIO - UPSTREAM_JOB_NAME: $UPSTREAM_JOB_NAME: - UPSTREAM_BUILD_ID: $UPSTREAM_BUILD_ID - PROVISION_RESULT: $PROVISION_RESULT - TIMESTAMP_START: $TIMESTAMP_START - TIMESTAMP_END: `date '+%Y-%m-%d %H:%M:%S.%3N'` - POD_NAME: $NODE_NAME -""" -# TODO call TestAPI to report installer provisoin result when API is ready +gen_content() +{ + cat <<EOF +{ + "installer": "$INSTALLER", + "version": "$INSTALLER_VERSION", + "pod_name": "$POD_NAME", + "job_name": "$JOB_NAME", + "build_id": "$BUILD_ID", + "scenario": "$SCENARIO", + "upstream_job_name": "$UPSTREAM_JOB_NAME", + "upstream_build_id":"$UPSTREAM_BUILD_ID", + "criteria": "$PROVISION_RESULT", + "start_date": "$TIMESTAMP_START", + "stop_date": "$TIMESTAMP_END", + "details":"" +} +EOF +} + +echo "Installer: $INSTALLER provision result: $PROVISION_RESULT" +echo $(gen_content) + +set -o xtrace +curl -H "Content-Type: application/json" -X POST -v -d "$(gen_content)" $TESTAPI_URL/deployresults diff --git a/jjb/global/releng-macros.yml b/jjb/global/releng-macros.yml index 3433cee5f..91f2848e1 100644 --- a/jjb/global/releng-macros.yml +++ b/jjb/global/releng-macros.yml @@ -39,6 +39,10 @@ name: GERRIT_REFSPEC default: 'refs/heads/{branch}' description: "Default refspec needed for manually triggering." + - string: + name: TESTAPI_URL + default: 'http://testresults.opnfv.org/test/api/v1' + description: "Default TestAPI URL, currently using v1" - property: name: logrotate-default @@ -960,7 +964,7 @@ script-only-if-succeeded: true builders: - shell: | - echo "export PROVISION_RESULT=SUCCEED" >> $WORKSPACE/installer_track.sh + echo "export PROVISION_RESULT=PASS" >> $WORKSPACE/installer_track.sh echo "export INSTALLER={installer}" >> $WORKSPACE/installer_track.sh - shell: !include-raw-escape: installer-report.sh diff --git a/jjb/pharos/check-jinja2.yml b/jjb/pharos/check-jinja2.yml index 7251d3f61..3ef2f04e5 100644 --- a/jjb/pharos/check-jinja2.yml +++ b/jjb/pharos/check-jinja2.yml @@ -68,11 +68,11 @@ - compare-type: ANT pattern: '**/*.yaml' - compare-type: ANT - pattern: 'config/installers/**/*.j2' + pattern: 'config/utils/*.py' - compare-type: ANT - pattern: 'check-jinja2.sh' + pattern: 'config/installers/**/*.j2' - compare-type: ANT - pattern: 'check-schema.sh' + pattern: 'check-*.sh' skip-vote: successful: false failed: false diff --git a/jjb/qtip/qtip-validate-jobs.yml b/jjb/qtip/qtip-validate-jobs.yml index 3a487faf7..5c0bb881b 100644 --- a/jjb/qtip/qtip-validate-jobs.yml +++ b/jjb/qtip/qtip-validate-jobs.yml @@ -27,14 +27,17 @@ - compute: installer: apex pod: zte-virtual5 + sut: node <<: *master - storage: installer: apex pod: zte-virtual5 + sut: '' <<: *master - compute: installer: fuel pod: zte-virtual6 + sut: vnf <<: *master # ------------------------------- @@ -76,6 +79,10 @@ - string: name: OPNFV_RELEASE default: '{stream}' + - string: + name: SUT + description: "System Under Test" + default: '{sut}' scm: - git-scm diff --git a/jjb/releng/opnfv-docker.sh b/jjb/releng/opnfv-docker.sh index 28e5b7ce1..5c8cafbe3 100644 --- a/jjb/releng/opnfv-docker.sh +++ b/jjb/releng/opnfv-docker.sh @@ -111,7 +111,7 @@ fi echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG" echo "--------------------------------------------------------" echo -cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH +cmd="docker build --pull=true --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH $ARCH_BUILD_ARG -f $DOCKERFILE $DOCKER_PATH" diff --git a/jjb/releng/opnfv-docker.yml b/jjb/releng/opnfv-docker.yml index 317efc807..93b9a9c51 100644 --- a/jjb/releng/opnfv-docker.yml +++ b/jjb/releng/opnfv-docker.yml @@ -171,6 +171,10 @@ project: 'yardstick' <<: *euphrates <<: *other-receivers + - 'xtesting': + project: 'functest-xtesting' + <<: *master + <<: *other-receivers # projects with jobs for danube - 'dovetail': project: 'dovetail' diff --git a/jjb/releng/automate.yml b/jjb/releng/testresults-automate.yml index 6bd952a1d..01fbe0c6d 100644 --- a/jjb/releng/automate.yml +++ b/jjb/releng/testresults-automate.yml @@ -1,6 +1,6 @@ --- - project: - name: utils-automate + name: testresults-automate stream: - master: branch: '{stream}' @@ -17,7 +17,6 @@ jobs: - '{module}-automate-{stream}' - '{module}-automate-{phase}-{stream}' - - '{module}-verify-{stream}' project: 'releng-testresults' @@ -53,53 +52,6 @@ send-to-individuals: true - job-template: - name: '{module}-verify-{stream}' - - 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}' - file-paths: - - compare-type: 'ANT' - pattern: '{module}/**' - - builders: - - shell: | - cd {module}/ - tox - if [ -e *.xml ];then - cp *.xml $WORKSPACE - fi - - publishers: - - publish-coverage - - email-jenkins-admins-on-failure - -- job-template: name: '{module}-automate-{stream}' project-type: multijob @@ -135,21 +87,10 @@ fail: true triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - 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: '**/{branch}' - file-paths: - - compare-type: 'ANT' - pattern: '{module}/**' + - gerrit-trigger-change-merged: + project: '**' + branch: '{branch}' + files: '{module}/**' builders: - description-setter: diff --git a/jjb/releng/testresults-verify.yml b/jjb/releng/testresults-verify.yml new file mode 100644 index 000000000..958833c0f --- /dev/null +++ b/jjb/releng/testresults-verify.yml @@ -0,0 +1,78 @@ +--- +- project: + name: testresults-verify + stream: + - master: + branch: '{stream}' + + module: + - 'testapi' + - 'reporting' + + jobs: + - '{module}-verify-{stream}' + - '{module}-client-verify-{stream}' + + project: 'releng-testresults' + +- job-template: + name: '{module}-verify-{stream}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + triggers: + - gerrit-trigger-patchset-created: + server: 'gerrit.opnfv.org' + project: '**' + branch: '{branch}' + files: '{module}/**' + + builders: + - shell: | + cd {module}/ + tox + if [ -e *.xml ];then + cp *.xml $WORKSPACE + fi + + publishers: + - publish-coverage + - email-jenkins-admins-on-failure + +- job-template: + name: '{module}-client-verify-{stream}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + triggers: + - gerrit-trigger-patchset-created: + server: 'gerrit.opnfv.org' + project: '**' + branch: '{branch}' + files: '{module}/{module}-client/**' + + builders: + - shell: | + cd {module}/{module}-client + tox + if [ -e *.xml ];then + cp *.xml $WORKSPACE + fi + + publishers: + - publish-coverage + - email-jenkins-admins-on-failure diff --git a/jjb/xci/bifrost-verify.sh b/jjb/xci/bifrost-verify.sh index d3a37ce8a..9219d0020 100755 --- a/jjb/xci/bifrost-verify.sh +++ b/jjb/xci/bifrost-verify.sh @@ -46,6 +46,6 @@ export XCI_UPDATE_CLEAN_VM_OS=true ./xci/scripts/vm/start-new-vm.sh $VM_DISTRO -rsync -a -e "ssh -F $HOME/.ssh/xci-vm-config" $WORKSPACE/ ${VM_DISTRO}_xci_vm:~/bifrost +rsync -a -e "ssh -F $HOME/.ssh/${VM_DISTRO}-xci-vm-config" $WORKSPACE/ ${VM_DISTRO}_xci_vm:~/bifrost -ssh -F $HOME/.ssh/xci-vm-config ${VM_DISTRO}_xci_vm "cd ~/bifrost/releng-xci && ./bifrost_test.sh" +ssh -F $HOME/.ssh/${VM_DISTRO}-xci-vm-config ${VM_DISTRO}_xci_vm "cd ~/bifrost/releng-xci && ./bifrost_test.sh" diff --git a/jjb/xci/osa-periodic-jobs.yml b/jjb/xci/osa-periodic-jobs.yml index 64daa696b..6c2d165a4 100644 --- a/jjb/xci/osa-periodic-jobs.yml +++ b/jjb/xci/osa-periodic-jobs.yml @@ -216,6 +216,7 @@ export FUNCTEST_MODE=$FUNCTEST_MODE export FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME export XCI_FLAVOR=$XCI_FLAVOR + export CORE_OPENSTACK_INSTALL=true export CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES export OPNFV_RELENG_DEV_PATH=/home/devuser/releng-xci/ export INSTALLER_TYPE=$INSTALLER_TYPE @@ -234,7 +235,7 @@ - shell: | #!/bin/bash - ssh -F $HOME/.ssh/xci-vm-config ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh" + ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh" - builder: @@ -247,8 +248,8 @@ - shell: | #!/bin/bash - sudo virsh destroy ${DISTRO}_xci_vm - sudo virsh undefine ${DISTRO}_xci_vm + sudo virsh destroy ${DISTRO}_xci_vm || true + sudo virsh undefine ${DISTRO}_xci_vm || true # this will be enabled once the xci is prepared # - builder: diff --git a/jjb/xci/xci-cleanup.sh b/jjb/xci/xci-cleanup.sh index 45b4ec273..ce84830aa 100755 --- a/jjb/xci/xci-cleanup.sh +++ b/jjb/xci/xci-cleanup.sh @@ -20,5 +20,5 @@ if [[ "$GERRIT_TOPIC" =~ 'skip-verify' ]]; then exit 0 fi -sudo virsh destroy ${DISTRO}_xci_vm -sudo virsh undefine ${DISTRO}_xci_vm +sudo virsh destroy ${DISTRO}_xci_vm || true +sudo virsh undefine ${DISTRO}_xci_vm || true diff --git a/jjb/xci/xci-run-functest.sh b/jjb/xci/xci-run-functest.sh index 39d4ea190..9bcc469c7 100755 --- a/jjb/xci/xci-run-functest.sh +++ b/jjb/xci/xci-run-functest.sh @@ -39,4 +39,10 @@ if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENT exit 0 fi -ssh -F $HOME/.ssh/xci-vm-config ${DISTRO}_xci_vm "cd releng-xci/xci && PATH=/home/devuser/.local/bin:$PATH ansible-playbook -i installer/osa/files/$XCI_FLAVOR/inventory playbooks/run-functest.yml" +ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "cd releng-xci/xci && PATH=/home/devuser/.local/bin:$PATH ansible-playbook -i installer/osa/files/$XCI_FLAVOR/inventory playbooks/prepare-functest.yml" +echo "Running functest" +ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "/root/run-functest.sh" +echo "Functest log" +echo "---------------------------------------------------------------------------------" +ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "cat /root/results/functest.log" +echo "---------------------------------------------------------------------------------" diff --git a/jjb/xci/xci-set-scenario.sh b/jjb/xci/xci-set-scenario.sh index 59205e291..764857ba4 100755 --- a/jjb/xci/xci-set-scenario.sh +++ b/jjb/xci/xci-set-scenario.sh @@ -58,7 +58,7 @@ fi git clone https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $WORK_DIRECTORY/$GERRIT_PROJECT cd $WORK_DIRECTORY/$GERRIT_PROJECT git fetch https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout FETCH_HEAD -DEPLOY_SCENARIO=$(git diff HEAD^..HEAD --name-only | grep scenarios | sed -r 's/scenarios\/(.*?)\/.*/\1/' | uniq) +DEPLOY_SCENARIO=$(git diff HEAD^..HEAD --name-only | grep scenarios | awk -F '[/|/]' '{print $2}' | uniq) # ensure single scenario is impacted if [[ $(echo $DEPLOY_SCENARIO | wc -w) != 1 ]]; then diff --git a/jjb/xci/xci-start-deployment.sh b/jjb/xci/xci-start-deployment.sh index cb75b511e..0628829ea 100755 --- a/jjb/xci/xci-start-deployment.sh +++ b/jjb/xci/xci-start-deployment.sh @@ -39,4 +39,4 @@ if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENT exit 0 fi -ssh -F $HOME/.ssh/xci-vm-config ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh" +ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh" diff --git a/jjb/xci/xci-start-new-vm.sh b/jjb/xci/xci-start-new-vm.sh index d676e2662..d816a4f38 100755 --- a/jjb/xci/xci-start-new-vm.sh +++ b/jjb/xci/xci-start-new-vm.sh @@ -53,6 +53,7 @@ export DEPLOY_SCENARIO=$DEPLOY_SCENARIO export FUNCTEST_MODE=$FUNCTEST_MODE export FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME export XCI_FLAVOR=$XCI_FLAVOR +export CORE_OPENSTACK_INSTALL=true export CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES export OPNFV_RELENG_DEV_PATH=/home/devuser/releng-xci/ export INSTALLER_TYPE=$INSTALLER_TYPE diff --git a/jjb/yardstick/yardstick-daily-jobs.yml b/jjb/yardstick/yardstick-daily-jobs.yml index 481af2a42..20890fa13 100644 --- a/jjb/yardstick/yardstick-daily-jobs.yml +++ b/jjb/yardstick/yardstick-daily-jobs.yml @@ -136,7 +136,7 @@ <<: *euphrates # daisy CI PODs - baremetal: - slave-label: zte-pod3 + slave-label: daisy-baremetal installer: daisy auto-trigger-name: 'daily-trigger-disabled' <<: *master diff --git a/jjb/yardstick/yardstick-project-jobs.yml b/jjb/yardstick/yardstick-project-jobs.yml index e2fee2988..c03666388 100644 --- a/jjb/yardstick/yardstick-project-jobs.yml +++ b/jjb/yardstick/yardstick-project-jobs.yml @@ -132,7 +132,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running unit tests in Python 2.7 ..." cd $WORKSPACE @@ -146,7 +148,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running unit tests in Python 3 ..." cd $WORKSPACE @@ -160,7 +164,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running functional tests in Python 2.7 ..." cd $WORKSPACE @@ -174,7 +180,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running functional tests in Python 3 ..." cd $WORKSPACE @@ -188,7 +196,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running coverage tests ..." cd $WORKSPACE @@ -202,7 +212,9 @@ set -o errexit set -o pipefail + sudo apt-get -y autoremove sudo apt-get install -y build-essential python-dev python3-dev + sudo apt-get -y clean && sudo apt-get -y autoremove echo "Running style guidelines (PEP8) tests ..." cd $WORKSPACE |