summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rwxr-xr-xjjb/apex/apex-deploy.sh9
-rwxr-xr-xjjb/apex/apex-download-artifact.sh5
-rw-r--r--jjb/apex/apex-jjb-renderer.py50
-rw-r--r--jjb/apex/apex.yml19
-rw-r--r--jjb/apex/apex.yml.j219
-rw-r--r--jjb/armband/armband-ci-jobs.yml76
-rw-r--r--jjb/bottlenecks/bottlenecks-ci-jobs.yml6
-rw-r--r--jjb/bottlenecks/bottlenecks-run-suite.sh11
-rw-r--r--jjb/clover/clover-project.yml166
-rw-r--r--jjb/compass4nfv/compass-ci-jobs.yml20
-rwxr-xr-xjjb/container4nfv/arm64/compass-deploy.sh13
-rw-r--r--jjb/container4nfv/container4nfv-arm64.yml23
-rw-r--r--jjb/container4nfv/container4nfv-project.yml13
-rw-r--r--jjb/container4nfv/yardstick-arm64.yml6
-rw-r--r--jjb/daisy4nfv/daisy-daily-jobs.yml14
-rw-r--r--jjb/daisy4nfv/daisy-project-jobs.yml7
-rw-r--r--jjb/doctor/doctor.yml39
-rwxr-xr-xjjb/dovetail/dovetail-run.sh47
-rw-r--r--jjb/fuel/fuel-daily-jobs.yml92
-rwxr-xr-xjjb/functest/functest-alpine.sh45
-rw-r--r--jjb/functest/functest-daily-jobs.yml4
-rw-r--r--jjb/functest/functest-docker.yml (renamed from jjb/releng/functest-docker.yml)7
-rwxr-xr-xjjb/functest/functest-k8.sh15
-rw-r--r--jjb/functest/xtesting-docker.yml221
m---------jjb/global-jjb0
-rwxr-xr-xjjb/global/installer-report.sh49
-rw-r--r--jjb/global/releng-macros.yml36
-rw-r--r--jjb/global/slave-params.yml1
-rw-r--r--jjb/opnfvdocs/project.cfg1
-rw-r--r--jjb/pharos/check-jinja2.yml6
-rw-r--r--jjb/qtip/qtip-validate-jobs.yml6
-rw-r--r--jjb/releng/compass4nfv-docker.yml6
-rw-r--r--jjb/releng/opnfv-docker.yml14
-rw-r--r--jjb/releng/testresults-automate.yml (renamed from jjb/releng/automate.yml)69
-rw-r--r--jjb/releng/testresults-verify.yml78
-rw-r--r--jjb/xci/bifrost-verify-jobs.yml7
-rw-r--r--jjb/xci/osa-periodic-jobs.yml1
-rwxr-xr-xjjb/xci/xci-cleanup.sh8
-rw-r--r--jjb/xci/xci-daily-jobs.yml6
-rw-r--r--jjb/xci/xci-merge-jobs.yml351
-rwxr-xr-xjjb/xci/xci-promote.sh28
-rwxr-xr-xjjb/xci/xci-run-functest.sh19
-rwxr-xr-xjjb/xci/xci-set-scenario.sh218
-rwxr-xr-xjjb/xci/xci-start-deployment.sh3
-rwxr-xr-xjjb/xci/xci-start-new-vm.sh5
-rw-r--r--jjb/xci/xci-verify-jobs.yml40
-rw-r--r--jjb/yardstick/yardstick-daily-jobs.yml28
-rwxr-xr-xjjb/yardstick/yardstick-get-k8s-conf.sh1
-rw-r--r--modules/opnfv/deployment/compass/adapter_container.py83
-rw-r--r--modules/opnfv/deployment/factory.py6
-rw-r--r--releases/euphrates/armband.yaml9
-rw-r--r--releases/euphrates/availability.yaml9
-rw-r--r--releases/euphrates/bamboo.yaml9
-rw-r--r--releases/euphrates/barometer.yaml9
-rw-r--r--releases/euphrates/bottlenecks.yaml9
-rw-r--r--releases/euphrates/calipso.yaml9
-rw-r--r--releases/euphrates/container4nfv.yaml9
-rw-r--r--releases/euphrates/daisy.yaml9
-rw-r--r--releases/euphrates/doctor.yaml9
-rw-r--r--releases/euphrates/domino.yaml9
-rw-r--r--releases/euphrates/fds.yaml9
-rw-r--r--releases/euphrates/fuel.yaml9
-rw-r--r--releases/euphrates/functest.yaml9
-rw-r--r--releases/euphrates/ipv6.yaml9
-rw-r--r--releases/euphrates/joid.yaml9
-rw-r--r--releases/euphrates/kvmfornfv.yaml9
-rw-r--r--releases/euphrates/moon.yaml9
-rw-r--r--releases/euphrates/nfvbench.yaml9
-rw-r--r--releases/euphrates/octopus.yaml9
-rw-r--r--releases/euphrates/opnfvdocs.yaml9
-rw-r--r--releases/euphrates/orchestra.yaml9
-rw-r--r--releases/euphrates/ovn4nfv.yaml9
-rw-r--r--releases/euphrates/ovno.yaml9
-rw-r--r--releases/euphrates/parser.yaml9
-rw-r--r--releases/euphrates/pharos.yaml12
-rw-r--r--releases/euphrates/promise.yaml9
-rw-r--r--releases/euphrates/qtip.yaml9
-rw-r--r--releases/euphrates/samplevnf.yaml9
-rw-r--r--releases/euphrates/sdnvpn.yaml9
-rw-r--r--releases/euphrates/sfc.yaml9
-rw-r--r--releases/euphrates/snaps.yaml9
-rw-r--r--releases/euphrates/storperf.yaml9
-rw-r--r--releases/euphrates/vswitchperf.yaml9
-rw-r--r--releases/euphrates/yardstick.yaml9
-rwxr-xr-xutils/jenkins-jnlp-connect.sh29
86 files changed, 1904 insertions, 434 deletions
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..07b28be4b
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "jjb/global-jjb"]
+ path = jjb/global-jjb
+ url = https://github.com/lfit/releng-global-jjb
diff --git a/jjb/apex/apex-deploy.sh b/jjb/apex/apex-deploy.sh
index b8ae75a1f..123db3e85 100755
--- a/jjb/apex/apex-deploy.sh
+++ b/jjb/apex/apex-deploy.sh
@@ -31,7 +31,9 @@ elif [[ "$DEPLOY_SCENARIO" == *gate* ]]; then
fi
# Dev or RPM/ISO build
-if [[ "$ARTIFACT_VERSION" =~ dev ]]; then
+# For upstream deployments we currently only use git repo and not RPM
+# Need to decide after Fraser if we want to use RPM or not for upstream
+if [[ "$ARTIFACT_VERSION" =~ dev || "$DEPLOY_SCENARIO" =~ "upstream" ]]; then
# Settings for deploying from git workspace
DEPLOY_SETTINGS_DIR="${WORKSPACE}/config/deploy"
NETWORK_SETTINGS_DIR="${WORKSPACE}/config/network"
@@ -134,6 +136,11 @@ else
DEPLOY_CMD="${DEPLOY_CMD} -i ${INVENTORY_FILE}"
fi
+if [[ "$DEPLOY_SCENARIO" =~ "upstream" ]]; then
+ echo "Upstream deployment detected"
+ DEPLOY_CMD="${DEPLOY_CMD} --upstream"
+fi
+
if [ "$IPV6_FLAG" == "True" ]; then
NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings_v6.yaml"
elif echo ${DEPLOY_SCENARIO} | grep fdio; then
diff --git a/jjb/apex/apex-download-artifact.sh b/jjb/apex/apex-download-artifact.sh
index 68baf59da..c12406cdb 100755
--- a/jjb/apex/apex-download-artifact.sh
+++ b/jjb/apex/apex-download-artifact.sh
@@ -10,7 +10,10 @@ echo
[[ -d $BUILD_DIRECTORY ]] || mkdir -p $BUILD_DIRECTORY
-if [[ "$ARTIFACT_VERSION" =~ dev ]]; then
+# if upstream we do not need to download anything
+if [[ "$DEPLOY_SCENARIO" =~ upstream ]]; then
+ echo "Upstream deployment detected, skipping download artifact"
+elif [[ "$ARTIFACT_VERSION" =~ dev ]]; then
# dev build
GERRIT_PATCHSET_NUMBER=$(echo $GERRIT_REFSPEC | grep -Eo '[0-9]+$')
export OPNFV_ARTIFACT_VERSION="dev${GERRIT_CHANGE_NUMBER}_${GERRIT_PATCHSET_NUMBER}"
diff --git a/jjb/apex/apex-jjb-renderer.py b/jjb/apex/apex-jjb-renderer.py
index 6fd83afe9..b67784376 100644
--- a/jjb/apex/apex-jjb-renderer.py
+++ b/jjb/apex/apex-jjb-renderer.py
@@ -12,30 +12,38 @@ import yaml
from jinja2 import Environment
from jinja2 import FileSystemLoader
-gspathname = dict()
-branch = dict()
-build_slave = dict()
-env = Environment(loader=FileSystemLoader('./'), autoescape=True)
-with open('scenarios.yaml.hidden') as _:
- scenarios = yaml.safe_load(_)
+def render_jjb():
+ """Render JJB output from scenarios.yaml.hidden file and jinja
+ template"""
-template = env.get_template('apex.yml.j2')
+ gspathname = dict()
+ branch = dict()
+ build_slave = dict()
+ env = Environment(loader=FileSystemLoader('./'), autoescape=True)
-print("Scenarios are: ")
-pprint.pprint(scenarios)
+ with open('scenarios.yaml.hidden') as _:
+ scenarios = yaml.safe_load(_)
-for stream in scenarios:
- if stream == 'master':
- gspathname['master'] = ''
- branch[stream] = stream
- else:
- gspathname[stream] = '/' + stream
- branch[stream] = 'stable/' + stream
- build_slave[stream] = 'apex-baremetal-{}'.format(stream)
+ template = env.get_template('apex.yml.j2')
-output = template.render(scenarios=scenarios, gspathname=gspathname,
- branch=branch, build_slave=build_slave)
+ print("Scenarios are: ")
+ pprint.pprint(scenarios)
-with open('./apex.yml', 'w') as fh:
- fh.write(output)
+ for stream in scenarios:
+ if stream == 'master':
+ gspathname['master'] = ''
+ branch[stream] = stream
+ else:
+ gspathname[stream] = '/' + stream
+ branch[stream] = 'stable/' + stream
+ build_slave[stream] = 'apex-baremetal-{}'.format(stream)
+
+ output = template.render(scenarios=scenarios, gspathname=gspathname,
+ branch=branch, build_slave=build_slave)
+
+ with open('./apex.yml', 'w') as fh:
+ fh.write(output)
+
+if __name__ == "__main__":
+ render_jjb()
diff --git a/jjb/apex/apex.yml b/jjb/apex/apex.yml
index cf29b928c..e19a90e94 100644
--- a/jjb/apex/apex.yml
+++ b/jjb/apex/apex.yml
@@ -530,7 +530,7 @@
abort-all-job: false
git-revision: false
- multijob:
- name: Dovetail
+ name: Dovetail-proposed_tests
condition: ALWAYS
projects:
- name: 'dovetail-apex-baremetal-proposed_tests-{scenario_stream}'
@@ -539,7 +539,22 @@
predefined-parameters:
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
kill-phase-on: NEVER
- enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/
+ && $BUILD_NUMBER % 2 == 1"
+ abort-all-job: false
+ git-revision: false
+ - multijob:
+ name: Dovetail-default
+ condition: ALWAYS
+ projects:
+ - name: 'dovetail-apex-baremetal-default-{scenario_stream}'
+ node-parameters: true
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ kill-phase-on: NEVER
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/
+ && $BUILD_NUMBER % 2 == 0"
abort-all-job: false
git-revision: false
- multijob:
diff --git a/jjb/apex/apex.yml.j2 b/jjb/apex/apex.yml.j2
index ab65c4e2b..ecc6f270c 100644
--- a/jjb/apex/apex.yml.j2
+++ b/jjb/apex/apex.yml.j2
@@ -408,7 +408,7 @@
abort-all-job: false
git-revision: false
- multijob:
- name: Dovetail
+ name: Dovetail-proposed_tests
condition: ALWAYS
projects:
- name: 'dovetail-apex-baremetal-proposed_tests-{scenario_stream}'
@@ -417,7 +417,22 @@
predefined-parameters:
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
kill-phase-on: NEVER
- enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/
+ && $BUILD_NUMBER % 2 == 1"
+ abort-all-job: false
+ git-revision: false
+ - multijob:
+ name: Dovetail-default
+ condition: ALWAYS
+ projects:
+ - name: 'dovetail-apex-baremetal-default-{scenario_stream}'
+ node-parameters: true
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ kill-phase-on: NEVER
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/
+ && $BUILD_NUMBER % 2 == 0"
abort-all-job: false
git-revision: false
- multijob:
diff --git a/jjb/armband/armband-ci-jobs.yml b/jjb/armband/armband-ci-jobs.yml
index 64c138946..1c5f14880 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-ovn-nofeature-ha':
+ auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
- 'os-nosdn-ovs-ha':
auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
@@ -69,6 +71,10 @@
- 'os-nosdn-nofeature-noha':
auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+ exclude:
+ - scenario: os-ovn-nofeature-ha
+ stream: euphrates
+
jobs:
- '{installer}-{scenario}-{pod}-daily-{stream}'
- '{installer}-deploy-{pod}-daily-{stream}'
@@ -124,42 +130,28 @@
DEPLOY_SCENARIO={scenario}
same-node: true
block: true
- - conditional-step:
- condition-kind: not
- condition-operand:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
- steps:
- - trigger-builds:
- - project: 'functest-{installer}-{pod}-arm-daily-{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:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
- steps:
- - trigger-builds:
- - project: 'yardstick-{installer}-{pod}-daily-{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'
+ - trigger-builds:
+ - project: 'functest-{installer}-{pod}-arm-daily-{stream}'
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO={scenario}
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'yardstick-{installer}-{pod}-daily-{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'
# 1.here the stream means the SUT stream, dovetail stream is defined in its own job
# 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
@@ -171,7 +163,7 @@
condition-kind: and
condition-operands:
- condition-kind: regex-match
- regex: '-ha$'
+ regex: '.*-ha'
label: '{scenario}'
- condition-kind: day-of-week
day-selector: select-days
@@ -196,7 +188,7 @@
condition-kind: and
condition-operands:
- condition-kind: regex-match
- regex: '*-ha'
+ regex: '.*-ha'
label: '{scenario}'
- condition-kind: day-of-week
day-selector: select-days
@@ -302,6 +294,10 @@
triggers:
- timed: '0 1 * * 2,5,7'
- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-master-trigger'
triggers:
- timed: '0 1 * * 1,3'
@@ -341,6 +337,10 @@
triggers:
- timed: ''
- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-armband-virtual-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'fuel-os-nosdn-ovs-ha-armband-virtual-master-trigger'
triggers:
- timed: ''
diff --git a/jjb/bottlenecks/bottlenecks-ci-jobs.yml b/jjb/bottlenecks/bottlenecks-ci-jobs.yml
index 1d31f2775..072117ae3 100644
--- a/jjb/bottlenecks/bottlenecks-ci-jobs.yml
+++ b/jjb/bottlenecks/bottlenecks-ci-jobs.yml
@@ -73,6 +73,12 @@
suite:
- 'posca_stress_traffic'
- 'posca_stress_ping'
+ - 'posca_factor_multistack_storage'
+ - 'posca_factor_multistack_storage_parallel'
+ - 'posca_feature_moon_resources'
+ - 'posca_feature_moon_tenants'
+ - 'posca_feature_vnf_scale_out'
+ - 'posca_factor_soak_throughputs'
jobs:
- 'bottlenecks-{installer}-{suite}-{pod}-daily-{stream}'
diff --git a/jjb/bottlenecks/bottlenecks-run-suite.sh b/jjb/bottlenecks/bottlenecks-run-suite.sh
index ebd905e98..7a3db00c4 100644
--- a/jjb/bottlenecks/bottlenecks-run-suite.sh
+++ b/jjb/bottlenecks/bottlenecks-run-suite.sh
@@ -136,13 +136,12 @@ if [[ $SUITE_NAME == *posca* ]]; then
# Running test cases through Bottlenecks docker
if [[ $SUITE_NAME == posca_stress_traffic ]]; then
TEST_CASE=posca_factor_system_bandwidth
- testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
- echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
- ${testcase_cmd} >$redirect
elif [[ $SUITE_NAME == posca_stress_ping ]]; then
TEST_CASE=posca_factor_ping
- testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
- echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
- ${testcase_cmd} >$redirect
+ else
+ TEST_CASE=$SUITE_NAME
fi
+ testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
+ echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
+ ${testcase_cmd} >$redirect
fi
diff --git a/jjb/clover/clover-project.yml b/jjb/clover/clover-project.yml
new file mode 100644
index 000000000..b31f3deb2
--- /dev/null
+++ b/jjb/clover/clover-project.yml
@@ -0,0 +1,166 @@
+---
+###################################################
+# All the jobs except verify have been removed!
+# They will only be enabled on request by projects!
+###################################################
+- project:
+ name: clover
+
+ project: '{name}'
+
+ jobs:
+ - 'clover-verify-{stream}'
+ - 'clover-daily-upload-{stream}'
+ - 'clover-daily-deploy-{stream}'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ gs-pathname: ''
+ disabled: false
+
+- job-template:
+ name: 'clover-verify-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ # yamllint disable rule:line-length
+ - 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."
+ # yamllint enable rule:line-length
+ - '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: |
+ cd $WORKSPACE/ci
+ ./verify.sh
+
+- job-template:
+ name: 'clover-daily-upload-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ concurrent: false
+
+ scm:
+ - git-scm
+
+ triggers:
+ - timed: '0 11 * * *'
+
+ wrappers:
+ - fix-workspace-permissions
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+ - 'clover-defaults':
+ gs-pathname: '{gs-pathname}'
+
+ builders:
+ - shell: |
+ cd $WORKSPACE/ci
+ ./upload.sh
+
+- job-template:
+ name: 'clover-daily-deploy-{stream}'
+
+ project-type: freestyle
+
+ disabled: '{obj:disabled}'
+
+ concurrent: false
+
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'clover-daily-deploy-.*?'
+ - 'container4nfv-daily-deploy-.*?'
+ block-level: 'NODE'
+
+ wrappers:
+ - timeout:
+ timeout: 180
+ abort: true
+ - fix-workspace-permissions
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ # yamllint disable rule:line-length
+ - 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."
+ # yamllint enable rule:line-length
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - huawei-virtual6
+ default-slaves:
+ - huawei-virtual6
+
+ scm:
+ - git-scm
+
+ triggers:
+ - timed: '0 12 * * *'
+
+ builders:
+ - shell: |
+ cd $WORKSPACE/ci
+ ./deploy.sh
+
+###################
+# parameter macros
+###################
+- parameter:
+ name: 'clover-defaults'
+ parameters:
+ - string:
+ name: GS_URL
+ default: artifacts.opnfv.org/$PROJECT{gs-pathname}
+ description: "URL to Google Storage."
diff --git a/jjb/compass4nfv/compass-ci-jobs.yml b/jjb/compass4nfv/compass-ci-jobs.yml
index 357f24e37..44cb84d8e 100644
--- a/jjb/compass4nfv/compass-ci-jobs.yml
+++ b/jjb/compass4nfv/compass-ci-jobs.yml
@@ -289,6 +289,26 @@
build-step-failure-threshold: 'never'
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
+ - project: 'bottlenecks-compass-posca_factor_multistack_storage_parallel-{pod}-daily-{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'
+ - project: 'bottlenecks-compass-posca_factor_soak_throughputs-{pod}-daily-{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:
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/container4nfv/container4nfv-project.yml b/jjb/container4nfv/container4nfv-project.yml
index 03bbb655e..1ab50ae30 100644
--- a/jjb/container4nfv/container4nfv-project.yml
+++ b/jjb/container4nfv/container4nfv-project.yml
@@ -109,8 +109,21 @@
properties:
- logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'clover-daily-deploy-.*?'
+ - 'container4nfv-daily-deploy-.*?'
+ block-level: 'NODE'
wrappers:
+ - timeout:
+ timeout: 240
+ abort: true
- fix-workspace-permissions
parameters:
diff --git a/jjb/container4nfv/yardstick-arm64.yml b/jjb/container4nfv/yardstick-arm64.yml
index bd1d8aa85..9b8b271df 100644
--- a/jjb/container4nfv/yardstick-arm64.yml
+++ b/jjb/container4nfv/yardstick-arm64.yml
@@ -5,7 +5,7 @@
- project:
name: yardstick-arm64
- project: '{name}'
+ project: 'yardstick'
# -------------------------------
# BRANCH ANCHORS
@@ -84,6 +84,10 @@
name: CI_DEBUG
default: 'false'
description: "Show debut output information"
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: "Used for overriding the GIT URL coming from Global Jenkins configuration."
scm:
- git-scm
diff --git a/jjb/daisy4nfv/daisy-daily-jobs.yml b/jjb/daisy4nfv/daisy-daily-jobs.yml
index fbbb086d7..cc2dc5a2f 100644
--- a/jjb/daisy4nfv/daisy-daily-jobs.yml
+++ b/jjb/daisy4nfv/daisy-daily-jobs.yml
@@ -117,9 +117,7 @@
- '{installer}-defaults'
- '{slave-label}-defaults':
installer: '{installer}'
- - string:
- name: DEPLOY_SCENARIO
- default: '{scenario}'
+ - 'testapi-parameter'
- 'daisy-project-parameter':
gs-pathname: '{gs-pathname}'
@@ -192,8 +190,10 @@
- build-blocker:
use-build-blocker: true
blocking-jobs:
- - 'daisy.*-deploy-({pod})?-daily-.*'
- 'daisy-kolla-build-.*'
+ - '{installer}-(build|deploy|test)-daily-(euphrates|master)'
+ - '{installer}-deploy-(baremetal|virtual|zte-pod9)-daily-(euphrates|master)'
+ - '(functest|yardstick)-{installer}-(baremetal|virtual|zte-pod9)-daily-(euphrates|master)'
block-level: 'NODE'
parameters:
@@ -203,9 +203,7 @@
- '{installer}-defaults'
- '{slave-label}-defaults':
installer: '{installer}'
- - string:
- name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-ha'
+ - 'testapi-parameter'
- 'daisy-project-parameter':
gs-pathname: '{gs-pathname}'
- string:
@@ -337,7 +335,7 @@
- trigger:
name: 'daisy-os-nosdn-ovs_dpdk-noha-zte-pod9-daily-master-trigger'
triggers:
- - timed: '0 10 * * *'
+ - timed: '0 10,20 * * *'
# Basic HA Scenarios
- trigger:
name: 'daisy-os-nosdn-nofeature-ha-zte-pod9-daily-master-trigger'
diff --git a/jjb/daisy4nfv/daisy-project-jobs.yml b/jjb/daisy4nfv/daisy-project-jobs.yml
index 006153f6f..c4edd7738 100644
--- a/jjb/daisy4nfv/daisy-project-jobs.yml
+++ b/jjb/daisy4nfv/daisy-project-jobs.yml
@@ -215,6 +215,13 @@
enabled: true
max-total: 6
option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - '{installer}-daily-(build|deploy|test)-(euphrates|master)'
+ - '{installer}-.*-(baremetal|virtual|zte-pod9)-daily-(euphrates|master)'
+ - '(functest|yardstick)-{installer}-(baremetal|virtual|zte-pod9)-daily-(euphrates|master)'
+ block-level: 'NODE'
scm:
- git-scm
diff --git a/jjb/doctor/doctor.yml b/jjb/doctor/doctor.yml
index ba76b8abb..8c04ffd53 100644
--- a/jjb/doctor/doctor.yml
+++ b/jjb/doctor/doctor.yml
@@ -19,7 +19,7 @@
installer:
- 'apex'
- 'fuel'
- # - 'joid'
+ - 'daisy'
arch:
- 'x86_64'
@@ -29,19 +29,17 @@
- 'sample'
- 'congress'
- task:
- - verify:
- auto-trigger-name: 'doctor-verify'
-
exclude:
- installer: 'apex'
arch: 'aarch64'
+ - installer: 'daisy'
+ arch: 'aarch64'
jobs:
- 'doctor-verify-{stream}'
- 'doctor-verify-unit-test-{stream}'
- - 'doctor-{task}-{inspector}-{stream}'
- - 'doctor-{task}-{installer}-{inspector}-{arch}-{stream}'
+ - 'doctor-verify-{inspector}-{stream}'
+ - 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
- job-template:
name: 'doctor-verify-{stream}'
@@ -76,6 +74,7 @@
file-paths:
- compare-type: ANT
pattern: 'doctor_tests/**'
+
builders:
- shell: |
#!/bin/bash
@@ -117,16 +116,17 @@
- 'doctor-verify-unit-test-publishers-macro'
- job-template:
- name: 'doctor-{task}-{inspector}-{stream}'
+ name: 'doctor-verify-{inspector}-{stream}'
disabled: '{obj:disabled}'
project-type: 'multijob'
scm:
- git-scm-gerrit
triggers:
- - '{auto-trigger-name}':
+ - 'doctor-verify':
project: '{project}'
branch: '{branch}'
files: 'doctor_tests/**'
+
builders:
- shell: |
#!/bin/bash
@@ -137,7 +137,7 @@
name: 'doctor-verify-apex-inspector'
execution-type: PARALLEL
projects:
- - name: 'doctor-{task}-apex-{inspector}-x86_64-{stream}'
+ - name: 'doctor-verify-apex-{inspector}-x86_64-{stream}'
predefined-parameters: |
PROJECT=$PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
@@ -151,7 +151,7 @@
name: 'doctor-verify-fuel-inspector'
execution-type: PARALLEL
projects:
- - name: 'doctor-{task}-fuel-{inspector}-x86_64-{stream}'
+ - name: 'doctor-verify-fuel-{inspector}-x86_64-{stream}'
predefined-parameters: |
PROJECT=$PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
@@ -165,7 +165,20 @@
name: 'doctor-verify-fuel-inspector'
execution-type: PARALLEL
projects:
- - name: 'doctor-{task}-fuel-{inspector}-aarch64-{stream}'
+ - name: 'doctor-verify-fuel-{inspector}-aarch64-{stream}'
+ predefined-parameters: |
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ kill-phase-on: FAILURE
+ current-parameters: true
+ git-revision: true
+ - multijob:
+ name: 'doctor-verify-daisy-inspector'
+ execution-type: PARALLEL
+ projects:
+ - name: 'doctor-verify-daisy-{inspector}-x86_64-{stream}'
predefined-parameters: |
PROJECT=$PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
@@ -177,7 +190,7 @@
git-revision: true
- job-template:
- name: 'doctor-{task}-{installer}-{inspector}-{arch}-{stream}'
+ name: 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
disabled: '{obj:disabled}'
node: 'doctor-{installer}-{arch}'
wrappers:
diff --git a/jjb/dovetail/dovetail-run.sh b/jjb/dovetail/dovetail-run.sh
index ec879e325..1c53dbee4 100755
--- a/jjb/dovetail/dovetail-run.sh
+++ b/jjb/dovetail/dovetail-run.sh
@@ -24,6 +24,9 @@ mkdir -p ${DOVETAIL_HOME}
DOVETAIL_CONFIG=${DOVETAIL_HOME}/pre_config
mkdir -p ${DOVETAIL_CONFIG}
+DOVETAIL_IMAGES=${DOVETAIL_HOME}/images
+mkdir -p ${DOVETAIL_IMAGES}
+
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
sshkey=""
@@ -90,13 +93,24 @@ fi
cat $OPENRC
if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "compass" ]]; then
+ compass_repo=${WORKSPACE}/compass4nfv/
+ git clone https://github.com/opnfv/compass4nfv.git ${compass_repo} >/dev/null
+ pip install shyaml
+ scenario_file=${compass_repo}/deploy/conf/hardware_environment/$NODE_NAME/os-nosdn-nofeature-ha.yml
+ ipmiIp=$(cat ${scenario_file} | shyaml get-value hosts.0.ipmiIp)
+ ipmiPass=$(cat ${scenario_file} | shyaml get-value hosts.0.ipmiPass)
+ ipmiUser=root
+ jumpserver_ip=$(ifconfig | grep -A 5 docker0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1)
+
cat << EOF >${DOVETAIL_CONFIG}/pod.yaml
nodes:
-- {ip: 10.1.0.52, name: node1, password: root, role: controller, user: root}
+- {ip: ${jumpserver_ip}, name: node0, password: root, role: Jumpserver, user: root}
+- {ip: 10.1.0.50, name: node1, password: root, role: controller, user: root,
+ ipmi_ip: ${ipmiIp}, ipmi_user: ${ipmiUser}, ipmi_password: ${ipmiPass}}
- {ip: 10.1.0.51, name: node2, password: root, role: controller, user: root}
-- {ip: 10.1.0.50, name: node3, password: root, role: controller, user: root}
-- {ip: 10.1.0.54, name: node4, password: root, role: compute, user: root}
-- {ip: 10.1.0.53, name: node5, password: root, role: compute, user: root}
+- {ip: 10.1.0.52, name: node3, password: root, role: controller, user: root}
+- {ip: 10.1.0.53, name: node4, password: root, role: compute, user: root}
+- {ip: 10.1.0.54, name: node5, password: root, role: compute, user: root}
EOF
fi
@@ -151,6 +165,14 @@ if [[ ! -f ${DOVETAIL_CONFIG}/pod.yaml ]]; then
fi
if [ -f ${DOVETAIL_CONFIG}/pod.yaml ]; then
+ sudo chown jenkins:jenkins ${DOVETAIL_CONFIG}/pod.yaml
+ echo "Adapt process info for $INSTALLER_TYPE ..."
+ attack_process='rabbitmq'
+ cat << EOF >> ${DOVETAIL_CONFIG}/pod.yaml
+process_info:
+- {testcase_name: dovetail.ha.tc010, attack_process: ${attack_process}}
+
+EOF
echo "file ${DOVETAIL_CONFIG}/pod.yaml:"
cat ${DOVETAIL_CONFIG}/pod.yaml
else
@@ -189,7 +211,7 @@ if [[ ! -f ${ubuntu_image} ]]; then
echo "Download image ubuntu-16.04-server-cloudimg-amd64-disk1.img ..."
wget -q -nc http://artifacts.opnfv.org/sdnvpn/ubuntu-16.04-server-cloudimg-amd64-disk1.img -P ${image_path}
fi
-sudo cp ${ubuntu_image} ${DOVETAIL_CONFIG}
+sudo cp ${ubuntu_image} ${DOVETAIL_IMAGES}
# functest needs to download this image first before running
cirros_image=${image_path}/cirros-0.3.5-x86_64-disk.img
@@ -197,7 +219,7 @@ if [[ ! -f ${cirros_image} ]]; then
echo "Download image cirros-0.3.5-x86_64-disk.img ..."
wget -q -nc http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -P ${image_path}
fi
-sudo cp ${cirros_image} ${DOVETAIL_CONFIG}
+sudo cp ${cirros_image} ${DOVETAIL_IMAGES}
# snaps_smoke test case needs to download this image first before running
ubuntu14_image=${image_path}/ubuntu-14.04-server-cloudimg-amd64-disk1.img
@@ -205,7 +227,7 @@ if [[ ! -f ${ubuntu14_image} ]]; then
echo "Download image ubuntu-14.04-server-cloudimg-amd64-disk1.img ..."
wget -q -nc https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img -P ${image_path}
fi
-sudo cp ${ubuntu14_image} ${DOVETAIL_CONFIG}
+sudo cp ${ubuntu14_image} ${DOVETAIL_IMAGES}
# cloudify_ims test case needs to download these 2 images first before running
cloudify_image=${image_path}/cloudify-manager-premium-4.0.1.qcow2
@@ -213,13 +235,13 @@ if [[ ! -f ${cloudify_image} ]]; then
echo "Download image cloudify-manager-premium-4.0.1.qcow2 ..."
wget -q -nc http://repository.cloudifysource.org/cloudify/4.0.1/sp-release/cloudify-manager-premium-4.0.1.qcow2 -P ${image_path}
fi
-sudo cp ${cloudify_image} ${DOVETAIL_CONFIG}
+sudo cp ${cloudify_image} ${DOVETAIL_IMAGES}
trusty_image=${image_path}/trusty-server-cloudimg-amd64-disk1.img
if [[ ! -f ${trusty_image} ]]; then
echo "Download image trusty-server-cloudimg-amd64-disk1.img ..."
wget -q -nc http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img -P ${image_path}
fi
-sudo cp ${trusty_image} ${DOVETAIL_CONFIG}
+sudo cp ${trusty_image} ${DOVETAIL_IMAGES}
opts="--privileged=true -id"
@@ -236,10 +258,8 @@ fi
echo "Dovetail: Pulling image ${DOCKER_REPO}:${DOCKER_TAG}"
docker pull ${DOCKER_REPO}:$DOCKER_TAG >$redirect
-env4bgpvpn="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP}"
-
cmd="docker run ${opts} -e DOVETAIL_HOME=${DOVETAIL_HOME} ${docker_volume} ${dovetail_home_volume} \
- ${sshkey} ${env4bgpvpn} ${DOCKER_REPO}:${DOCKER_TAG} /bin/bash"
+ ${sshkey} ${DOCKER_REPO}:${DOCKER_TAG} /bin/bash"
echo "Dovetail: running docker run command: ${cmd}"
${cmd} >${redirect}
sleep 5
@@ -299,8 +319,9 @@ sudo cp -r ${DOVETAIL_HOME}/results ./
# PRIMARY_GROUP=$(id -gn $CURRENT_USER)
# sudo chown -R ${CURRENT_USER}:${PRIMARY_GROUP} ${WORKSPACE}/results
-#remove useless workspace from yardstick to save disk space
+#remove useless files to save disk space
sudo rm -rf ./results/workspace
+sudo rm -f ./results/yardstick.img
echo "Dovetail: done!"
diff --git a/jjb/fuel/fuel-daily-jobs.yml b/jjb/fuel/fuel-daily-jobs.yml
index f4bcdaa27..a198751a8 100644
--- a/jjb/fuel/fuel-daily-jobs.yml
+++ b/jjb/fuel/fuel-daily-jobs.yml
@@ -63,6 +63,8 @@
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-onos-nofeature-ha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
+ - 'os-ovn-nofeature-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-nosdn-kvm-ha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-nosdn-ovs-ha':
@@ -101,6 +103,14 @@
stream: master
- scenario: os-odl_l2-bgpvpn-ha
stream: euphrates
+ - scenario: os-ovn-nofeature-noha
+ stream: danube
+ - scenario: os-ovn-nofeature-noha
+ stream: euphrates
+ - scenario: os-ovn-nofeature-ha
+ stream: danube
+ - scenario: os-ovn-nofeature-ha
+ stream: euphrates
jobs:
- 'fuel-{scenario}-{pod}-daily-{stream}'
@@ -161,42 +171,28 @@
DEPLOY_SCENARIO={scenario}
same-node: true
block: true
- - conditional-step:
- condition-kind: not
- condition-operand:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
- steps:
- - trigger-builds:
- - project: 'functest-fuel-{pod}-daily-{stream}'
- current-parameters: false
- predefined-parameters:
- DEPLOY_SCENARIO={scenario}
- same-node: true
- block: true
- block-thresholds:
- build-step-failure-threshold: 'never'
- failure-threshold: 'never'
- unstable-threshold: 'FAILURE'
- - conditional-step:
- condition-kind: not
- condition-operand:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
- steps:
- - trigger-builds:
- - project: 'yardstick-fuel-{pod}-daily-{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'
+ - trigger-builds:
+ - project: 'functest-fuel-{pod}-daily-{stream}'
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO={scenario}
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'yardstick-fuel-{pod}-daily-{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'
# 1.here the stream means the SUT stream, dovetail stream is defined in its own job
# 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
@@ -207,7 +203,7 @@
condition-kind: and
condition-operands:
- condition-kind: regex-match
- regex: '-ha$'
+ regex: '.*-ha'
label: '{scenario}'
- condition-kind: day-of-week
day-selector: select-days
@@ -232,7 +228,7 @@
condition-kind: and
condition-operands:
- condition-kind: regex-match
- regex: '*-ha'
+ regex: '.*-ha'
label: '{scenario}'
- condition-kind: day-of-week
day-selector: select-days
@@ -396,6 +392,10 @@
triggers:
- timed: '' # '5 8 * * *'
- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-master-trigger'
triggers:
- timed: '' # '5 17 * * *'
@@ -498,10 +498,6 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-euphrates-trigger'
- triggers:
- - timed: ''
-- trigger:
name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-euphrates-trigger'
triggers:
- timed: ''
@@ -537,6 +533,10 @@
triggers:
- timed: ''
- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-virtual-daily-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'fuel-os-nosdn-kvm-ha-virtual-daily-master-trigger'
triggers:
- timed: ''
@@ -642,10 +642,6 @@
triggers:
- timed: '' # '0 23 * * *'
- trigger:
- name: 'fuel-os-ovn-nofeature-noha-virtual-daily-euphrates-trigger'
- triggers:
- - timed: ''
-- trigger:
name: 'fuel-os-nosdn-kvm-noha-virtual-daily-euphrates-trigger'
triggers:
- timed: '' # '30 6 * * *'
@@ -681,6 +677,10 @@
triggers:
- timed: ''
- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-zte-pod1-daily-master-trigger'
+ triggers:
+ - timed: ''
+- trigger:
name: 'fuel-os-nosdn-kvm-ha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh
index 432bbbb8b..bdd79c486 100755
--- a/jjb/functest/functest-alpine.sh
+++ b/jjb/functest/functest-alpine.sh
@@ -161,28 +161,35 @@ if [ "${INSTALLER_TYPE}" == 'fuel' ]; then
envs="${envs} -e POD_ARCH=${COMPUTE_ARCH}"
fi
-volumes="${images_vol} ${results_vol} ${sshkey_vol} ${rc_file_vol} ${cacert_file_vol}"
-set +e
+if [[ ${INSTALLER_TYPE} == 'compass' && ${DEPLOY_SCENARIO} =~ 'odl.*sfc' ]]; then
+ ssh_key="/tmp/id_rsa"
+ user_config="/tmp/openstack_user_config.yml"
+ docker cp compass-tasks:/root/.ssh/id_rsa $ssh_key
+ docker cp compass-tasks:/etc/openstack_deploy/openstack_user_config.yml $user_config
+ sshkey_vol="-v ${ssh_key}:/root/.ssh/id_rsa"
+ userconfig_vol="-v ${user_config}:${user_config}"
+ envs="${envs} -e EXTERNAL_NETWORK=${EXTERNAL_NETWORK}"
+fi
+
+
+volumes="${images_vol} ${results_vol} ${sshkey_vol} ${userconfig_vol} ${rc_file_vol} ${cacert_file_vol}"
+set +e
-if [[ ${DEPLOY_SCENARIO} =~ ^os-.* ]]; then
- [[ ${BRANCH##*/} == "master" ]] && check_os_deployment
- if [ ${FUNCTEST_MODE} == 'testcase' ]; then
- echo "FUNCTEST_MODE=testcase, FUNCTEST_SUITE_NAME=${FUNCTEST_SUITE_NAME}"
- run_test ${FUNCTEST_SUITE_NAME}
- elif [ ${FUNCTEST_MODE} == 'tier' ]; then
- echo "FUNCTEST_MODE=tier, FUNCTEST_TIER=${FUNCTEST_TIER}"
- tiers=(${FUNCTEST_TIER})
- run_tiers ${tiers}
+[[ ${BRANCH##*/} == "master" ]] && check_os_deployment
+if [ ${FUNCTEST_MODE} == 'testcase' ]; then
+ echo "FUNCTEST_MODE=testcase, FUNCTEST_SUITE_NAME=${FUNCTEST_SUITE_NAME}"
+ run_test ${FUNCTEST_SUITE_NAME}
+elif [ ${FUNCTEST_MODE} == 'tier' ]; then
+ echo "FUNCTEST_MODE=tier, FUNCTEST_TIER=${FUNCTEST_TIER}"
+ tiers=(${FUNCTEST_TIER})
+ run_tiers ${tiers}
+else
+ if [ ${DEPLOY_TYPE} == 'baremetal' ]; then
+ tiers=(healthcheck smoke features vnf parser)
else
- if [ ${DEPLOY_TYPE} == 'baremetal' ]; then
- tiers=(healthcheck smoke features vnf parser)
- else
- tiers=(healthcheck smoke features)
- fi
- run_tiers ${tiers}
+ tiers=(healthcheck smoke features)
fi
-else
- echo "k8 deployment has not been supported by functest yet"
+ run_tiers ${tiers}
fi
diff --git a/jjb/functest/functest-daily-jobs.yml b/jjb/functest/functest-daily-jobs.yml
index 099d01a59..8ffbe9e63 100644
--- a/jjb/functest/functest-daily-jobs.yml
+++ b/jjb/functest/functest-daily-jobs.yml
@@ -197,9 +197,9 @@
- 'suite':
job-timeout: 60
- 'daily':
- job-timeout: 300
+ job-timeout: 360
- 'arm-daily':
- job-timeout: 300
+ job-timeout: 480
jobs:
- 'functest-{installer}-{pod}-{testsuite}-{stream}'
diff --git a/jjb/releng/functest-docker.yml b/jjb/functest/functest-docker.yml
index bfeae5eaa..909c7b079 100644
--- a/jjb/releng/functest-docker.yml
+++ b/jjb/functest/functest-docker.yml
@@ -72,7 +72,7 @@
disabled: '{obj:disabled}'
parameters:
- - job-parameters:
+ - functest-job-parameters:
project: '{project}'
branch: '{branch}'
slave_label: 'opnfv-build-ubuntu'
@@ -168,7 +168,7 @@
name: 'functest-{image}-docker-build-{arch_tag}-{stream}'
disabled: '{obj:disabled}'
parameters:
- - job-parameters:
+ - functest-job-parameters:
project: '{project}'
branch: '{branch}'
slave_label: '{slave_label}'
@@ -230,7 +230,7 @@
# parameter macro
- parameter:
- name: job-parameters
+ name: functest-job-parameters
parameters:
- project-parameter:
project: '{project}'
@@ -290,3 +290,4 @@
jalausuch@suse.com morgan.richomme@orange.com
cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
juha.kosonen@nokia.com wangwulin@huawei.com
+ valentin.boucher@kontron.com
diff --git a/jjb/functest/functest-k8.sh b/jjb/functest/functest-k8.sh
index 7c5308d5f..49d7163a9 100755
--- a/jjb/functest/functest-k8.sh
+++ b/jjb/functest/functest-k8.sh
@@ -19,7 +19,7 @@ if [[ ${INSTALLER_TYPE} == 'compass' ]]; then
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"
+ admin_conf_file_vol="-v ${HOME}/joid_config/config:/root/.kube/config"
rc_file=${HOME}/joid_config/k8config
else
echo "Not supported by other installers yet"
@@ -35,24 +35,25 @@ results_vol="-v ${dir_result}:${FUNCTEST_DIR}/results"
volumes="${rc_file_vol} ${results_vol} ${admin_conf_file_vol}"
-# Set iptables rule to allow forwarding return traffic for container
-if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
- sudo iptables -I FORWARD -j RETURN
-fi
-
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} \
-e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
-e BUILD_TAG=${BUILD_TAG} -e DEPLOY_TYPE=${DEPLOY_TYPE}"
DOCKER_TAG=`[[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/}`
+set +e
+
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 ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
echo "Running Functest k8s test cases, CMD: ${cmd}"
eval ${cmd}
ret_value=$?
+
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
+echo 0 > ${ret_val_file}
if [ ${ret_value} != 0 ]; then
echo ${ret_value} > ${ret_val_file}
fi
diff --git a/jjb/functest/xtesting-docker.yml b/jjb/functest/xtesting-docker.yml
new file mode 100644
index 000000000..dc26344e3
--- /dev/null
+++ b/jjb/functest/xtesting-docker.yml
@@ -0,0 +1,221 @@
+---
+##############################################
+# job configuration for docker build and push
+##############################################
+- project:
+
+ name: xtesting-docker
+
+ project: functest-xtesting
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+
+ arch_tag:
+ - 'amd64':
+ slave_label: 'opnfv-build-ubuntu'
+ - 'arm64':
+ slave_label: 'opnfv-build-ubuntu-arm'
+
+ # settings for jobs run in multijob phases
+ build-job-settings: &build-job-settings
+ current-parameters: false
+ git-revision: true
+ node-parameters: false
+ predefined-parameters: |
+ PUSH_IMAGE=$PUSH_IMAGE
+ COMMIT_ID=$COMMIT_ID
+ GERRIT_REFNAME=$GERRIT_REFNAME
+ DOCKERFILE=$DOCKERFILE
+ kill-phase-on: FAILURE
+ abort-all-jobs: false
+
+ manifest-job-settings: &manifest-job-settings
+ current-parameters: false
+ git-revision: true
+ node-parameters: false
+ predefined-parameters:
+ GERRIT_REFNAME=$GERRIT_REFNAME
+ kill-phase-on: FAILURE
+ abort-all-jobs: false
+
+ # yamllint enable rule:key-duplicates
+ jobs:
+ - "xtesting-docker-{stream}"
+ - "xtesting-docker-build-{arch_tag}-{stream}"
+ - "xtesting-docker-manifest-{stream}"
+
+########################
+# job templates
+########################
+- job-template:
+ name: 'xtesting-docker-{stream}'
+
+ project-type: multijob
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - xtesting-job-parameters:
+ project: '{project}'
+ branch: '{branch}'
+ slave_label: 'opnfv-build-ubuntu'
+ arch_tag: 'amd64'
+
+ properties:
+ - throttle:
+ max-per-node: 1
+ option: 'project'
+
+ scm:
+ - git-scm
+
+ triggers:
+ - pollscm:
+ cron: "*/30 * * * *"
+ - gerrit-trigger-tag-created:
+ project: '{project}'
+
+ builders:
+ - multijob:
+ name: 'build xtesting images'
+ execution-type: PARALLEL
+ projects:
+ - name: 'xtesting-docker-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'xtesting-docker-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish xtesting manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'xtesting-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+
+ publishers:
+ - 'xtesting-amd64-recipients'
+ - 'xtesting-arm64-recipients'
+
+- job-template:
+ name: 'xtesting-docker-build-{arch_tag}-{stream}'
+ disabled: '{obj:disabled}'
+ parameters:
+ - xtesting-job-parameters:
+ project: '{project}'
+ branch: '{branch}'
+ slave_label: '{slave_label}'
+ arch_tag: '{arch_tag}'
+ scm:
+ - git-scm
+ builders:
+ - shell: |
+ #!/bin/bash -ex
+ sudo arch={arch_tag} bash ./build.sh
+ exit $?
+
+- job-template:
+ name: 'xtesting-docker-manifest-{stream}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: 'opnfv-build-ubuntu'
+ description: 'Slave label on Jenkins'
+ - string:
+ name: PROJECT
+ default: "{project}"
+ description: "Project name used to enable job conditions"
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: REPO
+ default: "opnfv"
+ description: "Repository name for functest images"
+
+
+ disabled: '{obj:disabled}'
+
+ builders:
+ - shell: |
+ #!/bin/bash -ex
+ case "{stream}" in
+ "master")
+ tag="latest" ;;
+ *)
+ tag="{stream}" ;;
+ esac
+ sudo manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template $REPO/xtesting:ARCH-$tag \
+ --target $REPO/xtesting:$tag
+ exit $?
+
+- parameter:
+ name: xtesting-job-parameters
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: '{slave_label}'
+ description: 'Slave label on Jenkins'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: PUSH_IMAGE
+ default: "true"
+ description: "To enable/disable pushing the image to Dockerhub."
+ - string:
+ name: COMMIT_ID
+ default: ""
+ description: "commit id to make a snapshot docker image"
+ - string:
+ name: GERRIT_REFNAME
+ default: ""
+ description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1"
+ - string:
+ name: DOCKERFILE
+ default: "Dockerfile"
+ description: "Dockerfile to use for creating the image."
+ - string:
+ name: ARCH_TAG
+ default: "{arch_tag}"
+ description: "If set, this value will be added to the docker image tag as a prefix"
+ - string:
+ name: PROJECT
+ default: "{project}"
+ description: "Project name used to enable job conditions"
+ - string:
+ name: REPO
+ default: "opnfv"
+ description: "Repository name for functest images"
+
+# publisher macros
+- publisher:
+ name: 'xtesting-arm64-recipients'
+ publishers:
+ - email:
+ recipients: >
+ cristina.pauna@enea.com
+ alexandru.avadanii@enea.com
+ delia.popescu@enea.com
+
+- publisher:
+ name: 'xtesting-amd64-recipients'
+ publishers:
+ - email:
+ recipients: >
+ jalausuch@suse.com morgan.richomme@orange.com
+ cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
+ juha.kosonen@nokia.com wangwulin@huawei.com
+ valentin.boucher@kontron.com
diff --git a/jjb/global-jjb b/jjb/global-jjb
new file mode 160000
+Subproject 779110b5cd63f3eabb63598a1be79d9b9ba8546
diff --git a/jjb/global/installer-report.sh b/jjb/global/installer-report.sh
index e2fcfd6f6..6cd83f1f1 100755
--- a/jjb/global/installer-report.sh
+++ b/jjb/global/installer-report.sh
@@ -8,18 +8,39 @@
##############################################################################
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": "$NODE_NAME",
+ "job_name": "$JOB_NAME",
+ "build_id": "$BUILD_ID",
+ "scenario": "$DEPLOY_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 || true
+
+# INFO
+# postbuildscript plugin shall always return the original job running status,
+# for the result returned from postbuildscript affects the CI pipeline.
+if [ "$PROVISION_RESULT" == "PASS" ]; then
+ exit 0
+else
+ exit 1
+fi
diff --git a/jjb/global/releng-macros.yml b/jjb/global/releng-macros.yml
index 3433cee5f..205802fab 100644
--- a/jjb/global/releng-macros.yml
+++ b/jjb/global/releng-macros.yml
@@ -40,6 +40,30 @@
default: 'refs/heads/{branch}'
description: "Default refspec needed for manually triggering."
+- parameter:
+ name: testapi-parameter
+ parameters:
+ - string:
+ name: TESTAPI_URL
+ default: 'http://testresults.opnfv.org/test/api/v1'
+ description: "Default TestAPI URL, currently using v1"
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-ha'
+ description: "OPNFV deployment scenario"
+ - string:
+ name: INSTALLER_VERSION
+ default: 'master'
+ description: "Installer release version"
+ - string:
+ name: UPSTREAM_JOB_NAME
+ default: ''
+ description: "Parent job name in Jenkins"
+ - string:
+ name: UPSTREAM_BUILD_ID
+ default: ''
+ description: "Parent job build_id in Jenkins"
+
- property:
name: logrotate-default
properties:
@@ -960,16 +984,18 @@
script-only-if-succeeded: true
builders:
- shell: |
- echo "export PROVISION_RESULT=SUCCEED" >> $WORKSPACE/installer_track.sh
- echo "export INSTALLER={installer}" >> $WORKSPACE/installer_track.sh
+ echo "export PROVISION_RESULT=PASS" >> $WORKSPACE/installer_track.sh
+ echo "export INSTALLER=$INSTALLER_TYPE" >> $WORKSPACE/installer_track.sh
+ echo "export TIMESTAMP_END="\'`date '+%Y-%m-%d %H:%M:%S.%3N'`\' >> $WORKSPACE/installer_track.sh
- shell:
- !include-raw-escape: installer-report.sh
+ !include-raw: installer-report.sh
- postbuildscript:
script-only-if-succeeded: false
script-only-if-failed: true
builders:
- shell: |
echo "export PROVISION_RESULT=FAIL" >> $WORKSPACE/installer_track.sh
- echo "export INSTALLER={installer}" >> $WORKSPACE/installer_track.sh
+ echo "export INSTALLER=$INSTALLER_TYPE" >> $WORKSPACE/installer_track.sh
+ echo "export TIMESTAMP_END="\'`date '+%Y-%m-%d %H:%M:%S.%3N'`\' >> $WORKSPACE/installer_track.sh
- shell:
- !include-raw-escape: installer-report.sh
+ !include-raw: installer-report.sh
diff --git a/jjb/global/slave-params.yml b/jjb/global/slave-params.yml
index 86b369bcd..6171a6abd 100644
--- a/jjb/global/slave-params.yml
+++ b/jjb/global/slave-params.yml
@@ -983,6 +983,7 @@
- 'doctor-fuel-x86_64'
- 'doctor-fuel-aarch64'
- 'doctor-joid-x86_64'
+ - 'doctor-daisy-x86_64'
- 'not-specified'
default-slaves:
- 'not-specified'
diff --git a/jjb/opnfvdocs/project.cfg b/jjb/opnfvdocs/project.cfg
index 0722b4036..598269737 100644
--- a/jjb/opnfvdocs/project.cfg
+++ b/jjb/opnfvdocs/project.cfg
@@ -2,6 +2,7 @@ apex
armband
availability
bottlenecks
+clover
compass4nfv
copper
conductor
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 5c0bb881b..c5bf58391 100644
--- a/jjb/qtip/qtip-validate-jobs.yml
+++ b/jjb/qtip/qtip-validate-jobs.yml
@@ -34,12 +34,18 @@
pod: zte-virtual5
sut: ''
<<: *master
+ - network:
+ installer: apex
+ pod: zte-virtual5
+ sut: ''
+ <<: *master
- compute:
installer: fuel
pod: zte-virtual6
sut: vnf
<<: *master
+
# -------------------------------
# JOB LIST
# -------------------------------
diff --git a/jjb/releng/compass4nfv-docker.yml b/jjb/releng/compass4nfv-docker.yml
index 7f142241c..5fbb37ca2 100644
--- a/jjb/releng/compass4nfv-docker.yml
+++ b/jjb/releng/compass4nfv-docker.yml
@@ -27,6 +27,8 @@
- 'db'
- 'deck'
- 'tasks-base'
+ - 'tasks-k8s'
+ - 'tasks-osa'
# settings for jobs run in multijob phases
build-job-settings: &build-job-settings
@@ -95,6 +97,10 @@
<<: *build-job-settings
- name: 'compass-tasks-build-amd64-{stream}'
<<: *build-job-settings
+ - name: 'compass-tasks-k8s-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-tasks-osa-build-amd64-{stream}'
+ <<: *build-job-settings
publishers:
- 'compass-amd64-recipients'
diff --git a/jjb/releng/opnfv-docker.yml b/jjb/releng/opnfv-docker.yml
index 93b9a9c51..55cbc5f1d 100644
--- a/jjb/releng/opnfv-docker.yml
+++ b/jjb/releng/opnfv-docker.yml
@@ -64,6 +64,11 @@
dockerdir: 'docker/barometer-ves'
<<: *master
<<: *other-receivers
+ - 'barometer-snmp':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-snmp'
+ <<: *master
+ <<: *other-receivers
- 'bottlenecks':
project: 'bottlenecks'
<<: *master
@@ -86,6 +91,11 @@
dockerfile: 'docker/Dockerfile.local'
<<: *master
<<: *other-receivers
+ - 'qtip-nettest':
+ project: 'qtip'
+ dockerdir: 'contrib/nettest'
+ <<: *master
+ <<: *other-receivers
- 'storperf-master':
project: 'storperf'
dockerdir: 'docker/storperf-master'
@@ -171,10 +181,6 @@
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-jobs.yml b/jjb/xci/bifrost-verify-jobs.yml
index 7e0117565..2fb7c2167 100644
--- a/jjb/xci/bifrost-verify-jobs.yml
+++ b/jjb/xci/bifrost-verify-jobs.yml
@@ -162,6 +162,13 @@
recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
# yamllint enable rule:line-length
- email-jenkins-admins-on-failure
+ - postbuildscript:
+ script-only-if-succeeded: false
+ script-only-if-failed: false
+ builders:
+ - shell:
+ !include-raw: ./xci-cleanup.sh
+
# -------------------------------
# trigger macros
# -------------------------------
diff --git a/jjb/xci/osa-periodic-jobs.yml b/jjb/xci/osa-periodic-jobs.yml
index e604a0a03..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
diff --git a/jjb/xci/xci-cleanup.sh b/jjb/xci/xci-cleanup.sh
index ce84830aa..51a863da2 100755
--- a/jjb/xci/xci-cleanup.sh
+++ b/jjb/xci/xci-cleanup.sh
@@ -14,11 +14,15 @@
# what you are doing.
#----------------------------------------------------------------------
+# Need to cover macros with and without parameters
+VM_NAME=$DISTRO
+VM_NAME+=_xci_vm
+
# skip the deployment if the patch doesn't impact the deployment
if [[ "$GERRIT_TOPIC" =~ 'skip-verify' ]]; then
echo "Skipping the deployment!"
exit 0
fi
-sudo virsh destroy ${DISTRO}_xci_vm || true
-sudo virsh undefine ${DISTRO}_xci_vm || true
+sudo virsh destroy $VM_NAME || true
+sudo virsh undefine $VM_NAME || true
diff --git a/jjb/xci/xci-daily-jobs.yml b/jjb/xci/xci-daily-jobs.yml
index a92e49085..11db4e168 100644
--- a/jjb/xci/xci-daily-jobs.yml
+++ b/jjb/xci/xci-daily-jobs.yml
@@ -154,6 +154,12 @@
recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
# yamllint enable rule:line-length
- email-jenkins-admins-on-failure
+ - postbuildscript:
+ script-only-if-succeeded: false
+ script-only-if-failed: false
+ builders:
+ - shell:
+ !include-raw: ./xci-cleanup.sh
- job-template:
name: 'xci-{phase}-{pod}-{distro}-daily-{stream}'
diff --git a/jjb/xci/xci-merge-jobs.yml b/jjb/xci/xci-merge-jobs.yml
index 492348d63..d6442a976 100644
--- a/jjb/xci/xci-merge-jobs.yml
+++ b/jjb/xci/xci-merge-jobs.yml
@@ -2,51 +2,49 @@
- project:
name: 'opnfv-xci-merge'
+ project: releng-xci
# -------------------------------
# branches
# -------------------------------
stream:
- master:
branch: '{stream}'
+ disabled: false
# -------------------------------
# distros
# -------------------------------
distro:
- ubuntu:
disabled: false
+ kill-phase-on: FAILURE
+ abort-all-job: true
- centos:
- disabled: false
+ disabled: true
+ kill-phase-on: NEVER
+ abort-all-job: false
- opensuse:
disabled: false
+ kill-phase-on: FAILURE
+ abort-all-job: true
# -------------------------------
- # type
- # -------------------------------
- type:
- - virtual
- # -------------------------------
- # patch verification phases
+ # postmerge promotion phases
# -------------------------------
phase:
- 'deploy'
- 'healthcheck'
- - 'promote'
- # -------------------------------
- # scenarios
- # -------------------------------
- scenario:
- - 'os-odl-sfc':
- project: sfc
# -------------------------------
# jobs
# -------------------------------
jobs:
- - 'xci-{scenario}-{type}-{distro}-merge-{stream}'
- - 'xci-{phase}-{type}-{distro}-merge-{stream}'
+ - 'xci-merge-virtual-{stream}'
+ - 'xci-merge-promote-virtual-{stream}'
+ - 'xci-merge-{distro}-virtual-{stream}'
+ - 'xci-merge-{distro}-{phase}-virtual-{stream}'
# -------------------------------
# job templates
# -------------------------------
- job-template:
- name: 'xci-{scenario}-{type}-{distro}-merge-{stream}'
+ name: 'xci-merge-virtual-{stream}'
project-type: multijob
@@ -56,22 +54,6 @@
properties:
- logrotate-default
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'xci-verify-{distro}-.*'
- - 'xci-.*-{distro}-merge-.*'
- - 'openstack-bifrost-verify-{distro}-.*'
- - 'xci-osa-verify-{distro}-.*'
- - 'xci-osa-periodic-{distro}-.*'
- - 'xci-(os|k8s).*?-virtual-{distro}-.*'
- block-level: 'NODE'
- - throttle:
- max-per-node: 2
- max-total: 10
- categories:
- - xci-verify-virtual
- option: category
wrappers:
- ssh-agent-wrapper
@@ -80,12 +62,7 @@
- fix-workspace-permissions
scm:
- - git:
- credentials-id: '$SSH_CREDENTIAL_ID'
- url: 'https://gerrit.opnfv.org/gerrit/releng-xci'
- branches:
- - 'origin/master'
- timeout: 15
+ - git-scm-gerrit
triggers:
- gerrit:
@@ -96,7 +73,22 @@
comment-contains-value: 'remerge'
projects:
- project-compare-type: 'ANT'
- project-pattern: '{obj:project}'
+ project-pattern: 'releng-xci'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ disable-strict-forbidden-file-verification: 'false'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'xci/scripts/vm/**'
+ - compare-type: ANT
+ pattern: 'docs/**'
+ - compare-type: ANT
+ pattern: 'prototypes/**'
+ - compare-type: ANT
+ pattern: 'upstream/**'
+ - project-compare-type: 'REG_EXP'
+ project-pattern: 'sfc|sdnvpn'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
@@ -109,14 +101,23 @@
parameters:
- project-parameter:
- project: '{obj:project}'
+ project: $GERRIT_PROJECT
branch: '{branch}'
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
- string:
- name: DEPLOY_SCENARIO
- default: '{scenario}'
+ name: CI_LOOP
+ default: 'merge'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'healthcheck'
+ - string:
+ name: DISTRO
+ default: 'all'
- string:
name: CLEAN_DIB_IMAGES
default: 'true'
@@ -126,53 +127,205 @@
description: 'Git URL to use on this Jenkins Slave'
builders:
+ - 'xci-merge-set-scenario-macro'
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
+ - multijob:
+ name: deploy and test
+ condition: SUCCESSFUL
+ projects:
+ - name: 'xci-merge-opensuse-virtual-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ DISTRO=opensuse
+ CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ GERRIT_PROJECT=$GERRIT_PROJECT
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ node-parameters: false
+ kill-phase-on: FAILURE
+ abort-all-job: true
+ - name: 'xci-merge-ubuntu-virtual-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ DISTRO=ubuntu
+ CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ GERRIT_PROJECT=$GERRIT_PROJECT
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ node-parameters: false
+ kill-phase-on: FAILURE
+ abort-all-job: true
+ - name: 'xci-merge-centos-virtual-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ DISTRO=centos
+ CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ GERRIT_PROJECT=$GERRIT_PROJECT
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ node-parameters: false
+ kill-phase-on: NEVER
+ abort-all-job: false
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - multijob:
+ name: promote
+ condition: SUCCESSFUL
+ projects:
+ - name: 'xci-merge-promote-virtual-{stream}'
+ current-parameters: true
+ predefined-parameters: |
+ GERRIT_PROJECT=$GERRIT_PROJECT
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ node-parameters: true
+ kill-phase-on: NEVER
+ abort-all-job: true
+
+- job-template:
+ name: 'xci-merge-{distro}-virtual-{stream}'
+
+ project-type: multijob
+
+ disabled: '{obj:disabled}'
+
+ concurrent: false
+
+ properties:
+ - logrotate-default
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'xci-verify-{distro}-.*'
+ - 'xci-merge-{distro}-.*'
+ - 'openstack-bifrost-verify-{distro}-.*'
+ - 'xci-osa-verify-{distro}-.*'
+ - 'xci-osa-periodic-{distro}-.*'
+ block-level: 'NODE'
+ - throttle:
+ max-per-node: 1
+ max-total: 3
+ categories:
+ - xci-verify-virtual
+ option: category
+
+ wrappers:
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 240
+ - fix-workspace-permissions
+
+ scm:
+ - git-scm-gerrit
+
+ parameters:
+ - project-parameter:
+ project: $GERRIT_PROJECT
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: 'xci-virtual'
+ - string:
+ name: CI_LOOP
+ default: 'merge'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'healthcheck'
+ - string:
+ name: DISTRO
+ default: '{distro}'
+ - string:
+ name: CLEAN_DIB_IMAGES
+ default: 'true'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+ builders:
+ - 'xci-merge-set-scenario-macro'
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - description-setter:
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- multijob:
name: deploy
condition: SUCCESSFUL
projects:
- - name: 'xci-deploy-{type}-{distro}-merge-{stream}'
+ - name: 'xci-merge-{distro}-deploy-virtual-{stream}'
current-parameters: true
predefined-parameters: |
- PROJECT=$PROJECT
DISTRO={distro}
- DEPLOY_SCENARIO={scenario}
CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+ GERRIT_PROJECT=$GERRIT_PROJECT
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
+ kill-phase-on: '{kill-phase-on}'
+ abort-all-job: '{abort-all-job}'
- multijob:
name: healthcheck
condition: SUCCESSFUL
projects:
- - name: 'xci-healthcheck-{type}-{distro}-merge-{stream}'
+ - name: 'xci-merge-{distro}-healthcheck-virtual-{stream}'
current-parameters: true
predefined-parameters: |
- PROJECT=$PROJECT
DISTRO={distro}
- DEPLOY_SCENARIO={scenario}
CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
- FUNCTEST_MODE=tier
- FUNCTEST_TIER=healthcheck
+ GERRIT_PROJECT=$GERRIT_PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
- kill-phase-on: NEVER
- abort-all-job: true
+ kill-phase-on: '{kill-phase-on}'
+ abort-all-job: '{abort-all-job}'
+
+ publishers:
+ - postbuildscript:
+ script-only-if-succeeded: false
+ script-only-if-failed: false
+ builders:
+ - shell:
+ !include-raw: ./xci-cleanup.sh
- job-template:
- name: 'xci-{phase}-{type}-{distro}-merge-{stream}'
+ name: 'xci-merge-{distro}-{phase}-virtual-{stream}'
disabled: false
- concurrent: true
+ concurrent: false
properties:
- logrotate-default
@@ -188,13 +341,13 @@
parameters:
- string:
name: PROJECT
- default: 'releng-xci'
+ default: $GERRIT_PROJECT
- string:
name: DISTRO
default: 'ubuntu'
- string:
- name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-noha'
+ name: CI_LOOP
+ default: 'merge'
- string:
name: FUNCTEST_MODE
default: 'tier'
@@ -211,40 +364,94 @@
name: OPNFV_RELENG_DEV_PATH
default: $WORKSPACE/
- string:
- name: INSTALLER_TYPE
- default: 'osa'
- - string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
wrappers:
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
- ssh-agent-wrapper
- build-timeout:
timeout: 240
- fix-workspace-permissions
scm:
- - git:
- credentials-id: '$SSH_CREDENTIAL_ID'
- url: 'https://gerrit.opnfv.org/gerrit/releng-xci'
- branches:
- - 'origin/master'
- timeout: 15
+ - git-scm-gerrit
builders:
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- 'xci-merge-{phase}-macro'
+- job-template:
+ name: 'xci-merge-promote-virtual-{stream}'
+
+ disabled: false
+
+ concurrent: false
+
+ properties:
+ - logrotate-default
+
+ parameters:
+ - string:
+ name: PROJECT
+ default: $GERRIT_PROJECT
+ - string:
+ name: CI_LOOP
+ default: 'merge'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'healthcheck'
+ - string:
+ name: DISTRO
+ default: 'all'
+ - string:
+ name: OPNFV_RELENG_DEV_PATH
+ default: $WORKSPACE/
+ - string:
+ name: LOCAL_PROMOTION_METADATA_FILE
+ default: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - string:
+ name: REMOTE_PROMOTION_METADATA_FILE
+ default: "gs://artifacts.opnfv.org/xci/pipeline/merge/$DEPLOY_SCENARIO.properties"
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+ wrappers:
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 240
+ - fix-workspace-permissions
+
+ builders:
+ - description-setter:
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
+ - 'xci-merge-promote-macro'
+
# -------------------------------
# builder macros
# -------------------------------
- builder:
+ name: 'xci-merge-set-scenario-macro'
+ builders:
+ - shell:
+ !include-raw: ./xci-set-scenario.sh
+
+- builder:
name: 'xci-merge-deploy-macro'
builders:
- shell:
!include-raw: ./xci-start-new-vm.sh
+
- shell:
!include-raw: ./xci-start-deployment.sh
@@ -253,8 +460,6 @@
builders:
- shell:
!include-raw: ./xci-run-functest.sh
- - shell:
- !include-raw: ./xci-cleanup.sh
- builder:
name: 'xci-merge-promote-macro'
diff --git a/jjb/xci/xci-promote.sh b/jjb/xci/xci-promote.sh
index 98ad7ff4a..fb7e0e6fa 100755
--- a/jjb/xci/xci-promote.sh
+++ b/jjb/xci/xci-promote.sh
@@ -14,17 +14,33 @@
# what you are doing.
#----------------------------------------------------------------------
+# ensure GERRIT_TOPIC is set
+GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+
# skip the healthcheck if the patch doesn't impact the deployment
if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
echo "Skipping the healthcheck!"
exit 0
fi
-# skip the deployment if the scenario is not supported on this distro
-OPNFV_SCENARIO_REQUIREMENTS=$WORKSPACE/xci/opnfv-scenario-requirements.yml
-if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENTS | grep -q $DISTRO; then
- echo "# SKIPPED: Scenario $DEPLOY_SCENARIO is NOT supported on $DISTRO"
- exit 0
+# fail if promotion metadata file doesn't exist
+if [ ! -f $LOCAL_PROMOTION_METADATA_FILE ]; then
+ echo "Unable to find promotion metadata file $LOCAL_PROMOTION_METADATA_FILE"
+ echo "Skipping promotion!"
+ exit 1
fi
-echo "Hello World!"
+# upload promotion metadata file to OPNFV artifact repo
+echo "Storing promotion metadata as $REMOTE_PROMOTION_METADATA_FILE"
+gsutil cp $LOCAL_PROMOTION_METADATA_FILE $REMOTE_PROMOTION_METADATA_FILE > /dev/null 2>&1
+
+# update the file metadata on gs to prevent the use of cached version of the file
+gsutil -m setmeta -r -h "Cache-Control:private, max-age=0, no-transform" \
+ $REMOTE_PROMOTION_METADATA_FILE > /dev/null 2>&1
+
+# log the metadata to console
+echo "Stored the metadata for $DEPLOY_SCENARIO"
+echo "---------------------------------------------------------------------------------"
+gsutil cat $REMOTE_PROMOTION_METADATA_FILE
+echo "---------------------------------------------------------------------------------"
+echo "Scenario $DEPLOY_SCENARIO has successfully been promoted!"
diff --git a/jjb/xci/xci-run-functest.sh b/jjb/xci/xci-run-functest.sh
index 238a833d0..2e343631b 100755
--- a/jjb/xci/xci-run-functest.sh
+++ b/jjb/xci/xci-run-functest.sh
@@ -7,6 +7,7 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+set -o nounset
#----------------------------------------------------------------------
# This script is used by CI and executed by Jenkins jobs.
@@ -14,12 +15,21 @@
# what you are doing.
#----------------------------------------------------------------------
+# ensure GERRIT_TOPIC is set
+GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+
# skip the healthcheck if the patch doesn't impact the deployment
if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
echo "Skipping the healthcheck!"
exit 0
fi
+# skip the healthcheck if the scenario is Kubernetes scenario
+if [[ "$DEPLOY_SCENARIO" =~ k8 ]]; then
+ echo "Skipping the healthcheck!"
+ exit 0
+fi
+
# if the scenario is external, we need to wipe WORKSPACE to place releng-xci there since
# the project where the scenario is coming from is cloned and the patch checked out to the
# xci/scenarios/$DEPLOY_SCENARIO to be synched on clean VM
@@ -42,3 +52,12 @@ fi
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 "---------------------------------------------------------------------------------"
+# check the log to see if we have any error
+if ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "grep -q 'FAIL' /root/results/functest.log"; then
+ echo "Error: Functest failed!"
+ exit 1
+fi
diff --git a/jjb/xci/xci-set-scenario.sh b/jjb/xci/xci-set-scenario.sh
index 764857ba4..c3012cd88 100755
--- a/jjb/xci/xci-set-scenario.sh
+++ b/jjb/xci/xci-set-scenario.sh
@@ -8,7 +8,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
set -o errexit
-set -o nounset
set -o pipefail
#----------------------------------------------------------------------
@@ -17,64 +16,201 @@ set -o pipefail
# what you are doing.
#----------------------------------------------------------------------
-WORK_DIRECTORY=/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO
-/bin/rm -rf $WORK_DIRECTORY && mkdir -p $WORK_DIRECTORY
+# This function allows developers to specify the impacted scenario by adding
+# the info about installer and scenario into the commit message or using
+# the topic branch names. This results in either skipping the real verification
+# totally or skipping the determining the installer and scenario programmatically.
+# It is important to note that this feature is only available to generic scenarios
+# and only single installer/scenario pair is allowed.
+# The input in commit message should be placed at the end of the commit message body,
+# before the signed-off and change-id lines.
+#
+# Pattern to be searched in Commit Message
+# deploy-scenario:<scenario-name>
+# installer-type:<installer-type>
+# Examples:
+# deploy-scenario:os-odl-nofeature
+# installer-type:osa
+#
+# deploy-scenario:k8-nosdn-nofeature
+# installer-type:kubespray
+#
+# Patterns to be searched in topic branch name
+# skip-verify
+# skip-deployment
+# force-verify
+function override_generic_scenario() {
+ echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
-# ensure GERRIT_TOPIC is set
-GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+ # ensure the metadata we record is consistent for all types of patches including skipped ones
+ # extract releng-xci sha
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
-# skip the healthcheck if the patch doesn't impact the deployment
-if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
- echo "Skipping verify!"
- echo "DEPLOY_SCENARIO=os-nosdn-nofeature" > $WORK_DIRECTORY/scenario.properties
- exit 0
-fi
+ # extract scenario sha which is same as releng-xci sha for generic scenarios
+ SCENARIO_SHA=$XCI_SHA
+
+ # process topic branch names
+ if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment|force-verify ]]; then
+ [[ "$GERRIT_TOPIC" =~ force-verify ]] && echo "Forcing CI verification using default scenario and installer!"
+ [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]] && echo "Skipping verification!"
+ echo "INSTALLER_TYPE=osa" > $WORK_DIRECTORY/scenario.properties
+ echo "DEPLOY_SCENARIO=os-nosdn-nofeature" >> $WORK_DIRECTORY/scenario.properties
+ echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
+ exit 0
+ fi
+
+ # process commit message
+ if [[ "$GERRIT_CHANGE_COMMIT_MESSAGE" =~ "installer-type:" && "$GERRIT_CHANGE_COMMIT_MESSAGE" =~ "deploy-scenario:" ]]; then
+ INSTALLER_TYPE=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | awk '/installer-type:/' RS=" " | cut -d":" -f2)
+ DEPLOY_SCENARIO=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | awk '/deploy-scenario:/' RS=" " | cut -d":" -f2)
+
+ if [[ -z "$INSTALLER_TYPE" || -z "$DEPLOY_SCENARIO" ]]; then
+ echo "Installer type or deploy scenario is not specified. Falling back to programmatically determining them."
+ else
+ echo "Recording the installer '$INSTALLER_TYPE' and scenario '$DEPLOY_SCENARIO' for downstream jobs"
+ echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties
+ echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties
+ echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+ echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
+ exit 0
+ fi
+ else
+ echo "Installer type or deploy scenario is not specified. Falling back to programmatically determining them."
+ fi
+}
-# if the scenario is external, we need to wipe WORKSPACE to place releng-xci there since
-# the project where the scenario is coming from is cloned and the patch checked out to the
-# xci/scenarios/$DEPLOY_SCENARIO to be synched on clean VM
-# apart from that, we need releng-xci stuff in WORKSPACE for things to function correctly on Jenkins.
-# if the change is coming to releng-xci, we don't need to do anything since the patch is checked
-# out to the WORKSPACE anyways
-if [[ $GERRIT_PROJECT != "releng-xci" ]]; then
+# This function determines the impacted generic scenario by processing the
+# change and using diff to see what changed. If changed files belong to a scenario
+# its name gets recorded for deploying and testing the right scenario.
+#
+# Pattern to be searched in Changeset
+# releng-xci/scenarios/<scenario>/<impacted files>: <scenario>
+# releng-xci/xci/installer/osa/<impacted files>: os-nosdn-nofeature
+# releng-xci/xci/installer/kubespray/<impacted files>: k8-nosdn-nofeature
+# the rest: os-nosdn-nofeature
+function determine_generic_scenario() {
+ echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
+
+ # get the changeset
+ cd $WORKSPACE
+ CHANGESET=$(git diff HEAD^..HEAD --name-only)
+ for CHANGED_FILE in $CHANGESET; do
+ case $CHANGED_FILE in
+ *k8-nosdn*|*kubespray*)
+ [[ ${DEPLOY_SCENARIO[@]} =~ "k8-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='k8-nosdn-nofeature'
+ ;;
+ *os-odl*)
+ [[ ${DEPLOY_SCENARIO[@]} =~ "os-odl-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-odl-nofeature'
+ ;;
+ *os-nosdn*|*osa*)
+ [[ ${DEPLOY_SCENARIO[@]} =~ "os-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature'
+ ;;
+ *)
+ [[ ${DEPLOY_SCENARIO[@]} =~ "os-nosdn-nofeature" ]] || DEPLOY_SCENARIO[${#DEPLOY_SCENARIO[@]}]='os-nosdn-nofeature'
+ ;;
+ esac
+ done
+
+ # extract releng-xci sha
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
+
+ # extract scenario sha which is same as releng-xci sha for generic scenarios
+ SCENARIO_SHA=$XCI_SHA
+}
+
+# This function determines the impacted external scenario by processing the Gerrit
+# change and using diff to see what changed. If changed files belong to a scenario
+# its name gets recorded for deploying and testing the right scenario.
+#
+# Pattern
+# <project-repo>/scenarios/<scenario>/<impacted files>: <scenario>
+function determine_external_scenario() {
+ echo "Processing $GERRIT_PROJECT patchset $GERRIT_REFSPEC"
+
+ # remove the clone that is done via jenkins and place releng-xci there so the
+ # things continue functioning properly
cd $HOME && /bin/rm -rf $WORKSPACE
- git clone https://gerrit.opnfv.org/gerrit/releng-xci $WORKSPACE && cd $WORKSPACE
+ git clone -q https://gerrit.opnfv.org/gerrit/releng-xci $WORKSPACE && cd $WORKSPACE
+
+ # fix the permissions so ssh doesn't complain due to having world-readable keyfiles
chmod -R go-rwx $WORKSPACE/xci/scripts/vm
-fi
-# if change is coming to releng-xci, continue as usual until that part is fixed as well
-if [[ $GERRIT_PROJECT == "releng-xci" ]]; then
- # save the scenario name into java properties file to be injected to downstream jobs via envInject
- echo "Recording scenario name for downstream jobs"
- echo "DEPLOY_SCENARIO=os-nosdn-nofeature" > $WORK_DIRECTORY/scenario.properties
- exit 0
-fi
+ # clone the project repo and fetch the patchset to process for further processing
+ git clone -q https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $WORK_DIRECTORY/$GERRIT_PROJECT
+ cd $WORK_DIRECTORY/$GERRIT_PROJECT
+ git fetch -q https://gerrit.opnfv.org/gerrit/$GERRIT_PROJECT $GERRIT_REFSPEC && git checkout -q FETCH_HEAD
+
+ # process the diff to find out what scenario(s) are impacted - there should only be 1
+ DEPLOY_SCENARIO+=$(git diff HEAD^..HEAD --name-only | grep scenarios | awk -F '[/|/]' '{print $2}' | uniq)
+
+ # extract releng-xci sha
+ XCI_SHA=$(cd $WORKSPACE && git rev-parse HEAD)
-# projects develop different scenarios and jobs need to know which scenario got the
-# change under test so the jobs can deploy and test the right scenario.
-# we need to fetch the change and look at the changeset to find out the scenario instead
-# of hardcoding scenario per project.
+ # extract scenario sha
+ SCENARIO_SHA=$(cd $WORK_DIRECTORY/$GERRIT_PROJECT && git rev-parse HEAD)
+}
-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 | awk -F '[/|/]' '{print $2}' | uniq)
+echo "Determining the impacted scenario"
+
+declare -a DEPLOY_SCENARIO
+
+# ensure GERRIT_TOPIC is set
+GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+
+# this directory is where the temporary clones and files are created
+# while extracting the impacted scenario
+WORK_DIRECTORY=/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO
+/bin/rm -rf $WORK_DIRECTORY && mkdir -p $WORK_DIRECTORY
+
+if [[ $GERRIT_PROJECT == "releng-xci" ]]; then
+ override_generic_scenario
+ determine_generic_scenario
+else
+ determine_external_scenario
+fi
# ensure single scenario is impacted
-if [[ $(echo $DEPLOY_SCENARIO | wc -w) != 1 ]]; then
+ if [[ $(IFS=$'\n' echo ${DEPLOY_SCENARIO[@]} | wc -w) != 1 ]]; then
echo "Change impacts multiple scenarios!"
echo "XCI doesn't support testing of changes that impact multiple scenarios currently."
echo "Please split your change into multiple different/dependent changes, each modifying single scenario."
exit 1
fi
-# save the scenario name into java properties file to be injected to downstream jobs via envInject
-echo "Recording scenario name '$DEPLOY_SCENARIO' for downstream jobs"
-echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" > $WORK_DIRECTORY/scenario.properties
+# set the installer
+case ${DEPLOY_SCENARIO[0]} in
+ os-*)
+ INSTALLER_TYPE=osa
+ ;;
+ k8-*)
+ INSTALLER_TYPE=kubespray
+ ;;
+ *)
+ echo "Unable to determine the installer. Exiting!"
+ exit 1
+ ;;
+esac
+
+# save the installer and scenario names into java properties file
+# so they can be injected to downstream jobs via envInject
+echo "Recording the installer '$INSTALLER_TYPE' and scenario '${DEPLOY_SCENARIO[0]}' and SHAs for downstream jobs"
+echo "INSTALLER_TYPE=$INSTALLER_TYPE" > $WORK_DIRECTORY/scenario.properties
+echo "DEPLOY_SCENARIO=$DEPLOY_SCENARIO" >> $WORK_DIRECTORY/scenario.properties
+echo "XCI_SHA=$XCI_SHA" >> $WORK_DIRECTORY/scenario.properties
+echo "SCENARIO_SHA=$SCENARIO_SHA" >> $WORK_DIRECTORY/scenario.properties
+echo "PROJECT_NAME=$GERRIT_PROJECT" >> $WORK_DIRECTORY/scenario.properties
+
+# skip scenario support check if the job is promotion job
+if [[ "$JOB_NAME" =~ (os|k8) ]]; then
+ exit 0
+fi
# skip the deployment if the scenario is not supported on this distro
OPNFV_SCENARIO_REQUIREMENTS=$WORKSPACE/xci/opnfv-scenario-requirements.yml
-if ! sed -n "/^- scenario: $DEPLOY_SCENARIO$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENTS | grep -q $DISTRO; then
- echo "# SKIPPED: Scenario $DEPLOY_SCENARIO is NOT supported on $DISTRO"
+if ! sed -n "/^- scenario: ${DEPLOY_SCENARIO[0]}$/,/^$/p" $OPNFV_SCENARIO_REQUIREMENTS | grep -q $DISTRO; then
+ echo "# SKIPPED: Scenario ${DEPLOY_SCENARIO[0]} is NOT supported on $DISTRO"
exit 0
fi
diff --git a/jjb/xci/xci-start-deployment.sh b/jjb/xci/xci-start-deployment.sh
index 0628829ea..102ca41c3 100755
--- a/jjb/xci/xci-start-deployment.sh
+++ b/jjb/xci/xci-start-deployment.sh
@@ -14,6 +14,9 @@
# what you are doing.
#----------------------------------------------------------------------
+# ensure GERRIT_TOPIC is set
+GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+
# skip the deployment if the patch doesn't impact the deployment
if [[ "$GERRIT_TOPIC" =~ skip-verify|skip-deployment ]]; then
echo "Skipping the deployment!"
diff --git a/jjb/xci/xci-start-new-vm.sh b/jjb/xci/xci-start-new-vm.sh
index d676e2662..7874e6776 100755
--- a/jjb/xci/xci-start-new-vm.sh
+++ b/jjb/xci/xci-start-new-vm.sh
@@ -14,6 +14,9 @@
# what you are doing.
#----------------------------------------------------------------------
+# ensure GERRIT_TOPIC is set
+GERRIT_TOPIC="${GERRIT_TOPIC:-''}"
+
# skip the deployment if the patch doesn't impact the deployment
if [[ "$GERRIT_TOPIC" =~ 'skip-verify' ]]; then
echo "Skipping the deployment!"
@@ -53,6 +56,8 @@ 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 BIFROST_USE_PREBUILT_IMAGES=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/xci/xci-verify-jobs.yml b/jjb/xci/xci-verify-jobs.yml
index c54a1b941..e5c1a9394 100644
--- a/jjb/xci/xci-verify-jobs.yml
+++ b/jjb/xci/xci-verify-jobs.yml
@@ -66,7 +66,7 @@
use-build-blocker: true
blocking-jobs:
- 'xci-verify-{distro}-.*'
- - 'xci-.*-{distro}-merge-.*'
+ - 'xci-merge-{distro}-.*'
- 'openstack-bifrost-verify-{distro}-.*'
- 'xci-osa-verify-{distro}-.*'
- 'xci-osa-periodic-{distro}-.*'
@@ -110,6 +110,12 @@
forbidden-file-paths:
- compare-type: ANT
pattern: 'xci/scripts/vm/**'
+ - compare-type: ANT
+ pattern: 'docs/**'
+ - compare-type: ANT
+ pattern: 'prototypes/**'
+ - compare-type: ANT
+ pattern: 'upstream/**'
- project-compare-type: 'REG_EXP'
project-pattern: 'sfc|sdnvpn'
branches:
@@ -141,6 +147,15 @@
name: CLEAN_DIB_IMAGES
default: 'true'
- string:
+ name: CI_LOOP
+ default: 'verify'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'healthcheck'
+ - string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
@@ -165,6 +180,7 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ CI_LOOP=$CI_LOOP
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -182,12 +198,22 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- FUNCTEST_MODE=tier
- FUNCTEST_TIER=healthcheck
+ CI_LOOP=$CI_LOOP
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
kill-phase-on: NEVER
abort-all-job: true
+ publishers:
+ - postbuildscript:
+ script-only-if-succeeded: false
+ script-only-if-failed: false
+ builders:
+ - shell:
+ !include-raw: ./xci-cleanup.sh
+
+
- job-template:
name: 'xci-verify-{distro}-{phase}-{type}-{stream}'
@@ -214,6 +240,9 @@
name: DISTRO
default: 'ubuntu'
- string:
+ name: CI_LOOP
+ default: 'verify'
+ - string:
name: FUNCTEST_MODE
default: 'tier'
- string:
@@ -229,9 +258,6 @@
name: OPNFV_RELENG_DEV_PATH
default: $WORKSPACE/
- string:
- name: INSTALLER_TYPE
- default: 'osa'
- - string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
@@ -275,5 +301,3 @@
builders:
- shell:
!include-raw: ./xci-run-functest.sh
- - shell:
- !include-raw: ./xci-cleanup.sh
diff --git a/jjb/yardstick/yardstick-daily-jobs.yml b/jjb/yardstick/yardstick-daily-jobs.yml
index 20890fa13..24c7f319b 100644
--- a/jjb/yardstick/yardstick-daily-jobs.yml
+++ b/jjb/yardstick/yardstick-daily-jobs.yml
@@ -262,8 +262,7 @@
- description-setter:
description: "POD: $NODE_NAME"
- 'yardstick-cleanup'
- - 'yardstick-fetch-os-creds'
- - 'yardstick-fetch-k8s-conf'
+ - 'yardstick-fetch-creds'
- 'yardstick-{testsuite}'
- 'yardstick-store-results'
@@ -282,16 +281,23 @@
!include-raw: ./yardstick-daily.sh
- builder:
- name: yardstick-fetch-os-creds
+ name: yardstick-fetch-creds
builders:
- - shell:
- !include-raw: ../../utils/fetch_os_creds.sh
-
-- builder:
- name: yardstick-fetch-k8s-conf
- builders:
- - shell:
- !include-raw: ./yardstick-get-k8s-conf.sh
+ # yamllint disable rule:indentation
+ - conditional-step:
+ condition-kind: regex-match
+ regex: "os-.*"
+ label: '$DEPLOY_SCENARIO'
+ steps:
+ - shell:
+ !include-raw: ../../utils/fetch_os_creds.sh
+ - conditional-step:
+ condition-kind: regex-match
+ regex: "k8-.*"
+ label: '$DEPLOY_SCENARIO'
+ steps:
+ - shell:
+ !include-raw: ./yardstick-get-k8s-conf.sh
- builder:
name: yardstick-store-results
diff --git a/jjb/yardstick/yardstick-get-k8s-conf.sh b/jjb/yardstick/yardstick-get-k8s-conf.sh
index 22a6aa4e6..116d2f0d0 100755
--- a/jjb/yardstick/yardstick-get-k8s-conf.sh
+++ b/jjb/yardstick/yardstick-get-k8s-conf.sh
@@ -7,6 +7,7 @@ if [[ "${DEPLOY_SCENARIO:0:2}" == "k8" ]];then
if [[ ${INSTALLER_TYPE} == 'joid' ]];then
juju scp kubernetes-master/0:config "${dest_path}"
elif [[ ${INSTALLER_TYPE} == 'compass' ]];then
+ echo "Copy admin.conf to ${dest_path}"
docker cp compass-tasks:/opt/admin.conf "${dest_path}"
fi
fi
diff --git a/modules/opnfv/deployment/compass/adapter_container.py b/modules/opnfv/deployment/compass/adapter_container.py
new file mode 100644
index 000000000..1713fe274
--- /dev/null
+++ b/modules/opnfv/deployment/compass/adapter_container.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2018 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+from opnfv.deployment import manager
+from opnfv.utils import opnfv_logger as logger
+from opnfv.utils import ssh_utils
+
+import yaml
+import os
+
+logger = logger.Logger(__name__).getLogger()
+
+
+class ContainerizedCompassAdapter():
+
+ def __init__(self, installer_ip, installer_user, pkey_file):
+
+ self.installer = 'compass'
+ self.installer_ip = installer_ip
+ self.installer_user = installer_user
+ self.pkey_file = pkey_file
+ self.DST_PATH_UC = "/tmp/openstack_user_config.yml"
+ self.nodes = []
+ self.ROLES = {}
+
+ if pkey_file is not None and not os.path.isfile(pkey_file):
+ raise Exception(
+ 'The private key file %s does not exist!' % pkey_file)
+
+ def _find_nodes(self, file):
+ nodes = file['compute_hosts']
+ for compute in nodes:
+ self.ROLES[compute] = 'compute'
+ controllers = file['haproxy_hosts']
+ for controller in controllers:
+ nodes[controller] = controllers[controller]
+ self.ROLES[controller] = 'controller'
+ return nodes
+
+ def _process_nodes(self, raw_nodes):
+ nodes = []
+
+ for node in raw_nodes:
+ name = node
+ ip = raw_nodes[node]['ip']
+ status = 'active'
+ id = None
+ if self.ROLES[node] == 'controller':
+ roles = 'controller'
+ elif self.ROLES[node] == 'compute':
+ roles = 'compute'
+ ssh_client = ssh_utils.get_ssh_client(hostname=ip,
+ username=self.installer_user,
+ pkey_file=self.pkey_file)
+ node = manager.Node(id, ip, name, status, roles, ssh_client)
+ nodes.append(node)
+
+ return nodes
+
+ def get_nodes(self, options=None):
+ try:
+ # if we have retrieved previously all the nodes, don't do it again
+ # This fails the first time when the constructor calls this method
+ # therefore the try/except
+ if len(self.nodes) > 0:
+ return self.nodes
+ except:
+ pass
+
+ with open(self.DST_PATH_UC, 'r') as stream:
+ try:
+ file = yaml.load(stream)
+ raw_nodes = self._find_nodes(file)
+ except yaml.YAMLError as exc:
+ logger.error(exc)
+ self.nodes = self._process_nodes(raw_nodes)
+ return self.nodes
diff --git a/modules/opnfv/deployment/factory.py b/modules/opnfv/deployment/factory.py
index 2788e5eaa..1fd8d447b 100644
--- a/modules/opnfv/deployment/factory.py
+++ b/modules/opnfv/deployment/factory.py
@@ -9,7 +9,7 @@
from opnfv.deployment.apex import adapter as apex_adapter
-from opnfv.deployment.compass import adapter as compass_adapter
+from opnfv.deployment.compass import adapter_container as compass_adapter
from opnfv.deployment.fuel import adapter as fuel_adapter
from opnfv.deployment.osa import adapter as osa_adapter
from opnfv.deployment.daisy import adapter as daisy_adapter
@@ -44,10 +44,10 @@ class Factory(object):
installer_user=installer_user,
installer_pwd=installer_pwd)
elif installer.lower() == "compass":
- return compass_adapter.CompassAdapter(
+ return compass_adapter.ContainerizedCompassAdapter(
installer_ip=installer_ip,
installer_user=installer_user,
- installer_pwd=installer_pwd)
+ pkey_file=pkey_file)
elif installer.lower() == "osa":
return osa_adapter.OSAAdapter(installer_ip=installer_ip,
installer_user=installer_user,
diff --git a/releases/euphrates/armband.yaml b/releases/euphrates/armband.yaml
new file mode 100644
index 000000000..c96b1a3ef
--- /dev/null
+++ b/releases/euphrates/armband.yaml
@@ -0,0 +1,9 @@
+---
+project: armband
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ armband: 26f7f4fffa50452fd6e5cb5c2afbae63449afc00
diff --git a/releases/euphrates/availability.yaml b/releases/euphrates/availability.yaml
new file mode 100644
index 000000000..79f448edc
--- /dev/null
+++ b/releases/euphrates/availability.yaml
@@ -0,0 +1,9 @@
+---
+project: availability
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ availability: 374fe9ba9a1fc9c10eb6fa44a25b177f1e9ad96c
diff --git a/releases/euphrates/bamboo.yaml b/releases/euphrates/bamboo.yaml
new file mode 100644
index 000000000..bbda8b831
--- /dev/null
+++ b/releases/euphrates/bamboo.yaml
@@ -0,0 +1,9 @@
+---
+project: bamboo
+project-type: tools
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ bamboo: 37ed3fde974e656893edbfcee2ad5f0c1b1e2011
diff --git a/releases/euphrates/barometer.yaml b/releases/euphrates/barometer.yaml
new file mode 100644
index 000000000..ac1894ed7
--- /dev/null
+++ b/releases/euphrates/barometer.yaml
@@ -0,0 +1,9 @@
+---
+project: barometer
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ barometer: cb183a3dbe6c1bf0955a0260292709020d2ef338
diff --git a/releases/euphrates/bottlenecks.yaml b/releases/euphrates/bottlenecks.yaml
new file mode 100644
index 000000000..7c6725ad0
--- /dev/null
+++ b/releases/euphrates/bottlenecks.yaml
@@ -0,0 +1,9 @@
+---
+project: bottlenecks
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ bottlenecks: 0cd98516d581bc661772473be92f7e4d5a26036d
diff --git a/releases/euphrates/calipso.yaml b/releases/euphrates/calipso.yaml
new file mode 100644
index 000000000..ebccd6008
--- /dev/null
+++ b/releases/euphrates/calipso.yaml
@@ -0,0 +1,9 @@
+---
+project: calipso
+project-type: tools
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ calipso: c8440f4158805fed1c49d1f06cd71f324eac26a2
diff --git a/releases/euphrates/container4nfv.yaml b/releases/euphrates/container4nfv.yaml
new file mode 100644
index 000000000..ec5dc8e98
--- /dev/null
+++ b/releases/euphrates/container4nfv.yaml
@@ -0,0 +1,9 @@
+---
+project: container4nfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ container4nfv: dbd4804f6353c5ba49af784502654991520e02e6
diff --git a/releases/euphrates/daisy.yaml b/releases/euphrates/daisy.yaml
new file mode 100644
index 000000000..4f3cb1529
--- /dev/null
+++ b/releases/euphrates/daisy.yaml
@@ -0,0 +1,9 @@
+---
+project: daisy
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ daisy: ef7ce0b8c457cf9831d9556572ab13d7d4c660f6
diff --git a/releases/euphrates/doctor.yaml b/releases/euphrates/doctor.yaml
new file mode 100644
index 000000000..6f4499781
--- /dev/null
+++ b/releases/euphrates/doctor.yaml
@@ -0,0 +1,9 @@
+---
+project: doctor
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ doctor: 06980156b3eed6a6e456d3105c70b68386c1dfb7
diff --git a/releases/euphrates/domino.yaml b/releases/euphrates/domino.yaml
new file mode 100644
index 000000000..52bc01ccf
--- /dev/null
+++ b/releases/euphrates/domino.yaml
@@ -0,0 +1,9 @@
+---
+project: domino
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ domino: 5aca24e307f2eb11026a086fbe3db6f0cbeb6699
diff --git a/releases/euphrates/fds.yaml b/releases/euphrates/fds.yaml
new file mode 100644
index 000000000..4377bf98b
--- /dev/null
+++ b/releases/euphrates/fds.yaml
@@ -0,0 +1,9 @@
+---
+project: fds
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ fds: 5eed588472406181f8182731e03eb09e2c20f588
diff --git a/releases/euphrates/fuel.yaml b/releases/euphrates/fuel.yaml
new file mode 100644
index 000000000..91d2304c7
--- /dev/null
+++ b/releases/euphrates/fuel.yaml
@@ -0,0 +1,9 @@
+---
+project: fuel
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ fuel: fe9be64738ff1a1091e7df5b04b391fb15d6abc0
diff --git a/releases/euphrates/functest.yaml b/releases/euphrates/functest.yaml
new file mode 100644
index 000000000..f793771d9
--- /dev/null
+++ b/releases/euphrates/functest.yaml
@@ -0,0 +1,9 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ functest: e556a792b6b0c7275c20c779688f4ffc383b7f2a
diff --git a/releases/euphrates/ipv6.yaml b/releases/euphrates/ipv6.yaml
new file mode 100644
index 000000000..a0b4cbfd6
--- /dev/null
+++ b/releases/euphrates/ipv6.yaml
@@ -0,0 +1,9 @@
+---
+project: ipv6
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ ipv6: 79ddbacd3ee05d8605ebd103042ca9502edb626f
diff --git a/releases/euphrates/joid.yaml b/releases/euphrates/joid.yaml
new file mode 100644
index 000000000..3cbb87d56
--- /dev/null
+++ b/releases/euphrates/joid.yaml
@@ -0,0 +1,9 @@
+---
+project: joid
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ joid: ba3766e175571756f690b24448cb5dfae934ad80
diff --git a/releases/euphrates/kvmfornfv.yaml b/releases/euphrates/kvmfornfv.yaml
new file mode 100644
index 000000000..7e541c4a6
--- /dev/null
+++ b/releases/euphrates/kvmfornfv.yaml
@@ -0,0 +1,9 @@
+---
+project: kvmfornfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ kvmfornfv: 3a36c490d63e834ee9454553a14995be839118e3
diff --git a/releases/euphrates/moon.yaml b/releases/euphrates/moon.yaml
new file mode 100644
index 000000000..4f340468c
--- /dev/null
+++ b/releases/euphrates/moon.yaml
@@ -0,0 +1,9 @@
+---
+project: moon
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ moon: 2c380003fa911fdfad85d2c7164b95160eb54963
diff --git a/releases/euphrates/nfvbench.yaml b/releases/euphrates/nfvbench.yaml
new file mode 100644
index 000000000..f51e87607
--- /dev/null
+++ b/releases/euphrates/nfvbench.yaml
@@ -0,0 +1,9 @@
+---
+project: nfvbench
+project-type: tools
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ nfvbench: cf9c95ccda2f5afbdf79c7debe5fcd88c05eaa6a
diff --git a/releases/euphrates/octopus.yaml b/releases/euphrates/octopus.yaml
new file mode 100644
index 000000000..f4a698db2
--- /dev/null
+++ b/releases/euphrates/octopus.yaml
@@ -0,0 +1,9 @@
+---
+project: octopus
+project-type: infra
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ octopus: 1c1b92913c93cfddb9fee16bc9c15b1873fc4e04
diff --git a/releases/euphrates/opnfvdocs.yaml b/releases/euphrates/opnfvdocs.yaml
new file mode 100644
index 000000000..0ea079642
--- /dev/null
+++ b/releases/euphrates/opnfvdocs.yaml
@@ -0,0 +1,9 @@
+---
+project: opnfvdocs
+project-type: infra
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ opnfvdocs: 18d0ebca65b68e56497c08cc489e4ecc3c649fa9
diff --git a/releases/euphrates/orchestra.yaml b/releases/euphrates/orchestra.yaml
new file mode 100644
index 000000000..b97361e3c
--- /dev/null
+++ b/releases/euphrates/orchestra.yaml
@@ -0,0 +1,9 @@
+---
+project: orchestra
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ orchestra: 1f0d8ed7261f1b202476680b2e3fc2d41b399cc9
diff --git a/releases/euphrates/ovn4nfv.yaml b/releases/euphrates/ovn4nfv.yaml
new file mode 100644
index 000000000..ba605207c
--- /dev/null
+++ b/releases/euphrates/ovn4nfv.yaml
@@ -0,0 +1,9 @@
+---
+project: ovn4nfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ ovn4nfv: 2c6027fb46d1a55f767cc2882d946c794ca5843c
diff --git a/releases/euphrates/ovno.yaml b/releases/euphrates/ovno.yaml
new file mode 100644
index 000000000..39ca54cc0
--- /dev/null
+++ b/releases/euphrates/ovno.yaml
@@ -0,0 +1,9 @@
+---
+project: ovno
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ ovno: f49eab063a13bb89bd90f583bd6d814c3a7d21d2
diff --git a/releases/euphrates/parser.yaml b/releases/euphrates/parser.yaml
new file mode 100644
index 000000000..7eb055e57
--- /dev/null
+++ b/releases/euphrates/parser.yaml
@@ -0,0 +1,9 @@
+---
+project: parser
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ parser: 3447589a78375d4dab41608a3504f56a6e4ac9c9
diff --git a/releases/euphrates/pharos.yaml b/releases/euphrates/pharos.yaml
new file mode 100644
index 000000000..023776261
--- /dev/null
+++ b/releases/euphrates/pharos.yaml
@@ -0,0 +1,12 @@
+---
+project: pharos
+project-type: infra
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ pharos: 1d7a94bf5ab86f28b3183f52644d00801cde815b
+ - name: stable/euphrates
+ location:
+ pharos-tools: d46ab54583a6c20bfa5bea581f512474f488e788
diff --git a/releases/euphrates/promise.yaml b/releases/euphrates/promise.yaml
new file mode 100644
index 000000000..799077f12
--- /dev/null
+++ b/releases/euphrates/promise.yaml
@@ -0,0 +1,9 @@
+---
+project: promise
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ promise: 2ff86a92816faa4d71d2b0e260a5f44ce51d9b2c
diff --git a/releases/euphrates/qtip.yaml b/releases/euphrates/qtip.yaml
new file mode 100644
index 000000000..51c07d937
--- /dev/null
+++ b/releases/euphrates/qtip.yaml
@@ -0,0 +1,9 @@
+---
+project: qtip
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ qtip: 3f929d991ea4ca402aaf4db46752f703771f44ea
diff --git a/releases/euphrates/samplevnf.yaml b/releases/euphrates/samplevnf.yaml
new file mode 100644
index 000000000..33f1a9028
--- /dev/null
+++ b/releases/euphrates/samplevnf.yaml
@@ -0,0 +1,9 @@
+---
+project: samplevnf
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ samplevnf: af6b18166ddbe9331c529256cb71c11e8b280982
diff --git a/releases/euphrates/sdnvpn.yaml b/releases/euphrates/sdnvpn.yaml
new file mode 100644
index 000000000..371fe9a6a
--- /dev/null
+++ b/releases/euphrates/sdnvpn.yaml
@@ -0,0 +1,9 @@
+---
+project: sdnvpn
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ sdnvpn: e66856ba6b9275582aa4fc370d2b9abf48b5381f
diff --git a/releases/euphrates/sfc.yaml b/releases/euphrates/sfc.yaml
new file mode 100644
index 000000000..ebd7a0eec
--- /dev/null
+++ b/releases/euphrates/sfc.yaml
@@ -0,0 +1,9 @@
+---
+project: sfc
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ sfc: 2b785ea6a618b031cde2fd327f33733ab9c352e9
diff --git a/releases/euphrates/snaps.yaml b/releases/euphrates/snaps.yaml
new file mode 100644
index 000000000..9aaa018ef
--- /dev/null
+++ b/releases/euphrates/snaps.yaml
@@ -0,0 +1,9 @@
+---
+project: snaps
+project-type: tools
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ snaps: fd18b6790cd9b59851bce6746cc83f27d3e18e4f
diff --git a/releases/euphrates/storperf.yaml b/releases/euphrates/storperf.yaml
new file mode 100644
index 000000000..c7cf60c4d
--- /dev/null
+++ b/releases/euphrates/storperf.yaml
@@ -0,0 +1,9 @@
+---
+project: storperf
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ storperf: 577bb77e605f78934260d6578bf07fb5071f3354
diff --git a/releases/euphrates/vswitchperf.yaml b/releases/euphrates/vswitchperf.yaml
new file mode 100644
index 000000000..3ae3b08c3
--- /dev/null
+++ b/releases/euphrates/vswitchperf.yaml
@@ -0,0 +1,9 @@
+---
+project: vswitchperf
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ vswitchperf: d126de94bea2e5d0e237dc6a3373fd3d53e3cfa3
diff --git a/releases/euphrates/yardstick.yaml b/releases/euphrates/yardstick.yaml
new file mode 100644
index 000000000..36cf6a5ae
--- /dev/null
+++ b/releases/euphrates/yardstick.yaml
@@ -0,0 +1,9 @@
+---
+project: yardstick
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/euphrates
+ location:
+ yardstick: 3431cd1801023e2ee09b520fc9f7a890677ff7b1
diff --git a/utils/jenkins-jnlp-connect.sh b/utils/jenkins-jnlp-connect.sh
index f7c67694f..0647d3210 100755
--- a/utils/jenkins-jnlp-connect.sh
+++ b/utils/jenkins-jnlp-connect.sh
@@ -11,10 +11,13 @@
#Monit setup script for opnfv jnlp slave connections
test_firewall() {
- echo "testing that the firewall is open for us at build.opnfv.org"
- test=$(echo "blah"| nc -w 4 build.opnfv.org 57387 > /dev/null 2>&1; echo $?)
+jenkins_hostname="${jenkins_hostname:-build.opnfv.org}"
+
+
+ echo "testing that the firewall is open for us at $jenkins_hostname"
+ test=$(echo "blah"| nc -w 4 $jenkins_hostname 57387 > /dev/null 2>&1; echo $?)
if [[ $test == 0 ]]; then
- echo "Firewall is open for us at build.opnfv.org"
+ echo "Firewall is open for us at $jenkins_hostname"
exit 0
else
cat << EOF
@@ -84,8 +87,14 @@ main () {
if [ -d /etc/monit/conf.d ]; then
monitconfdir="/etc/monit/conf.d/"
+ monitconfig="/etc/monit/monitrc"
+ #add start delay
+ sed -i '/^#.* delay /s/^#//' "$monitconfig"
elif [ -d /etc/monit.d ]; then
monitconfdir="/etc/monit.d"
+ monitconfig="/etc/monitrc"
+ #add start delay
+ sed -i '/^#.* delay /s/^#//' "$monitconfig"
else
echo "Could not determine the location of the monit configuration file."
echo "Make sure monit is installed."
@@ -103,7 +112,7 @@ if does not exist then exec "$mkdir -p /var/run/$jenkinsuser"
if failed uid $jenkinsuser then exec "$chown $jenkinsuser /var/run/$jenkinsuser"
if failed gid $jenkinsuser then exec "$chown :$jenkinsuser /var/run/$jenkinsuser"
-check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid every 2 cycles
+check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
start program = "/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds"
stop program = "/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'"
depends on jenkins_piddir
@@ -118,7 +127,7 @@ if does not exist then exec \"$mkdir -p /var/run/$jenkinsuser\"
if failed uid $jenkinsuser then exec \"$chown $jenkinsuser /var/run/$jenkinsuser\"
if failed gid $jenkinsuser then exec \"$chown :$jenkinsuser /var/run/$jenkinsuser\"
-check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid every 2 cycles
+check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
start program = \"/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds\"
stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"
depends on jenkins_piddir\
@@ -132,7 +141,7 @@ depends on jenkins_piddir\
fi
if [[ $started_monit == "true" ]]; then
- wget --timestamping https://build.opnfv.org/ci/jnlpJars/slave.jar && true
+ wget --timestamping https://"$jenkins_hostname"/jnlpJars/slave.jar && true
chown $jenkinsuser:$jenkinsuser slave.jar
if [[ -f /var/run/$jenkinsuser/jenkins_jnlp_pid ]]; then
@@ -176,6 +185,7 @@ usage: $0 [OPTIONS]
-u set jenkins user
-n set slave name
-s set secret key
+ -l set host, default is build.opnfv.org/ci
-t test the connection string by connecting without monit
-f test firewall
@@ -190,13 +200,14 @@ if [[ -z "$@" ]]; then
usage
fi
-while getopts "j:u:n:s:htf" OPTION
+while getopts "j:u:n:s:l:htf" OPTION
do
case $OPTION in
j ) jenkinshome="$OPTARG" ;;
u ) jenkinsuser="$OPTARG" ;;
n ) slave_name="$OPTARG" ;;
s ) slave_secret="$OPTARG";;
+ l ) jenkins_hostname="$OPTARG" ;;
h ) usage ;;
t ) started_monit=true
skip_monit=true
@@ -206,6 +217,6 @@ do
esac
done
-connectionstring="java -jar slave.jar -jnlpUrl https://build.opnfv.org/ci/computer/"$slave_name"/slave-agent.jnlp -secret "$slave_secret" -noCertificateCheck "
-
+jenkins_hostname="${jenkins_hostname:-build.opnfv.org/ci}"
+connectionstring="java -jar slave.jar -jnlpUrl https://"$jenkins_hostname"/computer/"$slave_name"/slave-agent.jnlp -secret "$slave_secret" -noCertificateCheck "
main "$@"