summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules2
-rw-r--r--INFO31
-rw-r--r--INFO.yaml9
-rw-r--r--docs/ci/index.rst1
-rw-r--r--docs/ci/resources.rst84
-rw-r--r--docs/ci/tables/ci-baremetal-servers.rst143
-rw-r--r--docs/ci/tables/ci-build-servers.rst48
-rw-r--r--docs/ci/tables/ci-labels.rst13
-rw-r--r--docs/ci/tables/ci-virtual-servers.rst164
-rw-r--r--docs/ci/tables/none-ci-servers.rst58
-rw-r--r--docs/infra/index.rst2
-rw-r--r--docs/infra/jenkins/connect-to-jenkins.rst26
-rw-r--r--docs/infra/jenkins/jjb-usage.rst6
-rw-r--r--docs/release/index.rst1
m---------global-jjb0
-rw-r--r--jjb-sandbox/releng/releng-sandbox-jobs.yml61
-rwxr-xr-xjjb-sandbox/releng/verify-sandbox-jobs.sh21
-rwxr-xr-xjjb/3rd_party_ci/detect-snapshot.sh30
-rwxr-xr-xjjb/3rd_party_ci/download-netvirt-artifact.sh25
-rwxr-xr-xjjb/3rd_party_ci/install-netvirt.sh5
-rw-r--r--jjb/3rd_party_ci/odl-netvirt.yaml86
-rwxr-xr-xjjb/apex/apex-build.sh14
-rwxr-xr-xjjb/apex/apex-deploy.sh85
-rwxr-xr-xjjb/apex/apex-download-artifact.sh11
-rwxr-xr-xjjb/apex/apex-fetch-snap-info.sh46
-rw-r--r--jjb/apex/apex-functest-scenario.sh18
-rwxr-xr-xjjb/apex/apex-iso-verify.sh4
-rw-r--r--jjb/apex/apex-jjb-renderer.py4
-rw-r--r--jjb/apex/apex-project-jobs.yaml7
-rw-r--r--jjb/apex/apex-rtd-jobs.yaml20
-rw-r--r--jjb/apex/apex-snapshot-create.sh57
-rw-r--r--jjb/apex/apex-snapshot-deploy.sh40
-rwxr-xr-xjjb/apex/apex-upload-artifact.sh23
-rw-r--r--jjb/apex/apex-verify-jobs.yaml41
-rw-r--r--jjb/apex/apex.yaml689
-rw-r--r--jjb/apex/apex.yaml.j2393
-rw-r--r--jjb/apex/scenarios.yaml.hidden44
-rw-r--r--jjb/armband/armband-ci-jobs.yaml209
-rw-r--r--jjb/armband/armband-rtd-jobs.yaml20
-rw-r--r--jjb/armband/armband-verify-jobs.yaml128
-rw-r--r--jjb/auto/auto-rtd-jobs.yaml20
-rw-r--r--jjb/auto/auto.yaml217
-rw-r--r--jjb/availability/availability-rtd-jobs.yaml21
-rw-r--r--jjb/barometer/barometer-rtd-jobs.yaml20
-rw-r--r--jjb/barometer/barometer.yaml6
-rw-r--r--jjb/bottlenecks/bottlenecks-ci-jobs.yaml9
-rw-r--r--jjb/bottlenecks/bottlenecks-project-jobs.yaml9
-rw-r--r--jjb/bottlenecks/bottlenecks-rtd-jobs.yaml21
-rw-r--r--jjb/bottlenecks/bottlenecks-run-suite.sh45
-rw-r--r--jjb/calipso/calipso-rtd-jobs.yaml13
-rw-r--r--jjb/ci_gate_security/opnfv-ci-gate-security.yaml2
-rw-r--r--jjb/clover/clover-project.yaml8
-rw-r--r--jjb/clover/clover-rtd-jobs.yaml21
-rw-r--r--jjb/compass4nfv/compass-ci-jobs.yaml180
-rw-r--r--jjb/compass4nfv/compass-deploy.sh2
-rw-r--r--jjb/compass4nfv/compass-dovetail-jobs.yaml4
-rw-r--r--jjb/compass4nfv/compass-project-jobs.yaml4
-rw-r--r--jjb/compass4nfv/compass-verify-jobs.yaml23
-rw-r--r--jjb/compass4nfv/compass4nfv-rtd-jobs.yaml21
-rwxr-xr-xjjb/container4nfv/arm64/compass-build.sh8
-rwxr-xr-xjjb/container4nfv/arm64/compass-deploy.sh4
-rwxr-xr-xjjb/container4nfv/arm64/deploy-cni.sh17
-rw-r--r--jjb/container4nfv/container4nfv-arm64.yaml110
-rw-r--r--jjb/container4nfv/container4nfv-project.yaml4
-rw-r--r--jjb/container4nfv/container4nfv-rtd-jobs.yaml21
-rw-r--r--jjb/copper/copper-rtd-jobs.yaml13
-rw-r--r--jjb/cperf/cirros-upload.yaml.ansible39
-rw-r--r--jjb/cperf/cperf-ci-jobs.yaml152
-rwxr-xr-xjjb/cperf/cperf-prepare-robot.sh32
-rwxr-xr-xjjb/cperf/cperf-robot-netvirt-csit.sh188
-rw-r--r--jjb/cperf/cperf-upload-logs-csit.sh12
-rw-r--r--jjb/cperf/csit-clean.yaml.ansible11
-rw-r--r--jjb/cperf/parse-node-yaml.py71
-rw-r--r--jjb/daisy4nfv/daisy-daily-jobs.yaml4
-rwxr-xr-xjjb/daisy4nfv/daisy-deploy.sh2
-rw-r--r--jjb/daisy4nfv/daisy-project-jobs.yaml6
-rw-r--r--jjb/daisy4nfv/daisy-rtd-jobs.yaml12
-rw-r--r--jjb/daisy4nfv/daisy4nfv-merge-jobs.yaml4
-rw-r--r--jjb/daisy4nfv/daisy4nfv-verify-jobs.yaml4
-rwxr-xr-xjjb/doctor/doctor-env-presetup.sh62
-rw-r--r--jjb/doctor/doctor-rtd-jobs.yaml21
-rw-r--r--jjb/doctor/doctor.yaml223
-rw-r--r--jjb/domino/domino-rtd-jobs.yaml13
-rw-r--r--jjb/dovetail-webportal/dovetail-webportal-project-jobs.yaml102
-rw-r--r--jjb/dovetail/dovetail-ci-jobs.yaml123
-rw-r--r--jjb/dovetail/dovetail-rtd-jobs.yaml12
-rwxr-xr-xjjb/dovetail/dovetail-run.sh319
-rw-r--r--jjb/edgecloud/edgecloud-rtd-jobs.yaml20
-rw-r--r--jjb/escalator/escalator-rtd-jobs.yaml13
-rw-r--r--jjb/fds/fds-rtd-jobs.yaml12
-rw-r--r--jjb/fuel/fuel-daily-jobs.yaml403
-rwxr-xr-xjjb/fuel/fuel-deploy.sh81
-rw-r--r--jjb/fuel/fuel-docker-jobs.yaml204
-rwxr-xr-xjjb/fuel/fuel-download-artifact.sh63
-rwxr-xr-xjjb/fuel/fuel-lab-reconfig.sh80
-rw-r--r--jjb/fuel/fuel-project-jobs.yaml80
-rw-r--r--jjb/fuel/fuel-rtd-jobs.yaml20
-rwxr-xr-xjjb/fuel/fuel-set-scenario.sh54
-rw-r--r--jjb/fuel/fuel-verify-jobs.yaml178
-rw-r--r--jjb/fuel/fuel-weekly-jobs.yaml191
-rwxr-xr-xjjb/functest/functest-alpine.sh178
-rw-r--r--jjb/functest/functest-daily-jobs.yaml123
-rw-r--r--jjb/functest/functest-docker.yaml44
-rwxr-xr-xjjb/functest/functest-env-presetup.sh43
-rw-r--r--jjb/functest/functest-kubernetes-docker.yaml113
-rw-r--r--jjb/functest/functest-kubernetes-project-jobs.yaml8
-rw-r--r--jjb/functest/functest-project-jobs.yaml10
-rw-r--r--jjb/functest/functest-rtd-jobs.yaml21
-rw-r--r--jjb/functest/functest-virtual.yaml353
-rw-r--r--jjb/functest/xtesting-docker.yaml10
-rw-r--r--jjb/functest/xtesting-project-jobs.yaml8
m---------jjb/global-jjb0
l---------jjb/global-jjb/jjb1
l---------jjb/global-jjb/shell1
-rw-r--r--jjb/global/basic-jobs.yaml2
-rw-r--r--jjb/global/releng-defaults.yaml7
-rw-r--r--jjb/global/releng-macros.yaml14
-rw-r--r--jjb/global/slave-params.yaml197
-rw-r--r--jjb/ipv6/ipv6-rtd-jobs.yaml20
-rw-r--r--jjb/joid/joid-daily-jobs.yaml8
-rw-r--r--jjb/joid/joid-rtd-jobs.yaml12
-rw-r--r--jjb/joid/joid-verify-jobs.yaml8
-rw-r--r--jjb/kvmfornfv/kvmfornfv-rtd-jobs.yaml13
-rw-r--r--jjb/moon/moon-rtd-jobs.yaml13
-rw-r--r--jjb/multisite/multisite-rtd-jobs.yaml12
-rw-r--r--jjb/netready/netready-rtd-jobs.yaml13
-rw-r--r--jjb/nfvbench/nfvbench-rtd-jobs.yaml20
-rw-r--r--jjb/nfvbench/nfvbench.yaml2
-rw-r--r--jjb/octopus/octopus-rtd-jobs.yaml13
-rw-r--r--jjb/onosfw/onosfw-rtd-jobs.yaml13
-rwxr-xr-xjjb/openci/create-ane.sh26
-rwxr-xr-xjjb/openci/create-ape.sh47
-rwxr-xr-xjjb/openci/create-cde.sh36
-rwxr-xr-xjjb/openci/create-clme.sh37
-rw-r--r--jjb/openci/openci-odl-daily-jobs.yaml24
-rw-r--r--jjb/openci/openci-onap-daily-jobs.yaml24
-rw-r--r--jjb/openci/openci-opnfv-daily-jobs.yaml70
-rw-r--r--jjb/opera/opera-rtd-jobs.yaml13
-rw-r--r--jjb/opnfvdocs/docs-rtd.yaml21
-rw-r--r--jjb/opnfvdocs/opnfvdocs.yaml4
-rw-r--r--jjb/opnfvtsc/opnfvtsc-rtd-jobs.yaml13
-rw-r--r--jjb/orchestra/orchestra-daily-jobs.yaml2
-rw-r--r--jjb/orchestra/orchestra-rtd-jobs.yaml13
-rw-r--r--jjb/ovn4nfv/golang-make-test.sh25
-rw-r--r--jjb/ovn4nfv/ovn4nfv-daily-jobs.yaml2
-rw-r--r--jjb/ovn4nfv/ovn4nfv-k8s-plugins-project-jobs.yaml109
-rw-r--r--jjb/ovn4nfv/ovn4nfv-project-jobs.yaml6
-rw-r--r--jjb/ovn4nfv/ovn4nfv-rtd-jobs.yaml20
-rw-r--r--jjb/ovno/ovno-rtd-jobs.yaml13
-rw-r--r--jjb/ovsnfv/ovsnfv-rtd-jobs.yaml13
-rw-r--r--jjb/parser/parser-rtd-jobs.yaml12
-rw-r--r--jjb/pharos/pharos-rtd-jobs.yaml12
-rw-r--r--jjb/pharos/pharos-tools.yml51
-rw-r--r--jjb/pharos/pharos.yaml77
-rw-r--r--jjb/pharos/shell/backup-dashboard.sh28
-rw-r--r--jjb/pharos/shell/deploy-dashboard.sh19
-rw-r--r--jjb/promise/promise-rtd-jobs.yaml20
-rw-r--r--jjb/qtip/qtip-experimental-jobs.yaml2
-rw-r--r--jjb/qtip/qtip-rtd-jobs.yaml13
-rw-r--r--jjb/qtip/qtip-validate-jobs.yaml9
-rw-r--r--jjb/releng/compass4nfv-docker.yaml101
-rw-r--r--jjb/releng/opnfv-docker-arm.yaml16
-rw-r--r--jjb/releng/opnfv-docker.sh30
-rw-r--r--jjb/releng/opnfv-docker.yaml160
-rw-r--r--jjb/releng/opnfv-repo-archiver.sh2
-rw-r--r--jjb/releng/opnfv-utils.yaml10
-rw-r--r--jjb/releng/releng-ci-jobs.yaml15
-rw-r--r--jjb/releng/releng-release-create-branch.sh15
-rw-r--r--jjb/releng/releng-release-create-venv.sh (renamed from jjb/releng/releng-release-verify.sh)23
-rw-r--r--jjb/releng/releng-release-jobs.yaml34
-rw-r--r--jjb/releng/releng-release-tagging.sh70
-rw-r--r--jjb/releng/releng-rtd-jobs.yaml16
-rw-r--r--jjb/releng/testresults-automate.yaml2
-rw-r--r--jjb/samplevnf/samplevnf-rtd-jobs.yaml13
-rw-r--r--jjb/sdnvpn/sdnvpn-rtd-jobs.yaml20
-rw-r--r--jjb/securedlab/check-jinja2.yaml85
-rw-r--r--jjb/sfc/sfc-project-jobs.yaml45
-rw-r--r--jjb/sfc/sfc-rtd-jobs.yaml20
-rw-r--r--jjb/snaps/snaps-rtd-jobs.yaml12
-rw-r--r--jjb/stor4nfv/stor4nfv-rtd-jobs.yaml20
-rw-r--r--jjb/storperf/storperf-daily-jobs.yaml6
-rw-r--r--jjb/storperf/storperf-rtd-jobs.yaml12
-rw-r--r--jjb/storperf/storperf-verify-jobs.yaml2
-rw-r--r--jjb/storperf/storperf.yaml2
-rw-r--r--jjb/ves/ves-rtd-jobs.yaml13
-rw-r--r--jjb/vnf_forwarding_graph/vnf-forwarding-graph-rtd-jobs.yaml13
-rw-r--r--jjb/vswitchperf/vswitchperf-rtd-jobs.yaml21
-rw-r--r--jjb/vswitchperf/vswitchperf.yaml12
-rw-r--r--jjb/xci/bifrost-periodic-jobs.yaml4
-rw-r--r--jjb/xci/bifrost-verify-jobs.yaml4
-rw-r--r--jjb/xci/osa-periodic-jobs.yaml6
-rw-r--r--jjb/xci/xci-daily-jobs.yaml323
-rw-r--r--jjb/xci/xci-merge-jobs.yaml20
-rw-r--r--jjb/xci/xci-rtd-jobs.yaml13
-rwxr-xr-xjjb/xci/xci-run-functest.sh12
-rwxr-xr-xjjb/xci/xci-set-scenario.sh4
-rw-r--r--jjb/xci/xci-verify-jobs.yaml28
-rw-r--r--jjb/yardstick/yardstick-daily-jobs.yaml51
-rwxr-xr-xjjb/yardstick/yardstick-daily.sh4
-rw-r--r--jjb/yardstick/yardstick-project-jobs.yaml10
-rw-r--r--jjb/yardstick/yardstick-rtd-jobs.yaml20
-rw-r--r--modules/opnfv/deployment/example.py10
-rw-r--r--modules/opnfv/deployment/factory.py2
-rw-r--r--modules/opnfv/deployment/fuel/adapter.py230
-rw-r--r--modules/opnfv/deployment/manager.py6
-rw-r--r--modules/opnfv/utils/Credentials.py11
-rw-r--r--modules/opnfv/utils/ssh_utils.py3
-rw-r--r--modules/requirements.txt1
-rw-r--r--releases/fraser/apex.yaml24
-rw-r--r--releases/fraser/armband.yaml (renamed from releases/fraser/armband.yml)9
-rw-r--r--releases/fraser/auto.yaml12
-rw-r--r--releases/fraser/availability.yaml4
-rw-r--r--releases/fraser/barometer.yaml4
-rw-r--r--releases/fraser/bottlenecks.yaml6
-rw-r--r--releases/fraser/calipso.yaml5
-rw-r--r--releases/fraser/clover.yaml7
-rw-r--r--releases/fraser/compass4nfv.yaml14
-rw-r--r--releases/fraser/container4nfv.yaml3
-rw-r--r--releases/fraser/doctor.yaml8
-rw-r--r--releases/fraser/fds.yaml8
-rw-r--r--releases/fraser/fuel.yaml9
-rw-r--r--releases/fraser/functest.yaml12
-rw-r--r--releases/fraser/ipv6.yaml8
-rw-r--r--releases/fraser/joid.yaml4
-rw-r--r--releases/fraser/nfvbench.yaml3
-rw-r--r--releases/fraser/opnfvdocs.yaml3
-rw-r--r--releases/fraser/ovn4nfv.yaml3
-rw-r--r--releases/fraser/samplevnf.yaml7
-rw-r--r--releases/fraser/sdnvpn.yaml6
-rw-r--r--releases/fraser/sfc.yaml6
-rw-r--r--releases/fraser/snaps.yaml6
-rw-r--r--releases/fraser/stor4nfv.yaml3
-rw-r--r--releases/fraser/storperf.yaml6
-rw-r--r--releases/fraser/vswitchperf.yaml6
-rw-r--r--releases/fraser/yardstick.yaml9
-rw-r--r--releases/gambia/apex.yaml18
-rw-r--r--releases/gambia/armband.yaml24
-rw-r--r--releases/gambia/auto.yaml9
-rw-r--r--releases/gambia/availability.yaml9
-rw-r--r--releases/gambia/barometer.yaml9
-rw-r--r--releases/gambia/bottlenecks.yaml9
-rw-r--r--releases/gambia/clover.yaml16
-rw-r--r--releases/gambia/compass4nfv.yaml12
-rw-r--r--releases/gambia/container4nfv.yaml9
-rw-r--r--releases/gambia/doctor.yaml25
-rw-r--r--releases/gambia/edgecloud.yaml9
-rw-r--r--releases/gambia/fuel.yaml24
-rw-r--r--releases/gambia/functest.yaml23
-rw-r--r--releases/gambia/ipv6.yaml17
-rw-r--r--releases/gambia/nfvbench.yaml9
-rw-r--r--releases/gambia/opnfvdocs.yaml9
-rw-r--r--releases/gambia/ovn4nfv.yaml9
-rw-r--r--releases/gambia/samplevnf.yaml16
-rw-r--r--releases/gambia/sandbox.yaml9
-rw-r--r--releases/gambia/sdnvpn.yaml9
-rw-r--r--releases/gambia/sfc.yaml11
-rw-r--r--releases/gambia/stor4nfv.yaml9
-rw-r--r--releases/gambia/storperf.yaml9
-rw-r--r--releases/gambia/vswitchperf.yaml9
-rw-r--r--releases/gambia/yardstick.yaml16
-rw-r--r--releases/hunter/functest.yaml23
-rw-r--r--releases/scripts/create_branch.py143
-rwxr-xr-xreleases/scripts/release-status.sh25
-rw-r--r--releases/scripts/repos.py121
-rw-r--r--tox.ini4
-rwxr-xr-xutils/artifacts.opnfv.org.sh8
-rw-r--r--utils/build-server-ansible/main.yml9
-rw-r--r--utils/build-server-ansible/vars/CentOS.yml22
-rw-r--r--utils/build-server-ansible/vars/Ubuntu.yml71
-rw-r--r--utils/build-server-ansible/vars/defaults.yml4
-rwxr-xr-xutils/fetch_os_creds.sh41
-rwxr-xr-xutils/gpg_import_key.sh14
-rw-r--r--utils/push-test-logs.sh16
274 files changed, 8029 insertions, 2892 deletions
diff --git a/.gitignore b/.gitignore
index 7790d4615..9ee8c53da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
*~
.*.sw?
+*.swp
/docs_build/
/docs_output/
/releng/
diff --git a/.gitmodules b/.gitmodules
index 07b28be4b..9f7b77825 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "jjb/global-jjb"]
- path = jjb/global-jjb
+ path = global-jjb
url = https://github.com/lfit/releng-global-jjb
diff --git a/INFO b/INFO
deleted file mode 100644
index d9051abdc..000000000
--- a/INFO
+++ /dev/null
@@ -1,31 +0,0 @@
-Project: Release Engineering (Releng)
-Project Creation Date: July 14, 2015
-Project Category: Integration & Testing
-Lifecycle State: Incubation
-Primary Contact: Fatih Degirmenci
-Project Lead: Fatih Degirmenci
-Jira Project Name: Release Engineering
-Jira Project Prefix: RELENG
-Mailing list tag: [releng]
-IRC: Server:freenode.net Channel:#opnfv-octopus
-Repository: releng
-Other Repositories: releng-xci, releng-testresults
-
-Committers:
-Fatih Degirmenci (Ericsson, fatih.degirmenci@ericsson.com)
-Aric Gardner (Linux Foundation, agardner@linuxfoundation.org)
-Tim Rozet (Red Hat, trozet@redhat.com)
-Morgan Richomme (Orange, morgan.richomme@orange.com)
-Jose Lausuch (Ericsson, jose.lausuch@ericsson.com)
-Ryota Mibu (NEC, r-mibu@cq.jp.nec.com)
-Mei Mei (Huawei, meimei@huawei.com)
-Trevor Bramwell (Linux Foundation, tbramwell@linuxfoundation.org)
-Serena Feng (ZTE, feng.xiaowei@zte.com.cn)
-Yolanda Robla Mota (Red Hat, yroblamo@redhat.com)
-Markos Chandras (SUSE, mchandras@suse.de)
-Luke Hinds (Red Hat, lhinds@redhat.com)
-
-Link to TSC approval of the project: http://ircbot.wl.linuxfoundation.org/meetings/opnfv-meeting/2015/opnfv-meeting.2015-07-14-14.00.html
-Link to TSC voting for removal of Victor Laza as committer: http://meetbot.opnfv.org/meetings/opnfv-meeting/2016/opnfv-meeting.2016-02-16-14.59.html
-Link to nomination and acceptance of Mei Mei as committer: http://lists.opnfv.org/pipermail/opnfv-tsc/2016-March/002228.html
-Links to nomination and accceptance of Trevor Bramwell as committer: http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-July/011659.html and http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-July/011714.html
diff --git a/INFO.yaml b/INFO.yaml
index dae36c9b4..d265be37c 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -93,6 +93,15 @@ committers:
email: 'lhinds@redhat.com'
id: 'lukehinds'
timezone: 'Europe/London'
+ - name: 'Cédric Ollivier'
+ email: 'cedric.ollivier@orange.com'
+ company: 'orange'
+ id: 'ollivier'
+ timezone: 'Europe/Paris'
+ - name: 'Alexandru Avadanii'
+ email: 'Alexandru.Avadanii@enea.com'
+ company: 'enea.com'
+ id: 'AlexandruAvadanii'
tsc:
approval: 'http://ircbot.wl.linuxfoundation.org/meetings/opnfv-meeting/2015/opnfv-meeting.2015-07-14-14.00.html'
changes:
diff --git a/docs/ci/index.rst b/docs/ci/index.rst
index da6fc7de1..08f23ac2f 100644
--- a/docs/ci/index.rst
+++ b/docs/ci/index.rst
@@ -11,7 +11,6 @@ OPNFV CI
TBD
.. toctree::
- :numbered:
:maxdepth: 2
user-guide
diff --git a/docs/ci/resources.rst b/docs/ci/resources.rst
index 572852c48..b4efe9704 100644
--- a/docs/ci/resources.rst
+++ b/docs/ci/resources.rst
@@ -13,49 +13,81 @@ verification needs. Each resource must meet a set of criteria in order
to be part of CI for an OPNFV release. There are three types of
resources:
- - Baremetal PODs (PODs)
- - Virtual PODs (vPODs)
- - Build Servers
+- Baremetal PODs (PODs)
+- Virtual PODs (vPODs)
+- Build Servers
+
+
+.. _ci-resources-baremetal-pods:
---------------
Baremetal PODs
--------------
-TBD
+Baremetal PODs are used to deploy OPNFV on to baremetal hardware through
+one of the installer projects. They enable the full range of scenarios
+to be deployed and tested.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Baremetal PODs Requirements
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**Requirements**
In order of a POD to be considered CI-Ready the following requirements
must be met:
- #. Pharos Compliant and has a PDF
- #. Connected to Jenkins
- #. 24/7 Uptime
- #. No Development
- #. No manual intervention
+#. Pharos Compliant and has a PDF
+#. Connected to Jenkins
+#. 24/7 Uptime
+#. No Development
+#. No manual intervention
-------------
-Virtual PODS
+.. include:: tables/ci-baremetal-servers.rst
+
+
+.. _ci-resources-virtual-pods:
+
+Virtual PODs
------------
-TBD
+Virtual PODs are used to deploy OPNFV in a virtualized environment
+generally on top of KVM through libvirt.
-~~~~~~~~~~~~
-Requirements
-~~~~~~~~~~~~
+**Requirements**
-TBD
+#. Have required virtualization packages installed
+#. Meet the Pharos resource specification for virtual PODs
+#. Connected to Jenkins
+#. 24/7 Uptime
+
+.. include:: tables/ci-virtual-servers.rst
+
+.. _ci-resources-build-servers:
--------------
Build Servers
-------------
-TBD
+Build servers are used to build project, run basic verifications (such
+as unit tests and linting), and generate documentation.
+
+**Requirements**
+
+#. Have required `packages_` installed
+#. 24/7 Uptime
+#. Connected to Jenkins
+
+.. include:: tables/ci-build-servers.rst
+
+.. _dev-resources:
+
+=====================
+Development Resources
+=====================
+
+.. include:: tables/none-ci-servers.rst
+
+.. _ci-lables:
+
+===================
+CI Resources Labels
+===================
-~~~~~~~~~~~~
-Requirements
-~~~~~~~~~~~~
+.. include:: tables/ci-labels.rst
-TBD
+.. _packages: https://wiki.opnfv.org/display/INF/Continuous+Integration#ContinuousIntegration-BuildServers
diff --git a/docs/ci/tables/ci-baremetal-servers.rst b/docs/ci/tables/ci-baremetal-servers.rst
new file mode 100644
index 000000000..2efea0ac2
--- /dev/null
+++ b/docs/ci/tables/ci-baremetal-servers.rst
@@ -0,0 +1,143 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+.. list-table:: CI Servers for Baremetal Deployment
+ :header-rows: 1
+ :stub-columns: 1
+
+ * - Node
+ - Usage
+ - Jumphost OS / Version
+ - PDF
+ - IDF
+ * - `arm-pod6 <https://build.opnfv.org/ci/computer/arm-pod6>`_
+ - Armband
+ - Ubuntu 16.04
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/arm/pod6.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/arm/idf-pod6.yaml>`__
+ * - `ericsson-pod1 <https://build.opnfv.org/ci/computer/ericsson-pod1>`_
+ - Fuel
+ - Ubuntu 16.04
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/ericsson/pod1.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/ericsson/idf-pod1.yaml>`__
+ * - `ericsson-pod2 <https://build.opnfv.org/ci/computer/ericsson-pod2>`_
+ - XCI
+ - Ubuntu 16.04
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/ericsson/pod2.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/ericsson/idf-pod2.yaml>`__
+ * - `flex-pod1 <https://build.opnfv.org/ci/computer/flex-pod1>`_
+ - Yardstick
+ -
+ - PDF
+ - IDF
+ * - `flex-pod2 <https://build.opnfv.org/ci/computer/flex-pod2>`_
+ - Apex
+ -
+ - PDF
+ - IDF
+ * - `huawei-pod1 <https://build.opnfv.org/ci/computer/huawei-pod1>`_
+ - Compass4NFV
+ -
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/huawei/pod1.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/huawei/idf-pod1.yaml>`__
+ * - `huawei-pod2 <https://build.opnfv.org/ci/computer/huawei-pod2>`_
+ - Compass4NFV
+ - Ubuntu 14.04
+ - PDF
+ - IDF
+ * - `huawei-pod3 <https://build.opnfv.org/ci/computer/huawei-pod3>`_
+ - Yardstick
+ - Ubuntu 14.04
+ - PDF
+ - IDF
+ * - `huawei-pod4 <https://build.opnfv.org/ci/computer/huawei-pod4>`_
+ - Dovetail
+ -
+ - PDF
+ - IDF
+ * - `huawei-pod6 <https://build.opnfv.org/ci/computer/huawei-pod6>`_
+ -
+ - Ubuntu 14.04
+ - PDF
+ - IDF
+ * - `huawei-pod7 <https://build.opnfv.org/ci/computer/huawei-pod7>`_
+ - Dovetail
+ - Ubuntu 14.04
+ - PDF
+ - IDF
+ * - `huawei-pod8 <https://build.opnfv.org/ci/computer/huawei-pod8>`_
+ - Compass4NFV
+ - Ubuntu 16.04 (aarch64)
+ - PDF
+ - IDF
+ * - `huawei-pod12 <https://build.opnfv.org/ci/computer/huawei-pod12>`_
+ - JOID
+ - Ubuntu 16.04
+ - PDF
+ - IDF
+ * - `intel-pod10 <https://build.opnfv.org/ci/computer/intel-pod10>`_
+ - KVMforNFV
+ - CentOS 7
+ - PDF
+ - IDF
+ * - `intel-pod11 <https://build.opnfv.org/ci/computer/intel-pod11>`_
+ - Apex
+ -
+ - PDF
+ - IDF
+ * - `intel-pod12 <https://build.opnfv.org/ci/computer/intel-pod12>`_
+ - VSPerf
+ - CentOS 7
+ - PDF
+ - IDF
+ * - `intel-pod17 <https://build.opnfv.org/ci/computer/intel-pod17>`_
+ - Compass4NFV
+ -
+ - PDF
+ - IDF
+ * - `intel-pod18 <https://build.opnfv.org/ci/computer/intel-pod18>`_
+ - JOID
+ - Ubuntu 16.04
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/intel/pod18.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/intel/idf-pod18.yaml>`__
+ * - `lf-pod1 <https://build.opnfv.org/ci/computer/lf-pod1>`_
+ - Apex
+ - CentOS 7
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/lf/pod1.yaml>`__
+ - IDF
+ * - `lf-pod2 <https://build.opnfv.org/ci/computer/lf-pod2>`_
+ - Fuel
+ - CentOS 7
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/lf/pod2.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/lf/idf-pod2.yaml>`__
+ * - `unh-pod1 <https://build.opnfv.org/ci/computer/unh-pod1>`_
+ - Auto
+ - Ubuntu 16.04 (aarch64)
+ - PDF
+ - IDF
+ * - `zte-pod1 <https://build.opnfv.org/ci/computer/zte-pod1>`_
+ -
+ -
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/zte/pod1.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/zte/idf-pod1.yaml>`__
+ * - `zte-pod2 <https://build.opnfv.org/ci/computer/zte-pod2>`_
+ -
+ -
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/zte/pod2.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/zte/idf-pod2.yaml>`__
+ * - `zte-pod3 <https://build.opnfv.org/ci/computer/zte-pod3>`_
+ -
+ -
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/zte/pod3.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/zte/idf-pod3.yaml>`__
+ * - `zte-pod4 <https://build.opnfv.org/ci/computer/zte-pod4>`_
+ -
+ -
+ - PDF
+ - IDF
+ * - `zte-pod9 <https://build.opnfv.org/ci/computer/zte-pod9>`_
+ -
+ -
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/zte/pod9.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/zte/idf-pod9.yaml>`__
diff --git a/docs/ci/tables/ci-build-servers.rst b/docs/ci/tables/ci-build-servers.rst
new file mode 100644
index 000000000..b58b0fc9b
--- /dev/null
+++ b/docs/ci/tables/ci-build-servers.rst
@@ -0,0 +1,48 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+.. list-table:: CI Build Servers
+ :header-rows: 1
+ :stub-columns: 1
+
+ * - Node
+ - Architecture
+ - OS
+ - Contact
+ * - `arm-build3 <https://build.opnfv.org/ci/computer/arm-build3>`_
+ - aarch64
+ - CentOS 7.4
+ - `Armband ENEA Team`_
+ * - `arm-build4 <https://build.opnfv.org/ci/computer/arm-build4>`_
+ - aarch64
+ - CentOS 7.4
+ - `Armband ENEA Team`_
+ * - `arm-build5 <https://build.opnfv.org/ci/computer/arm-build5>`_
+ - aarch64
+ - CentOS 7.4
+ - `Armband ENEA Team`_
+ * - `arm-build6 <https://build.opnfv.org/ci/computer/arm-build6>`_
+ - aarch64
+ - CentOS 7.4
+ - `Armband ENEA Team`_
+ * - `ericsson-build3 <https://build.opnfv.org/ci/computer/ericsson-build3>`_
+ - x86_64
+ - Ubuntu 16.04
+ - `Dianfeng Du`_
+ * - `ericsson-build4 <https://build.opnfv.org/ci/computer/ericsson-build4>`_
+ - x86_64
+ - Ubuntu 16.04
+ - `Dianfeng Du`_
+ * - `lf-build1 <https://build.opnfv.org/ci/computer/lf-build1>`_
+ - x86_64
+ - CentOS 7.4
+ - `Linux Foundation`_
+ * - `lf-build2 <https://build.opnfv.org/ci/computer/lf-build2>`_
+ - x86_64
+ - Ubuntu 16.10
+ - `Linux Foundation`_
+
+.. _Linux Foundation: helpdesk@opnfv.org
+.. _Dianfeng Du: dianfeng.du@ericsson.com
+.. _Armband ENEA Team: armband@enea.com
diff --git a/docs/ci/tables/ci-labels.rst b/docs/ci/tables/ci-labels.rst
new file mode 100644
index 000000000..2865cc22f
--- /dev/null
+++ b/docs/ci/tables/ci-labels.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+:ci-resource: Resource devoted to CI
+:ci-pod: POD devoted to CI
+:opnfv-build: Node is for builds - independent of OS
+:opnfv-build-centos: Node is for builds needing CentOS
+:opnfv-build-centos-arm: Node is for ARM builds on CentOS
+:opnfv-build-ubuntu: Node is for builds needing Ubuntu
+:opnfv-build-ubuntu-arm: Node is for ARM builds on Ubuntu
+:{installer}-baremetal: POD is devoted to {installer} for baremetal deployments
+:{installer}-virtual: Server is devoted to {installer} for virtual deployments
diff --git a/docs/ci/tables/ci-virtual-servers.rst b/docs/ci/tables/ci-virtual-servers.rst
new file mode 100644
index 000000000..e87c46396
--- /dev/null
+++ b/docs/ci/tables/ci-virtual-servers.rst
@@ -0,0 +1,164 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+.. list-table:: CI Servers for Virtual Deployment
+ :header-rows: 1
+ :stub-columns: 1
+
+ * - Node
+ - Architecture
+ - OS
+ - Contact
+ * - `arm-virtual2 <https://build.opnfv.org/ci/computer/arm-virtual2>`_
+ - aarch64
+ - Ubuntu 16.04
+ - `Armband ENEA Team`_
+ * - `arm-virtual3 <https://build.opnfv.org/ci/computer/arm-virtual3>`_
+ - aarch64
+ - Ubuntu 16.04
+ - `Xuan Jia`
+ * - `arm-virtual4 <https://build.opnfv.org/ci/computer/arm-virtual4>`_
+ - aarch64
+ - Ubuntu 16.04
+ - `Xuan Jia`
+ * - `ericsson-virtual-pod1bl01 <https://build.opnfv.org/ci/computer/ericsson-virtual-pod1bl01>`_
+ - x86_64
+ - CentOS 7
+ -
+ * - `ericsson-virtual1 <https://build.opnfv.org/ci/computer/ericsson-virtual1>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `ericsson-virtual2 <https://build.opnfv.org/ci/computer/ericsson-virtual2>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `ericsson-virtual3 <https://build.opnfv.org/ci/computer/ericsson-virtual3>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `ericsson-virtual4 <https://build.opnfv.org/ci/computer/ericsson-virtual4>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `ericsson-virtual5 <https://build.opnfv.org/ci/computer/ericsson-virtual5>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `huawei-virtual1 <https://build.opnfv.org/ci/computer/huawei-virtual1>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual2 <https://build.opnfv.org/ci/computer/huawei-virtual2>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual3 <https://build.opnfv.org/ci/computer/huawei-virtual3>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual4 <https://build.opnfv.org/ci/computer/huawei-virtual4>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual5 <https://build.opnfv.org/ci/computer/huawei-virtual5>`_
+ - x86_64
+ -
+ -
+ * - `huawei-virtual6 <https://build.opnfv.org/ci/computer/huawei-virtual6>`_
+ - x86_64
+ - Ubuntu 16.04
+ -
+ * - `huawei-virtual7 <https://build.opnfv.org/ci/computer/huawei-virtual7>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual8 <https://build.opnfv.org/ci/computer/huawei-virtual8>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `huawei-virtual9 <https://build.opnfv.org/ci/computer/huawei-virtual9>`_
+ - x86_64
+ - Ubuntu 14.04
+ -
+ * - `intel-virtual3 <https://build.opnfv.org/ci/computer/intel-virtual3>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual11 <https://build.opnfv.org/ci/computer/intel-virtual11>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual12 <https://build.opnfv.org/ci/computer/intel-virtual12>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual13 <https://build.opnfv.org/ci/computer/intel-virtual13>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual14 <https://build.opnfv.org/ci/computer/intel-virtual14>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual15 <https://build.opnfv.org/ci/computer/intel-virtual15>`_
+ - x86_64
+ -
+ -
+ * - `intel-virtual16 <https://build.opnfv.org/ci/computer/intel-virtual16>`_
+ - x86_64
+ -
+ -
+ * - `lf-virtual1 <https://build.opnfv.org/ci/computer/lf-virtual1>`_
+ - x86_64
+ - Ubuntu 14.04
+ - `Linux Foundation`_
+ * - `lf-virtual2 <https://build.opnfv.org/ci/computer/lf-virtual2>`_
+ - x86_64
+ - CentOS 7
+ - `Linux Foundation`_
+ * - `lf-virtual3 <https://build.opnfv.org/ci/computer/lf-virtual3>`_
+ - x86_64
+ - CentOS 7
+ - `Linux Foundation`_
+ * - `ool-virtual1 <https://build.opnfv.org/ci/computer/ool-virtual1>`_
+ - x86_64
+ -
+ -
+ * - `ool-virtual2 <https://build.opnfv.org/ci/computer/ool-virtual2>`_
+ - x86_64
+ -
+ -
+ * - `ool-virtual3 <https://build.opnfv.org/ci/computer/ool-virtual3>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual1 <https://build.opnfv.org/ci/computer/zte-virtual1>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual2 <https://build.opnfv.org/ci/computer/zte-virtual2>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual3 <https://build.opnfv.org/ci/computer/zte-virtual3>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual4 <https://build.opnfv.org/ci/computer/zte-virtual4>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual5 <https://build.opnfv.org/ci/computer/zte-virtual5>`_
+ - x86_64
+ -
+ -
+ * - `zte-virtual6 <https://build.opnfv.org/ci/computer/zte-virtual6>`_
+ - x86_64
+ -
+ -
+
+.. _Armband ENEA Team: armband@enea.com
+.. _Linux Foundation: helpdesk@opnfv.org
+.. _Xuan Jia: jason.jiaxuan@gmail.com'
diff --git a/docs/ci/tables/none-ci-servers.rst b/docs/ci/tables/none-ci-servers.rst
new file mode 100644
index 000000000..c4f403a64
--- /dev/null
+++ b/docs/ci/tables/none-ci-servers.rst
@@ -0,0 +1,58 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+.. list-table:: Baremetal Development Servers
+ :header-rows: 1
+ :stub-columns: 1
+
+ * - Node
+ - Usage
+ - Jumphost OS / Version
+ - PDF
+ - IDF
+ * - `arm-pod5 <https://build.opnfv.org/ci/computer/arm-pod5>`_
+ - Armband
+ - Ubuntu 16.04
+ - `PDF <https://git.opnfv.org/pharos/plain/labs/arm/pod5.yaml>`__
+ - `IDF <https://git.opnfv.org/pharos/plain/labs/arm/idf-pod5.yaml>`__
+ * - cacti-pod1
+ -
+ -
+ -
+ -
+ * - cengn-pod1
+ -
+ -
+ -
+ -
+ * - itri-pod1
+ -
+ -
+ -
+ -
+ * - lf-pod4
+ -
+ -
+ -
+ -
+ * - lf-pod5
+ -
+ -
+ -
+ -
+ * - nokia-pod1
+ -
+ -
+ -
+ -
+ * - ool-pod1
+ -
+ -
+ -
+ -
+ * - bii-pod1
+ -
+ -
+ -
+ -
diff --git a/docs/infra/index.rst b/docs/infra/index.rst
index 50c971e75..248e8230c 100644
--- a/docs/infra/index.rst
+++ b/docs/infra/index.rst
@@ -70,7 +70,7 @@ Issue and Bug Tracking
JIRA
.. toctree::
- :maxdepth:
+ :maxdepth: 1
jira/user-guide
diff --git a/docs/infra/jenkins/connect-to-jenkins.rst b/docs/infra/jenkins/connect-to-jenkins.rst
index e83cadada..ddf345fa3 100644
--- a/docs/infra/jenkins/connect-to-jenkins.rst
+++ b/docs/infra/jenkins/connect-to-jenkins.rst
@@ -113,54 +113,80 @@ Please follow below steps to connect a slave to OPNFV Jenkins.
1. Create a user named **jenkins** on the machine you want to connect to OPNFV Jenkins and give the user sudo rights.
2. Install needed software on the machine you want to connect to OPNFV Jenkins as slave.
+
- openjdk 8
- monit
+
3. If the slave will be used for running virtual deployments, Functest, and Yardstick, install below software and make jenkins user the member of the groups.
+
- docker
- libvirt
+
4. Create slave root in Jenkins user home directory.
+
``mkdir -p /home/jenkins/opnfv/slave_root``
+
5. Clone OPNFV Releng Git repository.
+
``mkdir -p /home/jenkins/opnfv/repos``
``cd /home/jenkins/opnfv/repos``
``git clone https://gerrit.opnfv.org/gerrit/p/releng.git``
+
6. Contact LF by sending mail to `OPNFV LF Helpdesk <opnfv-helpdesk@rt.linuxfoundation.org>`_ and request creation of a slave on OPNFV Jenkins. Include below information in your mail.
+
- Slave root (/home/jenkins/opnfv/slave_root)
- Public IP of the slave (You can get the IP by executing ``curl http://icanhazip.com/``)
- PGP Key (attached to the mail or exported to a key server)
+
7. Once you get confirmation from LF stating that your slave is created on OPNFV Jenkins, check if the firewall on LF is open for the server you are trying to connect to Jenkins.
+
``cp /home/jenkins/opnfv/repos/releng/utils/jenkins-jnlp-connect.sh /home/jenkins/``
``cd /home/jenkins/``
``sudo ./jenkins-jnlp-connect.sh -j /home/jenkins -u jenkins -n <slave name on OPNFV Jenkins> -s <the token you received from LF> -f``
- If you receive an error, follow the steps listed on the command output.
+
8. Run the same script with test(-t) on foreground in order to make sure no problem on connection. You should see **INFO: Connected** in the console log.
+
``sudo ./jenkins-jnlp-connect.sh -j /home/jenkins -u jenkins -n <slave name on OPNFV Jenkins> -s <the token you received from LF> -t``
- If you receive an error similar to the one shown `on this link <http://hastebin.com/ozadagirax.avrasm>`_, you need to check your firewall and allow outgoing connections for the port.
+
9. Kill the Java slave.jar process.
10. Run the same script normally without test(-t) in order to get monit script created.
+
``sudo ./jenkins-jnlp-connect.sh -j /home/jenkins -u jenkins -n <slave name on OPNFV Jenkins> -s <the token you received from LF>``
+
11. Edit monit configuration and enable http interface. The file to edit is /etc/monit/monitrc on Ubuntu systems. Uncomment below lines.
+
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
+
12. Restart monit service.
+
- Without systemd:
``sudo service monit restart``
+
- With systemd: you have to enable monit service first and then restart it.
``sudo systemctl enable monit``
``sudo systemctl restart monit``
+
13. Check to see if jenkins comes up as managed service in monit.
+
``sudo monit status``
+
14. Connect slave to OPNFV Jenkins using monit.
+
``sudo monit start jenkins``
+
15. Check slave on OPNFV Jenkins to verify the slave is reported as connected.
+
- The slave on OPNFV Jenkins should have some executors in “Idle” state if the connection is successful.
Notes
diff --git a/docs/infra/jenkins/jjb-usage.rst b/docs/infra/jenkins/jjb-usage.rst
index 671278121..d467dbe8a 100644
--- a/docs/infra/jenkins/jjb-usage.rst
+++ b/docs/infra/jenkins/jjb-usage.rst
@@ -10,7 +10,7 @@ Creating/Configuring/Verifying Jenkins Jobs
Clone and setup the repo::
- git clone ssh://YOU@gerrit.opnfv.org:29418/releng
+ git clone --recursive ssh://YOU@gerrit.opnfv.org:29418/releng
cd releng
git review -s
@@ -29,13 +29,13 @@ Make changes::
Test with tox::
- tox -v -ejjb
+ tox -e jjb
.. note:: You can also test the jobs under a single jjb directory by
specifying the directory. For example to test only the releng jobs, you
could run:
- tox -v -e jjb -- jjb/releng
+ tox -e jjb -- jjb/global:jjb/global-jjb:jjb/releng
Submit the change to gerrit::
diff --git a/docs/release/index.rst b/docs/release/index.rst
index 49cd00bdb..e814bec02 100644
--- a/docs/release/index.rst
+++ b/docs/release/index.rst
@@ -9,7 +9,6 @@ Releasing OPNFV
===============
.. toctree::
- :numbered:
:maxdepth: 2
release-process
diff --git a/global-jjb b/global-jjb
new file mode 160000
+Subproject 5d1ddb578a5253fc360a73be6ceea89d65af043
diff --git a/jjb-sandbox/releng/releng-sandbox-jobs.yml b/jjb-sandbox/releng/releng-sandbox-jobs.yml
deleted file mode 100644
index df8b1d56a..000000000
--- a/jjb-sandbox/releng/releng-sandbox-jobs.yml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-- project:
- name: 'releng-sandbox-jobs'
- jobs:
- - 'releng-deploy-sandbox'
-
- project: 'releng'
- node: 'releng-sandbox'
-
-- job-template:
- name: 'releng-deploy-sandbox'
- node: '{node}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: 'master'
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'redeploy'
- custom-url: '$BUILD_URL deploying to $JENKINS_URL'
- silent-start: true
- skip-vote:
- successful: true
- failed: true
- unstable: true
- notbuilt: true
- projects:
- - project-compare-type: 'ANT'
- project-pattern: 'releng'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/master'
- file-paths:
- - compare-type: ANT
- pattern: jjb-sandbox/**
-
- wrappers: ''
-
- builders:
- - shell:
- !include-raw-escape: verify-sandbox-jobs.sh
- # yamllint disable rule:line-length
- - shell: |
- #!/bin/bash
- jenkins-jobs update --delete-old -r jjb/releng-defaults.yaml:jjb/releng-macros.yaml:jjb/opnfv/installer-params.yml:jjb/opnfv/slave-params.yml:jjb-sandbox
- # yamllint enable
- publishers:
- - archive-artifacts:
- artifacts: 'job_output/*'
- - email-jenkins-admins-on-failure
diff --git a/jjb-sandbox/releng/verify-sandbox-jobs.sh b/jjb-sandbox/releng/verify-sandbox-jobs.sh
deleted file mode 100755
index 599016106..000000000
--- a/jjb-sandbox/releng/verify-sandbox-jobs.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 Linux Foundation 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
-##############################################################################
-#test for non-ascii characters, these can pass the test and end up breaking things in production
-for x in $(find . -name *\.yml); do
-
- if LC_ALL=C grep -q '[^[:print:][:space:]]' "$x"; then
- echo "file "$x" contains non-ascii characters"
- exit 1
- fi
-
-done
-
-jenkins-jobs test -r jjb/releng-defaults.yaml:jjb/releng-macros.yaml:jjb/opnfv/installer-params.yml:jjb/opnfv/slave-params.yml:jjb-sandbox \
- -o job_output
diff --git a/jjb/3rd_party_ci/detect-snapshot.sh b/jjb/3rd_party_ci/detect-snapshot.sh
new file mode 100755
index 000000000..77788aa2c
--- /dev/null
+++ b/jjb/3rd_party_ci/detect-snapshot.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -o errexit
+set -o nounset
+set -o pipefail
+
+echo "Detecting requested OpenStack branch and topology type in gerrit comment"
+parsed_comment=$(echo $GERRIT_EVENT_COMMENT_TEXT | sed -n 's/^.*check-opnfv\s*//p')
+parsed_comment=$(echo $parsed_comment | sed -n 's/\s*$//p')
+if [ ! -z "$parsed_comment" ]; then
+ if echo $parsed_comment | grep -E '^[a-z]+-(no)?ha'; then
+ os_version=${parsed_comment%%"-"*}
+ topo=${parsed_comment#*"-"}
+ echo "OS version detected in gerrit comment: ${os_version}"
+ echo "Topology type detected in gerrit comment: ${topo}"
+ else
+ echo "Invalid format given for scenario in gerrit comment: ${parsed_comment}...aborting"
+ exit 1
+ fi
+else
+ echo "No scenario given in gerrit comment, will use default (master OpenStack, noha)"
+ os_version='master'
+ topo='noha'
+fi
+
+echo "Writing variables to file"
+cat > detected_snapshot << EOI
+OS_VERSION=$os_version
+TOPOLOGY=$topo
+SNAP_CACHE=$HOME/snap_cache/$os_version/$topo
+EOI
diff --git a/jjb/3rd_party_ci/download-netvirt-artifact.sh b/jjb/3rd_party_ci/download-netvirt-artifact.sh
index 7ecf8d78d..ac7f76ccd 100755
--- a/jjb/3rd_party_ci/download-netvirt-artifact.sh
+++ b/jjb/3rd_party_ci/download-netvirt-artifact.sh
@@ -3,35 +3,36 @@ set -o errexit
set -o nounset
set -o pipefail
-ODL_ZIP=distribution-karaf-0.6.0-SNAPSHOT.zip
-
echo "Attempting to fetch the artifact location from ODL Jenkins"
if [ "$ODL_BRANCH" != 'master' ]; then
DIST=$(echo ${ODL_BRANCH} | sed -rn 's#([a-zA-Z]+)/([a-zA-Z]+)#\2#p')
ODL_BRANCH=$(echo ${ODL_BRANCH} | sed -rn 's#([a-zA-Z]+)/([a-zA-Z]+)#\1%2F\2#p')
else
- DIST='nitrogen'
+ DIST='neon'
fi
-CHANGE_DETAILS_URL="https://git.opendaylight.org/gerrit/changes/netvirt~${ODL_BRANCH}~${GERRIT_CHANGE_ID}/detail"
+
+echo "ODL Distribution is ${DIST}"
+ODL_ZIP="karaf-SNAPSHOT.zip"
+CHANGE_DETAILS_URL="https://git.opendaylight.org/gerrit/changes/${GERRIT_PROJECT}~${ODL_BRANCH}~${GERRIT_CHANGE_ID}/detail"
# due to limitation with the Jenkins Gerrit Trigger, we need to use Gerrit REST API to get the change details
-ODL_BUILD_JOB_NUM=$(curl --fail -s ${CHANGE_DETAILS_URL} | grep -Eo "netvirt-distribution-check-${DIST}/[0-9]+" | tail -1 | grep -Eo [0-9]+)
-DISTRO_CHECK_CONSOLE_LOG="https://logs.opendaylight.org/releng/jenkins092/netvirt-distribution-check-${DIST}/${ODL_BUILD_JOB_NUM}/console.log.gz"
-NETVIRT_ARTIFACT_URL=$(curl --fail -s --compressed ${DISTRO_CHECK_CONSOLE_LOG} | grep 'BUNDLE_URL' | cut -d = -f 2)
+ODL_BUILD_JOB_NUM=$(curl --fail ${CHANGE_DETAILS_URL} | grep -Eo "${GERRIT_PROJECT}-distribution-check-${DIST}/[0-9]+" | tail -1 | grep -Eo [0-9]+)
+DISTRO_CHECK_CONSOLE_LOG="https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/${GERRIT_PROJECT}-distribution-check-${DIST}/${ODL_BUILD_JOB_NUM}/console.log.gz"
+NETVIRT_ARTIFACT_URL=$(curl --fail --compressed ${DISTRO_CHECK_CONSOLE_LOG} | grep 'BUNDLE_URL' | cut -d = -f 2)
echo -e "URL to artifact is\n\t$NETVIRT_ARTIFACT_URL"
echo "Downloading the artifact. This could take time..."
-wget -q -O $ODL_ZIP $NETVIRT_ARTIFACT_URL
-if [[ $? -ne 0 ]]; then
+if ! wget -q -O $ODL_ZIP $NETVIRT_ARTIFACT_URL; then
echo "The artifact does not exist! Probably removed due to ODL Jenkins artifact retention policy."
- echo "Rerun netvirt-patch-test-current-carbon to get artifact rebuilt."
+ echo "Use 'recheck' on the gerrit to get artifact rebuilt."
exit 1
fi
#TODO(trozet) remove this once odl-pipeline accepts zip files
echo "Converting artifact zip to tar.gz"
-unzip $ODL_ZIP
-tar czf /tmp/${NETVIRT_ARTIFACT} $(echo $ODL_ZIP | sed -n 's/\.zip//p')
+UNZIPPED_DIR=`dirname $(unzip -qql ${ODL_ZIP} | head -n1 | tr -s ' ' | cut -d' ' -f5-)`
+unzip ${ODL_ZIP}
+tar czf /tmp/${NETVIRT_ARTIFACT} ${UNZIPPED_DIR}
echo "Download complete"
ls -al /tmp/${NETVIRT_ARTIFACT}
diff --git a/jjb/3rd_party_ci/install-netvirt.sh b/jjb/3rd_party_ci/install-netvirt.sh
index ed1a12bc8..232d60e5c 100755
--- a/jjb/3rd_party_ci/install-netvirt.sh
+++ b/jjb/3rd_party_ci/install-netvirt.sh
@@ -3,7 +3,7 @@ set -o errexit
set -o nounset
set -o pipefail
-SNAP_CACHE=$HOME/snap_cache
+SNAP_CACHE=$HOME/snap_cache/$OS_VERSION/$TOPOLOGY
# clone opnfv sdnvpn repo
git clone https://gerrit.opnfv.org/gerrit/p/sdnvpn.git $WORKSPACE/sdnvpn
@@ -26,8 +26,7 @@ fi
# but we really should check the cache here, and not use a single cache folder
# for when we support multiple jobs on a single slave
pushd sdnvpn/odl-pipeline/lib > /dev/null
-# FIXME (trozet) remove this once permissions are fixed in sdnvpn repo
-chmod +x odl_reinstaller.sh
+git fetch https://gerrit.opnfv.org/gerrit/sdnvpn refs/changes/17/59017/5 && git checkout FETCH_HEAD
./odl_reinstaller.sh --pod-config ${SNAP_CACHE}/node.yaml \
--odl-artifact /tmp/${NETVIRT_ARTIFACT} --ssh-key-file ${SNAP_CACHE}/id_rsa
popd > /dev/null
diff --git a/jjb/3rd_party_ci/odl-netvirt.yaml b/jjb/3rd_party_ci/odl-netvirt.yaml
index 863eb94dd..15d28486f 100644
--- a/jjb/3rd_party_ci/odl-netvirt.yaml
+++ b/jjb/3rd_party_ci/odl-netvirt.yaml
@@ -13,8 +13,8 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - carbon:
- branch: 'stable/carbon'
+ - oxygen:
+ branch: 'stable/oxygen'
gs-pathname: ''
disabled: false
#####################################
@@ -22,11 +22,11 @@
#####################################
phase:
- 'create-apex-vms':
- slave-label: 'odl-netvirt-virtual-intel'
+ slave-label: 'apex-virtual-master'
- 'install-netvirt':
- slave-label: 'odl-netvirt-virtual-intel'
+ slave-label: 'apex-virtual-master'
- 'postprocess':
- slave-label: 'odl-netvirt-virtual-intel'
+ slave-label: 'apex-virtual-master'
#####################################
# jobs
#####################################
@@ -53,7 +53,17 @@
max-total: 5
max-per-node: 1
option: 'project'
-
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'apex-verify.*'
+ - 'apex-.*-promote.*'
+ - 'apex-virtual.*'
+ - 'odl-netvirt-verify-virtual-create-apex-vms-.*'
+ - 'odl-netvirt-verify-virtual-install-netvirt-.*'
+ - 'functest-netvirt-virtual-suite-.*'
+ - 'odl-netvirt-verify-virtual-postprocess-.*'
+ blocking-level: 'NODE'
scm:
- git:
url: https://gerrit.opnfv.org/gerrit/apex
@@ -69,7 +79,7 @@
- string:
name: NETVIRT_ARTIFACT
default: distribution-karaf.tar.gz
- - 'odl-netvirt-virtual-intel-defaults'
+ - 'apex-virtual-master-defaults'
triggers:
- gerrit:
@@ -82,10 +92,10 @@
# comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : UNSTABLE'
# yamllint enable rule:line-length
- comment-added-contains-event:
- comment-contains-value: 'opnfv-test'
+ comment-contains-value: 'check-opnfv'
projects:
- project-compare-type: 'ANT'
- project-pattern: '{project}'
+ project-pattern: '*'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
@@ -94,6 +104,9 @@
builders:
- description-setter:
description: "Built on $NODE_NAME"
+ - detect-opnfv-snapshot
+ - inject:
+ properties-file: detected_snapshot
- multijob:
name: create-apex-vms
condition: SUCCESSFUL
@@ -109,6 +122,9 @@
GERRIT_PATCHSET_REVISION=$GERRIT_PATCHSET_REVISION
NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
APEX_ENV_NUMBER=$APEX_ENV_NUMBER
+ GERRIT_EVENT_COMMENT_TEXT=$GERRIT_EVENT_COMMENT_TEXT
+ TOPOLOGY=$TOPOLOGY
+ OS_VERSION=$OS_VERSION
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -119,31 +135,57 @@
- name: 'odl-netvirt-verify-virtual-install-netvirt-{stream}'
current-parameters: false
predefined-parameters: |
- ODL_BRANCH={branch}
+ ODL_BRANCH=$BRANCH
BRANCH=$BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
GERRIT_PATCHSET_NUMBER=$GERRIT_PATCHSET_NUMBER
GERRIT_PATCHSET_REVISION=$GERRIT_PATCHSET_REVISION
+ GERRIT_PROJECT=$GERRIT_PROJECT
NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
+ TOPOLOGY=$TOPOLOGY
+ OS_VERSION=$OS_VERSION
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
- multijob:
- name: functest
- condition: SUCCESSFUL
+ name: csit
+ condition: ALWAYS
projects:
- - name: 'functest-netvirt-virtual-suite-master'
+ - name: cperf-apex-csit-master
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
- FUNCTEST_MODE=testcase
- FUNCTEST_SUITE_NAME=odl_netvirt
- RC_FILE_PATH=$HOME/cloner-info/overcloudrc
+ ODL_BRANCH=$BRANCH
+ RC_FILE_PATH=$SNAP_CACHE/overcloudrc
+ NODE_FILE_PATH=$SNAP_CACHE/node.yaml
+ SSH_KEY_PATH=$SNAP_CACHE/id_rsa
+ ODL_CONTAINERIZED=false
+ OS_VERSION=$OS_VERSION
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: false
- multijob:
+ name: csit-collect-logs
+ condition: ALWAYS
+ projects:
+ - name: cperf-upload-logs-csit
+ predefined-parameters: |
+ ODL_BRANCH=$BRANCH
+ OS_VERSION=$OS_VERSION
+ node-parameters: true
+ kill-phase-on: FAILURE
+ abort-all-job: false
+ - multijob:
+ name: apex-fetch-logs
+ condition: ALWAYS
+ projects:
+ - name: 'apex-fetch-logs-{stream}'
+ current-parameters: false
+ node-parameters: true
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - multijob:
name: postprocess
condition: ALWAYS
projects:
@@ -182,7 +224,7 @@
- 'odl-netvirt-verify-virtual-install-netvirt-.*'
- 'functest-netvirt-virtual-suite-.*'
- 'odl-netvirt-verify-virtual-postprocess-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- ssh-agent-wrapper
@@ -206,7 +248,7 @@
- '{installer}-defaults'
- string:
name: DEPLOY_SCENARIO
- default: 'os-odl_l2-bgpvpn-noha'
+ default: 'os-odl-nofeature-noha'
description: 'Scenario to deploy and test'
- string:
name: GS_URL
@@ -237,3 +279,9 @@
builders:
- shell:
!include-raw: ./postprocess-netvirt.sh
+
+- builder:
+ name: 'detect-opnfv-snapshot'
+ builders:
+ - shell:
+ !include-raw: ./detect-snapshot.sh
diff --git a/jjb/apex/apex-build.sh b/jjb/apex/apex-build.sh
index 0c58a3ca9..618d18110 100755
--- a/jjb/apex/apex-build.sh
+++ b/jjb/apex/apex-build.sh
@@ -12,7 +12,7 @@ echo
if echo $ARTIFACT_VERSION | grep "dev" 1> /dev/null; then
GERRIT_PATCHSET_NUMBER=$(echo $GERRIT_REFSPEC | grep -Eo '[0-9]+$')
export OPNFV_ARTIFACT_VERSION="dev${GERRIT_CHANGE_NUMBER}_${GERRIT_PATCHSET_NUMBER}"
- if [ "$BRANCH" == 'master' ]; then
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
# build rpm
export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --rpms"
else
@@ -23,15 +23,15 @@ elif echo $BUILD_TAG | grep "csit" 1> /dev/null; then
export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY"
elif [ "$ARTIFACT_VERSION" == "daily" ]; then
export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d")
- if [ "$BRANCH" == 'master' ]; then
- export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY"
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
+ export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --rpms"
else
export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --iso"
fi
else
export OPNFV_ARTIFACT_VERSION=${ARTIFACT_VERSION}
- if [ "$BRANCH" == 'master' ]; then
- export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY"
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
+ export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --rpms"
else
export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --iso"
fi
@@ -59,7 +59,7 @@ echo "Cache Directory Contents:"
echo "-------------------------"
ls -al $CACHE_DIRECTORY
-if [[ "$BUILD_ARGS" =~ '--iso' && "$BRANCH" != 'master' ]]; then
+if [[ "$BUILD_ARGS" =~ '--iso' && "$BRANCH" == 'stable/fraser' ]]; then
mkdir -p /tmp/apex-iso/
rm -f /tmp/apex-iso/*.iso
cp -f $BUILD_DIRECTORY/../.build/release/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso /tmp/apex-iso/
@@ -67,7 +67,7 @@ fi
if ! echo $ARTIFACT_VERSION | grep "dev" 1> /dev/null; then
echo "Writing opnfv.properties file"
- if [ "$BRANCH" != master ]; then
+ if [ "$BRANCH" == 'stable/fraser' ]; then
# save information regarding artifact into file
(
echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
diff --git a/jjb/apex/apex-deploy.sh b/jjb/apex/apex-deploy.sh
index 35c2b8544..09d6ca630 100755
--- a/jjb/apex/apex-deploy.sh
+++ b/jjb/apex/apex-deploy.sh
@@ -4,13 +4,16 @@ set -o nounset
set -o pipefail
IPV6_FLAG=False
+ALLINONE_FLAG=False
+CSIT_ENV_FLAG=False
+FUNCTEST_ENV_FLAG=False
# log info to console
echo "Starting the Apex deployment."
echo "--------------------------------------------------------"
echo
-if [ -z "$DEPLOY_SCENARIO" ]; then
+if [ -z ${DEPLOY_SCENARIO+x} ]; then
echo "Deploy scenario not set!"
exit 1
else
@@ -27,7 +30,7 @@ if [[ "$ARTIFACT_VERSION" =~ dev ]]; then
# we want to use that built in mechanism to avoid re-downloading every job
# so we use a dedicated folder to hold the upstream cache
UPSTREAM_CACHE=$HOME/upstream_cache
- if [ "$BRANCH" == 'master' ]; then
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
mkdir -p ${UPSTREAM_CACHE}
RESOURCES=$UPSTREAM_CACHE
else
@@ -53,7 +56,7 @@ else
# set to use different directory here because upon RPM removal this
# directory will be wiped in daily
UPSTREAM_CACHE=$HOME/upstream_cache
- if [ "$BRANCH" == 'master' ]; then
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
mkdir -p ${UPSTREAM_CACHE}
RESOURCES=$UPSTREAM_CACHE
else
@@ -99,12 +102,30 @@ if [ "$OPNFV_CLEAN" == 'yes' ]; then
sudo ${CLEAN_CMD} ${clean_opts}
fi
+# These are add-ons to regular scenarios where you can do like
+# os-nosdn-nofeature-noha-ipv6, or os-nosdn-nofeature-noha-allinone
if echo ${DEPLOY_SCENARIO} | grep ipv6; then
IPV6_FLAG=True
DEPLOY_SCENARIO=$(echo ${DEPLOY_SCENARIO} | sed 's/-ipv6//')
echo "INFO: IPV6 Enabled"
fi
+if echo ${DEPLOY_SCENARIO} | grep allinone; then
+ ALLINONE_FLAG=True
+ DEPLOY_SCENARIO=$(echo ${DEPLOY_SCENARIO} | sed 's/-allinone//')
+ echo "INFO: All in one deployment detected"
+fi
+
+if echo ${DEPLOY_SCENARIO} | grep csit; then
+ CSIT_ENV_FLAG=True
+ DEPLOY_SCENARIO=$(echo ${DEPLOY_SCENARIO} | sed 's/-csit//')
+ echo "INFO: CSIT env requested in deploy scenario"
+elif echo ${DEPLOY_SCENARIO} | grep functest; then
+ FUNCTEST_ENV_FLAG=True
+ DEPLOY_SCENARIO=$(echo ${DEPLOY_SCENARIO} | sed 's/-functest//')
+ echo "INFO: Functest env requested in deploy scenario"
+fi
+
echo "Deploy Scenario set to ${DEPLOY_SCENARIO}"
DEPLOY_FILE="${DEPLOY_SETTINGS_DIR}/${DEPLOY_SCENARIO}.yaml"
@@ -118,11 +139,43 @@ if [[ "$JOB_NAME" =~ "virtual" ]]; then
if [[ "${DEPLOY_SCENARIO}" =~ fdio|ovs ]]; then
DEPLOY_CMD="${DEPLOY_CMD} --virtual-default-ram 12 --virtual-compute-ram 7"
fi
- if [[ "$JOB_NAME" == *csit* ]]; then
- DEPLOY_CMD="${DEPLOY_CMD} -e csit-environment.yaml"
+ if [[ "$ALLINONE_FLAG" == "True" ]]; then
+ DEPLOY_CMD="${DEPLOY_CMD} --virtual-computes 0"
+ elif [[ "$PROMOTE" == "True" ]]; then
+ DEPLOY_CMD="${DEPLOY_CMD} --virtual-computes 2"
fi
- if [[ "$PROMOTE" == "True" ]]; then
- DEPLOY_CMD="${DEPLOY_CMD} --virtual-computes 1"
+
+ if [[ "$FUNCTEST_ENV_FLAG" == "True" || "$CSIT_ENV_FLAG" == "True" ]]; then
+ if [[ "$CSIT_ENV_FLAG" == "True" ]]; then
+ ENV_TYPE="csit"
+ else
+ ENV_TYPE="functest"
+ fi
+ if [ -z ${OS_VERSION+x} ]; then
+ echo "INFO: OS_VERSION not passed to deploy, detecting based on branch and scenario"
+ case $BRANCH in
+ master)
+ if [[ "$DEPLOY_SCENARIO" =~ "rocky" ]]; then
+ OS_VERSION=rocky
+ else
+ OS_VERSION=master
+ fi
+ ;;
+ *gambia)
+ OS_VERSION=queens
+ ;;
+ *)
+ echo "Unable to detection OS_VERSION, aborting"
+ exit 1
+ ;;
+ esac
+ fi
+ if [[ "$OS_VERSION" != "master" ]]; then
+ SNAP_ENV="${ENV_TYPE}-${OS_VERSION}-environment.yaml"
+ else
+ SNAP_ENV="${ENV_TYPE}-environment.yaml"
+ fi
+ DEPLOY_CMD="${DEPLOY_CMD} -e ${SNAP_ENV}"
fi
else
# settings for bare metal deployment
@@ -137,13 +190,11 @@ else
DEPLOY_CMD="${DEPLOY_CMD} -i ${INVENTORY_FILE}"
fi
-if [[ "$BRANCH" == "master" ]]; 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 [[ "$CSIT_ENV_FLAG" == "True" || "$FUNCTEST_ENV_FLAG" == "True" ]]; then
+ # We use csit network settings which is single network for snapshots
+ NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings_csit.yaml"
else
NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings.yaml"
fi
@@ -157,16 +208,6 @@ fi
# start deployment
sudo ${DEPLOY_CMD} -d ${DEPLOY_FILE} -n ${NETWORK_FILE} --debug
-if [[ "$JOB_NAME" == *csit* ]]; then
- echo "CSIT job: setting host route for floating ip routing"
- # csit route to allow docker container to reach floating ips
- UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo "[0-9\.]+{3}[0-9]+")
- if sudo route | grep 192.168.37.128 > /dev/null; then
- sudo route del -net 192.168.37.128 netmask 255.255.255.128
- fi
- sudo route add -net 192.168.37.128 netmask 255.255.255.128 gw ${UNDERCLOUD}
-fi
-
echo
echo "--------------------------------------------------------"
echo "Done!"
diff --git a/jjb/apex/apex-download-artifact.sh b/jjb/apex/apex-download-artifact.sh
index 3efe1cbc7..bc3311d68 100755
--- a/jjb/apex/apex-download-artifact.sh
+++ b/jjb/apex/apex-download-artifact.sh
@@ -18,8 +18,8 @@ else
fi
if [[ "$ARTIFACT_VERSION" =~ dev ]]; then
- if [ "$BRANCH" == 'master' ]; then
- echo "Skipping download of artifacts for master branch"
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
+ echo "Skipping download of artifacts for master/gambia branch"
else
# dev build
GERRIT_PATCHSET_NUMBER=$(echo $GERRIT_REFSPEC | grep -Eo '[0-9]+$')
@@ -45,10 +45,9 @@ else
RPM_INSTALL_PATH=$(echo "http://"$OPNFV_RPM_URL | sed 's/\/'"$(basename $OPNFV_RPM_URL)"'//')
RPM_LIST=$(basename $OPNFV_RPM_URL)
-
- if [ "$BRANCH" != 'master' ]; then
- # find version of RPM
- VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | grep -Eo '[0-9]+\.[0-9]+-([0-9]{8}|[a-z]+-[0-9]\.[0-9]+)')
+ # find version of RPM
+ VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | grep -Eo '[0-9]+\.[0-9]+-([0-9]{8}|[a-z]+-[0-9]\.[0-9]+)')
+ if [ "$BRANCH" == 'stable/fraser' ]; then
# build RPM List which already includes base Apex RPM
RPM_LIST+=" opnfv-apex-undercloud-${VERSION_EXTENSION}.noarch.rpm"
RPM_LIST+=" python34-opnfv-apex-${VERSION_EXTENSION}.noarch.rpm"
diff --git a/jjb/apex/apex-fetch-snap-info.sh b/jjb/apex/apex-fetch-snap-info.sh
new file mode 100755
index 000000000..3324aca4f
--- /dev/null
+++ b/jjb/apex/apex-fetch-snap-info.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+##############################################################################
+# Copyright (c) 2018 Tim Rozet (Red Hat) 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
+##############################################################################
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+echo "Fetching overcloudrc, ssh key, and node.yaml from deployment..."
+
+SSH_OPTIONS=(-o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o LogLevel=error)
+
+tmp_dir=/tmp/snap
+rm -rf ${tmp_dir}
+mkdir -p ${tmp_dir}
+
+# TODO(trozet) remove this after fix goes in for tripleo_inspector to copy these
+pushd ${tmp_dir} > /dev/null
+echo "Copying overcloudrc and ssh key from Undercloud..."
+# Store overcloudrc
+UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
+sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:overcloudrc ./
+# Copy out ssh key of stack from undercloud
+sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:.ssh/id_rsa ./
+sudo chmod 0600 id_rsa
+popd > /dev/null
+
+echo "Gathering introspection information"
+git clone https://gerrit.opnfv.org/gerrit/sdnvpn.git
+pushd sdnvpn/odl-pipeline/lib > /dev/null
+sudo ./tripleo_introspector.sh --out-file ${tmp_dir}/node.yaml
+popd > /dev/null
+sudo rm -rf sdnvpn
+
+sudo chown jenkins-ci:jenkins-ci ${tmp_dir}/*
+
+ls -lrt ${tmp_dir}
+
+echo "Fetch complete"
diff --git a/jjb/apex/apex-functest-scenario.sh b/jjb/apex/apex-functest-scenario.sh
new file mode 100644
index 000000000..dcbed4479
--- /dev/null
+++ b/jjb/apex/apex-functest-scenario.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -o errexit
+set -o nounset
+set -o pipefail
+
+features=$(echo $DEPLOY_SCENARIO | sed -r -n 's/os-.+-(.+)-(noha|ha)/\1/p')
+if [ "$features" == 'rocky' ]; then
+ functest_scenario=$(echo $DEPLOY_SCENARIO | sed -r -n 's/(os-.+?)-rocky-(noha|ha)/\1-nofeature-\2/p')
+ echo "DOCKER_TAG=hunter" > functest_scenario
+elif [[ "$features" =~ 'rocky' ]]; then
+ functest_scenario=$(echo $DEPLOY_SCENARIO | sed -r -n 's/(os-.+?)-(.+)_rocky-(noha|ha)/\1-\2-\3/p')
+ echo "DOCKER_TAG=hunter" > functest_scenario
+else
+ functest_scenario=$DEPLOY_SCENARIO
+ echo "DOCKER_TAG=$([[ ${BRANCH##*/} == "master" ]] && \
+ echo "latest" || echo ${BRANCH##*/})" > functest_scenario
+fi
+echo "DEPLOY_SCENARIO=$functest_scenario" >> functest_scenario
diff --git a/jjb/apex/apex-iso-verify.sh b/jjb/apex/apex-iso-verify.sh
index f34937619..c29d7cb32 100755
--- a/jjb/apex/apex-iso-verify.sh
+++ b/jjb/apex/apex-iso-verify.sh
@@ -8,8 +8,8 @@ echo "Starting the Apex iso verify."
echo "--------------------------------------------------------"
echo
-if [ "$BRANCH" == 'master' ]; then
- echo "Skipping Apex iso verify for master branch"
+if [ "$BRANCH" != 'stable/fraser' ]; then
+ echo "Skipping Apex iso verify for ${BRANCH} branch"
exit 0
fi
diff --git a/jjb/apex/apex-jjb-renderer.py b/jjb/apex/apex-jjb-renderer.py
index 0da47b518..58dc4fff9 100644
--- a/jjb/apex/apex-jjb-renderer.py
+++ b/jjb/apex/apex-jjb-renderer.py
@@ -20,7 +20,8 @@ def render_jjb():
gspathname = dict()
branch = dict()
build_slave = dict()
- env = Environment(loader=FileSystemLoader('./'), autoescape=True)
+ env = Environment(loader=FileSystemLoader('./'), autoescape=True,
+ keep_trailing_newline=True)
with open('scenarios.yaml.hidden') as _:
scenarios = yaml.safe_load(_)
@@ -45,5 +46,6 @@ def render_jjb():
with open('./apex.yaml', 'w') as fh:
fh.write(output)
+
if __name__ == "__main__":
render_jjb()
diff --git a/jjb/apex/apex-project-jobs.yaml b/jjb/apex/apex-project-jobs.yaml
index 700ff60e8..42567ea1b 100644
--- a/jjb/apex/apex-project-jobs.yaml
+++ b/jjb/apex/apex-project-jobs.yaml
@@ -9,6 +9,11 @@
gs-pathname: ''
concurrent-builds: 3
disabled: false
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ concurrent-builds: 3
+ disabled: false
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
@@ -68,7 +73,7 @@
option: 'project'
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify-iso-{stream}'
diff --git a/jjb/apex/apex-rtd-jobs.yaml b/jjb/apex/apex-rtd-jobs.yaml
new file mode 100644
index 000000000..48e4949f7
--- /dev/null
+++ b/jjb/apex/apex-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: apex-rtd
+ project: apex
+ project-name: apex
+
+ project-pattern: 'apex'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-apex/47262/'
+ rtd-token: '134db049c774ab06c41db432e3a042a982f50edf'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/apex/apex-snapshot-create.sh b/jjb/apex/apex-snapshot-create.sh
index 342896c7d..e8bf60bd2 100644
--- a/jjb/apex/apex-snapshot-create.sh
+++ b/jjb/apex/apex-snapshot-create.sh
@@ -27,22 +27,8 @@ echo
tmp_dir=$(pwd)/.tmp
mkdir -p ${tmp_dir}
-# TODO(trozet) remove this after fix goes in for tripleo_inspector to copy these
-pushd ${tmp_dir} > /dev/null
-echo "Copying overcloudrc and ssh key from Undercloud..."
-# Store overcloudrc
-UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
-sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:overcloudrc ./
-# Copy out ssh key of stack from undercloud
-sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:.ssh/id_rsa ./
-popd > /dev/null
-
-echo "Gathering introspection information"
-git clone https://gerrit.opnfv.org/gerrit/sdnvpn.git
-pushd sdnvpn/odl-pipeline/lib > /dev/null
-sudo ./tripleo_introspector.sh --out-file ${tmp_dir}/node.yaml
-popd > /dev/null
-sudo rm -rf sdnvpn
+# info should have already been collected in apex-fetch-snap-info so copy it
+cp -r /tmp/snap/* ${tmp_dir}/
echo "Shutting down nodes"
# Shut down nodes
@@ -78,9 +64,7 @@ for node in $nodes; do
done
# copy virsh net definitions
-for net in admin api external storage tenant; do
- sudo virsh net-dumpxml ${net} > ${net}.xml
-done
+sudo virsh net-dumpxml admin > admin.xml
sudo chown jenkins-ci:jenkins-ci *
@@ -92,13 +76,30 @@ sudo rm -rf ${tmp_dir}
echo "Snapshot saved as apex-${SNAP_TYPE}-snap-${DATE}.tar.gz"
# update opnfv properties file
-if [ "$SNAP_TYPE" == 'csit' ]; then
- curl -O -L http://$GS_URL/snapshot.properties
- sed -i '/^OPNFV_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#};${x;/^$/{s##OPNFV_SNAP_URL='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties
- snap_sha=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1)
- sed -i '/^OPNFV_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//OPNFV_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties
- echo "OPNFV_SNAP_URL=$GS_URL/apex-csit-snap-${DATE}.tar.gz"
- echo "OPNFV_SNAP_SHA512SUM=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1)"
- echo "Updated properties file: "
- cat snapshot.properties
+snap_sha=$(sha512sum apex-${SNAP_TYPE}-snap-${DATE}.tar.gz | cut -d' ' -f1)
+
+if curl --fail -O -L http://$GS_URL/snapshot.properties; then
+ # TODO(trozet): deprecate OPNFV_SNAP_URL for CSIT_SNAP_URL
+ if [ "$SNAP_TYPE" == 'csit' ]; then
+ sed -i '/^OPNFV_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#};${x;/^$/{s##OPNFV_SNAP_URL='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties
+ sed -i '/^OPNFV_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//OPNFV_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties
+ fi
+ sed -i '/^'${SNAP_TYPE}'_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-'${SNAP_TYPE}'-snap-'${DATE}'.tar.gz#};${x;/^$/{s##'${SNAP_TYPE}'_SNAP_URL='${GS_URL}'/apex-'${SNAP_TYPE}'-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties
+ sed -i '/^'${SNAP_TYPE}'_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//'${SNAP_TYPE}'_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties
+else
+ cat << EOF > snapshot.properties
+${SNAP_TYPE}_SNAP_URL=${GS_URL}/apex-${SNAP_TYPE}-snap-${DATE}.tar.gz
+${SNAP_TYPE}_SNAP_SHA512SUM=${snap_sha}
+EOF
+ # TODO(trozet): deprecate OPNFV_SNAP_URL for CSIT_SNAP_URL
+ if [ "$SNAP_TYPE" == 'csit' ]; then
+ cat << EOF >> snapshot.properties
+OPNFV_SNAP_URL=${GS_URL}/apex-csit-snap-${DATE}.tar.gz
+OPNFV_SNAP_SHA512SUM=${snap_sha}
+EOF
+ fi
fi
+echo "${SNAP_TYPE}_SNAP_URL=$GS_URL/apex-${SNAP_TYPE}-snap-${DATE}.tar.gz"
+echo "${SNAP_TYPE}_SNAP_SHA512SUM=$(sha512sum apex-${SNAP_TYPE}-snap-${DATE}.tar.gz | cut -d' ' -f1)"
+echo "Updated properties file: "
+cat snapshot.properties
diff --git a/jjb/apex/apex-snapshot-deploy.sh b/jjb/apex/apex-snapshot-deploy.sh
index a93421c8e..dd69df3fc 100644
--- a/jjb/apex/apex-snapshot-deploy.sh
+++ b/jjb/apex/apex-snapshot-deploy.sh
@@ -20,32 +20,44 @@ echo "Deploying Apex snapshot..."
echo "--------------------------"
echo
+if [ -z "$SNAP_TYPE" ]; then
+ echo "ERROR: SNAP_TYPE not provided...exiting"
+ exit 1
+fi
+
echo "Cleaning server"
pushd ci > /dev/null
sudo opnfv-clean
popd > /dev/null
+full_snap_url="gs://${GS_URL}/${OS_VERSION}/${TOPOLOGY}"
+
echo "Downloading latest snapshot properties file"
-if ! wget -O $WORKSPACE/opnfv.properties http://$GS_URL/snapshot.properties; then
- echo "ERROR: Unable to find snapshot.properties at ${GS_URL}...exiting"
+if ! gsutil cp ${full_snap_url}/snapshot.properties $WORKSPACE/opnfv.properties; then
+ echo "ERROR: Unable to find snapshot.properties at ${full_snap_url}...exiting"
exit 1
fi
+echo "Properties contents:"
+cat ${WORKSPACE}/opnfv.properties
+
# find latest check sum
-latest_snap_checksum=$(cat opnfv.properties | grep OPNFV_SNAP_SHA512SUM | awk -F "=" '{print $2}')
+latest_snap_checksum=$(cat ${WORKSPACE}/opnfv.properties | grep ${SNAP_TYPE}_SNAP_SHA512SUM | awk -F "=" '{print $2}')
if [ -z "$latest_snap_checksum" ]; then
echo "ERROR: checksum of latest snapshot from snapshot.properties is null!"
exit 1
fi
local_snap_checksum=""
+SNAP_CACHE=${SNAP_CACHE}/${OS_VERSION}/${TOPOLOGY}
# check snap cache directory exists
# if snapshot cache exists, find the checksum
if [ -d "$SNAP_CACHE" ]; then
- latest_snap=$(ls ${SNAP_CACHE} | grep tar.gz | tail -n 1)
+ latest_snap=$(ls ${SNAP_CACHE} | grep tar.gz | grep $SNAP_TYPE | tail -n 1)
if [ -n "$latest_snap" ]; then
local_snap_checksum=$(sha512sum ${SNAP_CACHE}/${latest_snap} | cut -d' ' -f1)
+ echo "Local snap checksum is: ${local_snap_checksum}"
fi
else
mkdir -p ${SNAP_CACHE}
@@ -53,7 +65,12 @@ fi
# compare check sum and download latest snap if not up to date
if [ "$local_snap_checksum" != "$latest_snap_checksum" ]; then
- snap_url=$(cat opnfv.properties | grep OPNFV_SNAP_URL | awk -F "=" '{print $2}')
+ snap_url=$(cat opnfv.properties | grep ${SNAP_TYPE}_SNAP_URL | awk -F "=" '{print $2}')
+ # TODO(trozet): Remove this once OPNFV url is deprecated
+ if [[ -z "$snap_url" && "$SNAP_TYPE" == 'csit' ]]; then
+ echo "WARN: Unable to find snap url for ${SNAP_TYPE}, attempting to use OPNFV"
+ snap_url=$(cat opnfv.properties | grep OPNFV_SNAP_URL | awk -F "=" '{print $2}')
+ fi
if [ -z "$snap_url" ]; then
echo "ERROR: Snap URL from snapshot.properties is null!"
exit 1
@@ -61,7 +78,7 @@ if [ "$local_snap_checksum" != "$latest_snap_checksum" ]; then
echo "INFO: SHA mismatch, will download latest snapshot"
# wipe cache
rm -rf ${SNAP_CACHE}/*
- wget --directory-prefix=${SNAP_CACHE}/ ${snap_url}
+ gsutil cp "gs://${snap_url}" ${SNAP_CACHE}/
snap_tar=$(basename ${snap_url})
else
snap_tar=${latest_snap}
@@ -141,22 +158,23 @@ done
mkdir -p $HOME/cloner-info
cp -f overcloudrc $HOME/cloner-info/
-admin_controller_ip=$(cat overcloudrc | grep -Eo -m 1 "192.0.2.[0-9]+")
+admin_controller_ip=$(cat overcloudrc | grep -Eo -m 1 "192.0.2.[0-9]+" | head -1)
netvirt_url="http://${admin_controller_ip}:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1"
source overcloudrc
counter=1
while [ "$counter" -le 10 ]; do
- if curl --fail --silent ${admin_controller_ip}:80 > /dev/null; then
- echo "Overcloud Horizon is up...Checking if OpenDaylight NetVirt is up..."
- if curl --fail --silent -u admin:admin ${netvirt_url} > /dev/null; then
+ echo "Checking if OpenStack is up"
+ if nc -z ${admin_controller_ip} 9696 > /dev/null; then
+ echo "Overcloud Neutron is up...Checking if OpenDaylight NetVirt is up..."
+ if curl --fail --silent -u admin:${SDN_CONTROLLER_PASSWORD} ${netvirt_url} > /dev/null; then
echo "OpenDaylight is up. Overcloud deployment complete"
exit 0
else
echo "OpenDaylight not yet up, try ${counter}"
fi
else
- echo "Horizon/Apache not yet up, try ${counter}"
+ echo "Neutron not yet up, try ${counter}"
fi
counter=$((counter+1))
sleep 60
diff --git a/jjb/apex/apex-upload-artifact.sh b/jjb/apex/apex-upload-artifact.sh
index 8743368fb..00a0a1c78 100755
--- a/jjb/apex/apex-upload-artifact.sh
+++ b/jjb/apex/apex-upload-artifact.sh
@@ -24,7 +24,9 @@ importkey () {
git clone https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng/ &> /dev/null
#this is where we import the siging key
if [ -f $WORKSPACE/releng/utils/gpg_import_key.sh ]; then
- source $WORKSPACE/releng/utils/gpg_import_key.sh
+ if ! $WORKSPACE/releng/utils/gpg_import_key.sh; then
+ echo "WARNING: Failed to run gpg key import"
+ fi
fi
}
@@ -75,14 +77,15 @@ uploadrpm () {
uploadsnap () {
# Uploads snapshot artifact and updated properties file
echo "Uploading snapshot artifacts"
+ # snapshot dir is the same node in the create job workspace
+ # only 1 promotion job can run at a time on a slave
+ snapshot_dir="${WORKSPACE}/../apex-create-snapshot"
if [ -z "$SNAP_TYPE" ]; then
echo "ERROR: SNAP_TYPE not provided...exiting"
exit 1
fi
- gsutil cp $WORKSPACE/apex-${SNAP_TYPE}-snap-`date +%Y-%m-%d`.tar.gz gs://$GS_URL/ > gsutil.iso.log
- if [ "$SNAP_TYPE" == 'csit' ]; then
- gsutil cp $WORKSPACE/snapshot.properties gs://$GS_URL/snapshot.properties > gsutil.latest.log
- fi
+ gsutil cp ${snapshot_dir}/apex-${SNAP_TYPE}-snap-`date +%Y-%m-%d`.tar.gz gs://$GS_URL/ > gsutil.iso.log
+ gsutil cp ${snapshot_dir}/snapshot.properties gs://$GS_URL/snapshot.properties > gsutil.latest.log
echo "Upload complete for Snapshot"
}
@@ -109,8 +112,8 @@ fi
if [ "$ARTIFACT_TYPE" == 'snapshot' ]; then
uploadsnap
elif [ "$ARTIFACT_TYPE" == 'iso' ]; then
- if [[ "$ARTIFACT_VERSION" =~ dev || "$BRANCH" == 'master' ]]; then
- echo "Skipping ISO artifact upload for ${ARTIFACT_TYPE} due to dev/master build"
+ if [[ "$ARTIFACT_VERSION" =~ dev || "$BRANCH" != 'stable/fraser' ]]; then
+ echo "Skipping ISO artifact upload for ${ARTIFACT_TYPE} due to dev/${BRANCH} build"
exit 0
fi
if [[ -n "$SIGN_ARTIFACT" && "$SIGN_ARTIFACT" == "true" ]]; then
@@ -119,8 +122,8 @@ elif [ "$ARTIFACT_TYPE" == 'iso' ]; then
uploadiso
elif [ "$ARTIFACT_TYPE" == 'rpm' ]; then
if [[ "$ARTIFACT_VERSION" =~ dev ]]; then
- if [ "$BRANCH" == 'master' ]; then
- echo "will not upload artifacts, master uses upstream"
+ if [[ "$BRANCH" != 'stable/fraser' ]]; then
+ echo "will not upload artifacts, ${BRANCH} uses upstream"
ARTIFACT_TYPE=none
else
echo "dev build detected, will upload image tarball"
@@ -133,7 +136,7 @@ elif [ "$ARTIFACT_TYPE" == 'rpm' ]; then
RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL)
SRPM_INSTALL_PATH=$BUILD_DIRECTORY
SRPM_LIST=$SRPM_INSTALL_PATH/$(basename $OPNFV_SRPM_URL)
- if [ "$BRANCH" != 'master' ]; then
+ if [[ "$BRANCH" == 'stable/fraser' ]]; then
VERSION_EXTENSION=$(echo $(basename $OPNFV_RPM_URL) | sed 's/opnfv-apex-//')
RPM_LIST+=" ${RPM_INSTALL_PATH}/opnfv-apex-undercloud-${VERSION_EXTENSION}"
RPM_LIST+=" ${RPM_INSTALL_PATH}/python34-opnfv-apex-${VERSION_EXTENSION}"
diff --git a/jjb/apex/apex-verify-jobs.yaml b/jjb/apex/apex-verify-jobs.yaml
index 7dbd6709b..15e68261a 100644
--- a/jjb/apex/apex-verify-jobs.yaml
+++ b/jjb/apex/apex-verify-jobs.yaml
@@ -10,12 +10,17 @@
- master: &master
branch: '{stream}'
gs-pathname: ''
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-noha'
+ disabled: false
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ verify-scenario: 'os-nosdn-nofeature-ha'
disabled: false
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-ha'
disabled: false
- danube: &danube
branch: 'stable/{stream}'
@@ -194,7 +199,11 @@
max-per-node: 3
max-total: 10
option: 'project'
-
+ - build-blocker:
+ use-build-blocker: true
+ blocking-level: 'NODE'
+ blocking-jobs:
+ - 'apex-.*-promote.*'
builders:
- description-setter:
description: "Built on $NODE_NAME"
@@ -243,7 +252,9 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- node-parameters: false
+ FUNCTEST_SUITE_NAME=tempest_smoke
+ FUNCTEST_MODE=testcase
+ node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
git-revision: true
@@ -305,10 +316,12 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-virtual.*'
+ - 'apex-.*-promote.*'
+ - 'odl-netvirt.*'
- throttle:
max-per-node: 1
max-total: 10
@@ -340,6 +353,18 @@
kill-phase-on: FAILURE
abort-all-job: true
git-revision: true
+ - shell: |
+ features=$(echo $DEPLOY_SCENARIO | sed -r -n 's/os-.+-(.+)-(noha|ha)/\1/p')
+ if [ "$features" == 'rocky' ]; then
+ echo "DOCKER_TAG=hunter" > functest_tag
+ elif [[ "$features" =~ 'rocky' ]]; then
+ echo "DOCKER_TAG=hunter" > functest_tag
+ else
+ echo "DOCKER_TAG=''" > functest_tag
+ fi
+ - inject:
+ properties-file: functest_tag
+ override-build-parameters: true
- multijob:
name: functest-smoke
condition: ALWAYS
@@ -348,14 +373,16 @@
current-parameters: false
predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
- FUNCTEST_MODE=tier
- FUNCTEST_TIER=healthcheck
+ DOCKER_TAG=$DOCKER_TAG
+ FUNCTEST_SUITE_NAME=tempest_smoke
+ FUNCTEST_MODE=testcase
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: NEVER
+ enable-condition: "def m = '$DEPLOY_SCENARIO' != 'k8s-nosdn-nofeature-noha'"
abort-all-job: true
git-revision: false
- multijob:
diff --git a/jjb/apex/apex.yaml b/jjb/apex/apex.yaml
index 4e8e7cf40..80a4d82f5 100644
--- a/jjb/apex/apex.yaml
+++ b/jjb/apex/apex.yaml
@@ -8,12 +8,13 @@
- 'apex-virtual-{stream}'
- 'apex-deploy-{platform}-{stream}'
- 'apex-daily-{stream}'
- - 'apex-csit-promote-daily-{stream}-{os_version}'
+ - 'apex-{snap_type}-promote-daily-{stream}-os-{os_version}-{topology}'
- 'apex-fdio-promote-daily-{stream}'
- 'apex-{scenario}-baremetal-{scenario_stream}'
- 'apex-testsuite-{scenario}-baremetal-{scenario_stream}'
- 'apex-upload-snapshot'
- 'apex-create-snapshot'
+ - 'apex-fetch-snap-info'
- 'apex-flex-daily-os-nosdn-nofeature-ha-{stream}'
- 'apex-dovetail-daily-os-nosdn-nofeature-ha-baremetal-danube'
# stream: branch with - in place of / (eg. stable-arno)
@@ -25,17 +26,27 @@
build-slave: 'apex-build-master'
virtual-slave: 'apex-virtual-master'
baremetal-slave: 'apex-baremetal-master'
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-noha'
scenario_stream: 'master'
disable_daily: false
disable_promote: false
+ - gambia: &gambia
+ branch: 'stable/gambia'
+ gs-pathname: '/gambia'
+ build-slave: 'apex-build-master'
+ virtual-slave: 'apex-virtual-master'
+ baremetal-slave: 'apex-baremetal-master'
+ verify-scenario: 'os-nosdn-nofeature-ha'
+ scenario_stream: 'gambia'
+ disable_daily: false
+ disable_promote: false
- fraser: &fraser
branch: 'stable/fraser'
gs-pathname: '/fraser'
build-slave: 'apex-build-master'
virtual-slave: 'apex-virtual-master'
baremetal-slave: 'apex-baremetal-master'
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-ha'
scenario_stream: 'fraser'
disable_daily: false
disable_promote: true
@@ -62,36 +73,34 @@
disable_promote: true
scenario:
- - 'os-nosdn-nofeature-noha':
- <<: *fraser
- 'os-nosdn-nofeature-ha':
<<: *fraser
- - 'os-odl-nofeature-ha':
+ - 'os-odl-bgpvpn-ha':
<<: *fraser
+ - 'os-nosdn-nofeature-noha':
+ <<: *gambia
+ - 'os-nosdn-nofeature-ha':
+ <<: *gambia
+ - 'os-nosdn-nofeature-ha-ipv6':
+ <<: *gambia
- 'os-odl-nofeature-noha':
- <<: *fraser
+ <<: *gambia
+ - 'os-odl-nofeature-ha':
+ <<: *gambia
+ - 'k8s-nosdn-nofeature-noha':
+ <<: *gambia
- 'os-odl-bgpvpn-ha':
- <<: *fraser
- - 'os-ovn-nofeature-noha':
- <<: *fraser
- - 'os-nosdn-fdio-noha':
- <<: *fraser
- - 'os-nosdn-fdio-ha':
- <<: *fraser
- - 'os-nosdn-bar-ha':
- <<: *fraser
- - 'os-nosdn-bar-noha':
- <<: *fraser
- - 'os-nosdn-ovs_dpdk-noha':
- <<: *fraser
- - 'os-nosdn-ovs_dpdk-ha':
- <<: *fraser
- - 'os-odl-sfc-noha':
- <<: *fraser
+ <<: *gambia
+ - 'os-odl-bgpvpn-noha':
+ <<: *gambia
- 'os-odl-sfc-ha':
- <<: *fraser
+ <<: *gambia
+ - 'os-odl-sfc-noha':
+ <<: *gambia
- 'os-nosdn-calipso-noha':
- <<: *fraser
+ <<: *gambia
+ - 'os-ovn-nofeature-ha':
+ <<: *gambia
- 'os-nosdn-nofeature-noha':
<<: *danube
- 'os-nosdn-nofeature-ha':
@@ -144,13 +153,51 @@
<<: *danube
- 'os-ovn-nofeature-noha':
<<: *danube
+ - 'os-nosdn-nofeature-noha':
+ <<: *master
+ - 'os-nosdn-nofeature-ha':
+ <<: *master
+ - 'os-nosdn-nofeature-ha-ipv6':
+ <<: *master
- 'os-odl-nofeature-noha':
<<: *master
- 'os-odl-nofeature-ha':
<<: *master
- - 'os-odl-queens-noha':
+ - 'os-nosdn-rocky-noha':
+ <<: *master
+ - 'os-nosdn-rocky-ha':
+ <<: *master
+ - 'os-nosdn-rocky-ha-ipv6':
+ <<: *master
+ - 'os-odl-rocky-noha':
+ <<: *master
+ - 'os-odl-rocky-ha':
<<: *master
- - 'os-odl-queens-ha':
+ - 'k8s-nosdn-nofeature-noha':
+ <<: *master
+ - 'os-odl-bgpvpn-ha':
+ <<: *master
+ - 'os-odl-bgpvpn-noha':
+ <<: *master
+ - 'os-odl-bgpvpn_queens-ha':
+ <<: *master
+ - 'os-odl-bgpvpn_queens-noha':
+ <<: *master
+ - 'os-odl-sfc-ha':
+ <<: *master
+ - 'os-odl-sfc-noha':
+ <<: *master
+ - 'os-odl-sfc_rocky-ha':
+ <<: *master
+ - 'os-odl-sfc_rocky-noha':
+ <<: *master
+ - 'os-nosdn-calipso-noha':
+ <<: *master
+ - 'os-nosdn-calipso_rocky-noha':
+ <<: *master
+ - 'os-ovn-nofeature-ha':
+ <<: *master
+ - 'os-ovn-rocky-ha':
<<: *master
- 'os-nosdn-nofeature-noha':
<<: *euphrates
@@ -186,19 +233,32 @@
<<: *euphrates
- 'os-odl-sfc-ha':
<<: *euphrates
- - 'os-nosdn-calipso-noha':
- <<: *euphrates
platform:
- 'baremetal'
- 'virtual'
os_version:
- - 'pike'
- - 'queens'
- - 'master'
-
-
+ - 'queens':
+ os_scenario: 'nofeature'
+ odl_branch: 'stable/oxygen'
+ - 'rocky':
+ os_scenario: 'rocky'
+ odl_branch: 'stable/oxygen'
+ - 'master':
+ os_scenario: 'nofeature'
+ odl_branch: 'stable/fluorine'
+
+ topology:
+ - 'noha'
+ - 'ha'
+ - 'noha-allinone'
+
+ snap_type:
+ - csit:
+ sdn: 'odl'
+ - functest:
+ sdn: 'nosdn'
# Fetch Logs Job
- job-template:
name: 'apex-fetch-logs-{stream}'
@@ -252,7 +312,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: false
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-deploy.*'
- throttle:
@@ -329,13 +389,14 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-deploy.*'
- 'functest.*'
- 'yardstick.*'
- 'dovetail.*'
- 'storperf.*'
+ - 'odl-netvirt.*'
- throttle:
max-per-node: 1
max-total: 10
@@ -365,6 +426,7 @@
parameters:
- '{project}-defaults'
- '{project}-virtual-{stream}-defaults'
+ - 'functest-suite-parameter'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -383,13 +445,14 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-runner.*'
- - 'apex-.*-promote.*'
- 'apex-run.*'
- 'apex-virtual-.*'
- 'apex-verify-gate-.*'
+ - 'odl-netvirt.*'
+ - 'apex-.*-promote.*'
- throttle:
max-per-node: 1
max-total: 10
@@ -412,6 +475,7 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ PROMOTE=$PROMOTE
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -424,7 +488,8 @@
current-parameters: false
predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
- FUNCTEST_SUITE_NAME=healthcheck
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
GERRIT_BRANCH=$GERRIT_BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
@@ -476,7 +541,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -516,6 +581,11 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
+ - shell:
+ !include-raw-escape: ./apex-functest-scenario.sh
+ - inject:
+ properties-file: functest_scenario
+ override-build-parameters: true
- multijob:
name: 'OPNFV Test Suite'
condition: ALWAYS
@@ -523,8 +593,9 @@
- name: 'apex-testsuite-{scenario}-baremetal-{scenario_stream}'
node-parameters: true
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
@@ -565,16 +636,19 @@
name: DEPLOY_SCENARIO
default: '{scenario}'
description: "Scenario to deploy with."
+ - string:
+ name: DOCKER_TAG
+ default: ''
+ description: Default docker tag to pass to functest
properties:
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
- - 'apex-.*-promote.*'
- 'apex-run.*'
- 'apex-testsuite-.+-baremetal-.+'
- throttle:
@@ -592,8 +666,9 @@
- name: 'functest-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
kill-phase-on: NEVER
abort-all-job: false
git-revision: false
@@ -613,28 +688,26 @@
name: Dovetail-proposed_tests
condition: ALWAYS
projects:
- - name: 'dovetail-apex-baremetal-proposed_tests-{scenario_stream}'
+ - name: 'dovetail-apex-baremetal-default-mandatory-{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 == 1"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
abort-all-job: false
git-revision: false
- multijob:
name: Dovetail-default
condition: ALWAYS
projects:
- - name: 'dovetail-apex-baremetal-default-{scenario_stream}'
+ - name: 'dovetail-apex-baremetal-default-optional-{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"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
abort-all-job: false
git-revision: false
- multijob:
@@ -688,7 +761,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-daily.*'
@@ -729,17 +802,28 @@
git-revision: true
- apex-builder-{stream}
+# snapshot info fetch
+- job-template:
+ name: 'apex-fetch-snap-info'
+
+ disabled: false
+
+ parameters:
+ - '{project}-defaults'
+
+ builders:
+ - shell:
+ !include-raw-escape: ./apex-fetch-snap-info.sh
+
# snapshot create
- job-template:
name: 'apex-create-snapshot'
- # Job template for clean
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
-
disabled: false
+ parameters:
+ - '{project}-defaults'
+
builders:
- shell:
!include-raw-escape: ./apex-snapshot-create.sh
@@ -748,13 +832,11 @@
- job-template:
name: 'apex-upload-snapshot'
- # Job template for clean
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
-
disabled: false
+ parameters:
+ - '{project}-defaults'
+
builders:
- inject:
properties-content: ARTIFACT_TYPE=snapshot
@@ -762,7 +844,7 @@
# CSIT promote
- job-template:
- name: 'apex-csit-promote-daily-{stream}-{os_version}'
+ name: 'apex-{snap_type}-promote-daily-{stream}-os-{os_version}-{topology}'
# Job template for promoting CSIT Snapshots
#
@@ -782,54 +864,133 @@
branch: '{branch}'
- apex-parameter:
gs-pathname: '{gs-pathname}'
-
+ - string:
+ name: ARTIFACT_VERSION
+ default: dev
+ description: "Used for overriding the ARTIFACT_VERSION"
+ - string:
+ name: PROMOTE
+ default: 'True'
+ description: "Used for overriding the PROMOTE"
+ - string:
+ name: GS_URL
+ default: 'artifacts.opnfv.org/apex/{os_version}/{topology}'
+ description: "User for overriding GS_URL from apex params"
+ - string:
+ name: OS_VERSION
+ default: '{os_version}'
+ description: OpenStack version short name
+ - string:
+ name: ODL_BRANCH
+ default: '{odl_branch}'
+ description: ODL branch being used
+ - string:
+ name: FORCE_PROMOTE
+ default: 'False'
+ description: "Used to force promotion and skip CSIT"
+ - string:
+ name: SNAP_TYPE
+ default: '{snap_type}'
+ description: Type of snapshot to promote
properties:
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- - 'apex-deploy.*'
- 'apex-runner.*'
- 'apex-daily.*'
+ - 'apex-.*-promote.*'
+ - 'odl-netvirt.*'
+ - throttle:
+ max-per-node: 1
+ max-total: 10
+ option: 'project'
triggers:
- - timed: '0 12 * * 0'
+ - '{stream}-{snap_type}-{os_version}'
builders:
- multijob:
- name: deploy-virtual
+ name: apex-virtual-deploy
condition: SUCCESSFUL
projects:
- name: 'apex-deploy-virtual-{stream}'
- current-parameters: false
+ current-parameters: true
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-{os_version}-noha
+ DEPLOY_SCENARIO=os-{sdn}-{os_scenario}-{topology}
OPNFV_CLEAN=yes
GERRIT_BRANCH=$GERRIT_BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- PROMOTE=True
+ node-parameters: true
+ kill-phase-on: FAILURE
+ abort-all-job: true
+ git-revision: true
+ - multijob:
+ name: fetch snapshot info
+ condition: SUCCESSFUL
+ projects:
+ - name: 'apex-fetch-snap-info'
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
git-revision: false
- multijob:
- name: functest-smoke
+ name: test phase
condition: SUCCESSFUL
+ execution-type: SEQUENTIALLY
projects:
+ - name: cperf-apex-csit-master
+ predefined-parameters: |
+ ODL_BRANCH=$ODL_BRANCH
+ RC_FILE_PATH=/tmp/csit/overcloudrc
+ NODE_FILE_PATH=/tmp/csit/node.yaml
+ SSH_KEY_PATH=/tmp/csit/id_rsa
+ ODL_CONTAINERIZED=true
+ OS_VERSION=$OS_VERSION
+ SKIP_CSIT=$FORCE_PROMOTE
+ SNAP_TYPE=$SNAP_TYPE
+ node-parameters: true
+ kill-phase-on: NEVER
+ abort-all-job: false
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /csit/"
+ - name: cperf-upload-logs-csit
+ predefined-parameters: |
+ ODL_BRANCH=$ODL_BRANCH
+ OS_VERSION=$OS_VERSION
+ SNAP_TYPE=$SNAP_TYPE
+ node-parameters: true
+ kill-phase-on: FAILURE
+ abort-all-job: false
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /csit/"
- name: 'functest-apex-virtual-suite-{stream}'
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-{os_version}-noha
- FUNCTEST_SUITE_NAME=tempest_smoke_serial
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
+ FUNCTEST_SUITE_NAME=tempest_smoke
+ FUNCTEST_MODE=testcase
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
+ kill-phase-on: NEVER
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /functest/"
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-fetch-logs-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ node-parameters: true
+ kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- multijob:
@@ -837,9 +998,7 @@
condition: SUCCESSFUL
projects:
- name: 'apex-create-snapshot'
- current-parameters: false
- predefined-parameters: |
- SNAP_TYPE=csit
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -849,9 +1008,7 @@
condition: SUCCESSFUL
projects:
- name: 'apex-upload-snapshot'
- current-parameters: false
- predefined-parameters: |
- SNAP_TYPE=csit
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -883,7 +1040,7 @@
properties:
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-deploy.*'
@@ -955,7 +1112,7 @@
project-type: 'multijob'
- disabled: false
+ disabled: true
node: 'flex-pod2'
@@ -989,7 +1146,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -1058,7 +1215,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -1152,14 +1309,6 @@
name: Baremetal Deploy and Test Phase
condition: SUCCESSFUL
projects:
- - name: 'apex-os-nosdn-nofeature-noha-baremetal-fraser'
- node-parameters: false
- current-parameters: false
- predefined-parameters: |
- OPNFV_CLEAN=yes
- kill-phase-on: NEVER
- abort-all-job: true
- git-revision: false
- name: 'apex-os-nosdn-nofeature-ha-baremetal-fraser'
node-parameters: false
current-parameters: false
@@ -1168,7 +1317,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-nofeature-ha-baremetal-fraser'
+ - name: 'apex-os-odl-bgpvpn-ha-baremetal-fraser'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1176,7 +1325,16 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-nofeature-noha-baremetal-fraser'
+
+# gambia Builder
+- builder:
+ name: apex-builder-gambia
+ builders:
+ - multijob:
+ name: Baremetal Deploy and Test Phase
+ condition: SUCCESSFUL
+ projects:
+ - name: 'apex-os-nosdn-nofeature-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1184,7 +1342,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-bgpvpn-ha-baremetal-fraser'
+ - name: 'apex-os-nosdn-nofeature-ha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1192,7 +1350,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-ovn-nofeature-noha-baremetal-fraser'
+ - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1200,7 +1358,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-fdio-noha-baremetal-fraser'
+ - name: 'apex-os-odl-nofeature-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1208,7 +1366,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-fdio-ha-baremetal-fraser'
+ - name: 'apex-os-odl-nofeature-ha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1216,7 +1374,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-bar-ha-baremetal-fraser'
+ - name: 'apex-k8s-nosdn-nofeature-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1224,7 +1382,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-bar-noha-baremetal-fraser'
+ - name: 'apex-os-odl-bgpvpn-ha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1232,7 +1390,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-ovs_dpdk-noha-baremetal-fraser'
+ - name: 'apex-os-odl-bgpvpn-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1240,7 +1398,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-ovs_dpdk-ha-baremetal-fraser'
+ - name: 'apex-os-odl-sfc-ha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1248,7 +1406,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-sfc-noha-baremetal-fraser'
+ - name: 'apex-os-odl-sfc-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1256,7 +1414,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-sfc-ha-baremetal-fraser'
+ - name: 'apex-os-nosdn-calipso-noha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1264,7 +1422,7 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-calipso-noha-baremetal-fraser'
+ - name: 'apex-os-ovn-nofeature-ha-baremetal-gambia'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1498,6 +1656,30 @@
name: Baremetal Deploy and Test Phase
condition: SUCCESSFUL
projects:
+ - name: 'apex-os-nosdn-nofeature-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-nofeature-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
- name: 'apex-os-odl-nofeature-noha-baremetal-master'
node-parameters: false
current-parameters: false
@@ -1514,7 +1696,63 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-queens-noha-baremetal-master'
+ - name: 'apex-os-nosdn-rocky-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-rocky-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-rocky-ha-ipv6-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-rocky-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-rocky-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-k8s-nosdn-nofeature-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-bgpvpn-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-bgpvpn-noha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1522,7 +1760,79 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-odl-queens-ha-baremetal-master'
+ - name: 'apex-os-odl-bgpvpn_queens-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-bgpvpn_queens-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-sfc-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-sfc-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-sfc_rocky-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-odl-sfc_rocky-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-calipso-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-nosdn-calipso_rocky-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-ovn-nofeature-ha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-os-ovn-rocky-ha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
@@ -1675,14 +1985,6 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-os-nosdn-calipso-noha-baremetal-euphrates'
- node-parameters: false
- current-parameters: false
- predefined-parameters: |
- OPNFV_CLEAN=yes
- kill-phase-on: NEVER
- abort-all-job: true
- git-revision: false
- builder:
name: 'apex-upload-artifact'
builders:
@@ -1709,6 +2011,7 @@
#######################
# trigger macros
+# timed is in format: 'min hour daymonth month dayweek'
########################
- trigger:
name: 'apex-master'
@@ -1716,6 +2019,11 @@
- timed: '0 0 1-31/2 * *'
- trigger:
+ name: 'apex-gambia'
+ triggers:
+ - timed: '0 4 2-30/2 * *'
+
+- trigger:
name: 'apex-fraser'
triggers:
- timed: '0 0 2-30/2 * *'
@@ -1729,3 +2037,152 @@
name: 'apex-danube'
triggers:
- timed: '0 3 1 1 7'
+
+- trigger:
+ name: 'master-csit-master'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'master-csit-rocky'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'master-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-queens'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'fraser-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-queens'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'master-functest-master'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'master-functest-rocky'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'master-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-queens'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'fraser-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-queens'
+ triggers:
+ - timed: ''
diff --git a/jjb/apex/apex.yaml.j2 b/jjb/apex/apex.yaml.j2
index 5230e7a2c..7203cb4b9 100644
--- a/jjb/apex/apex.yaml.j2
+++ b/jjb/apex/apex.yaml.j2
@@ -8,12 +8,13 @@
- 'apex-virtual-{stream}'
- 'apex-deploy-{platform}-{stream}'
- 'apex-daily-{stream}'
- - 'apex-csit-promote-daily-{stream}-{os_version}'
+ - 'apex-{snap_type}-promote-daily-{stream}-os-{os_version}-{topology}'
- 'apex-fdio-promote-daily-{stream}'
- 'apex-{scenario}-baremetal-{scenario_stream}'
- 'apex-testsuite-{scenario}-baremetal-{scenario_stream}'
- 'apex-upload-snapshot'
- 'apex-create-snapshot'
+ - 'apex-fetch-snap-info'
- 'apex-flex-daily-os-nosdn-nofeature-ha-{stream}'
- 'apex-dovetail-daily-os-nosdn-nofeature-ha-baremetal-danube'
# stream: branch with - in place of / (eg. stable-arno)
@@ -25,17 +26,27 @@
build-slave: 'apex-build-master'
virtual-slave: 'apex-virtual-master'
baremetal-slave: 'apex-baremetal-master'
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-noha'
scenario_stream: 'master'
disable_daily: false
disable_promote: false
+ - gambia: &gambia
+ branch: 'stable/gambia'
+ gs-pathname: '/gambia'
+ build-slave: 'apex-build-master'
+ virtual-slave: 'apex-virtual-master'
+ baremetal-slave: 'apex-baremetal-master'
+ verify-scenario: 'os-nosdn-nofeature-ha'
+ scenario_stream: 'gambia'
+ disable_daily: false
+ disable_promote: false
- fraser: &fraser
branch: 'stable/fraser'
gs-pathname: '/fraser'
build-slave: 'apex-build-master'
virtual-slave: 'apex-virtual-master'
baremetal-slave: 'apex-baremetal-master'
- verify-scenario: 'os-odl-nofeature-ha'
+ verify-scenario: 'os-nosdn-nofeature-ha'
scenario_stream: 'fraser'
disable_daily: false
disable_promote: true
@@ -74,11 +85,26 @@
- 'virtual'
os_version:
- - 'pike'
- - 'queens'
- - 'master'
-
-
+ - 'queens':
+ os_scenario: 'nofeature'
+ odl_branch: 'stable/oxygen'
+ - 'rocky':
+ os_scenario: 'rocky'
+ odl_branch: 'stable/oxygen'
+ - 'master':
+ os_scenario: 'nofeature'
+ odl_branch: 'stable/fluorine'
+
+ topology:
+ - 'noha'
+ - 'ha'
+ - 'noha-allinone'
+
+ snap_type:
+ - csit:
+ sdn: 'odl'
+ - functest:
+ sdn: 'nosdn'
# Fetch Logs Job
- job-template:
name: 'apex-fetch-logs-{stream}'
@@ -132,7 +158,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: false
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-deploy.*'
- throttle:
@@ -209,13 +235,14 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-deploy.*'
- 'functest.*'
- 'yardstick.*'
- 'dovetail.*'
- 'storperf.*'
+ - 'odl-netvirt.*'
- throttle:
max-per-node: 1
max-total: 10
@@ -245,6 +272,7 @@
parameters:
- '{project}-defaults'
- '{project}-virtual-{stream}-defaults'
+ - 'functest-suite-parameter'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -263,13 +291,14 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-runner.*'
- - 'apex-.*-promote.*'
- 'apex-run.*'
- 'apex-virtual-.*'
- 'apex-verify-gate-.*'
+ - 'odl-netvirt.*'
+ - 'apex-.*-promote.*'
- throttle:
max-per-node: 1
max-total: 10
@@ -292,6 +321,7 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ PROMOTE=$PROMOTE
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -304,7 +334,8 @@
current-parameters: false
predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
- FUNCTEST_SUITE_NAME=healthcheck
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
GERRIT_BRANCH=$GERRIT_BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
@@ -356,7 +387,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -396,6 +427,11 @@
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
+ - shell:
+ !include-raw-escape: ./apex-functest-scenario.sh
+ - inject:
+ properties-file: functest_scenario
+ override-build-parameters: true
- multijob:
name: 'OPNFV Test Suite'
condition: ALWAYS
@@ -403,8 +439,9 @@
- name: 'apex-testsuite-{scenario}-baremetal-{scenario_stream}'
node-parameters: true
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
@@ -445,16 +482,19 @@
name: DEPLOY_SCENARIO
default: '{scenario}'
description: "Scenario to deploy with."
+ - string:
+ name: DOCKER_TAG
+ default: ''
+ description: Default docker tag to pass to functest
properties:
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
- - 'apex-.*-promote.*'
- 'apex-run.*'
- 'apex-testsuite-.+-baremetal-.+'
- throttle:
@@ -472,8 +512,9 @@
- name: 'functest-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
kill-phase-on: NEVER
abort-all-job: false
git-revision: false
@@ -493,28 +534,26 @@
name: Dovetail-proposed_tests
condition: ALWAYS
projects:
- - name: 'dovetail-apex-baremetal-proposed_tests-{scenario_stream}'
+ - name: 'dovetail-apex-baremetal-default-mandatory-{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 == 1"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
abort-all-job: false
git-revision: false
- multijob:
name: Dovetail-default
condition: ALWAYS
projects:
- - name: 'dovetail-apex-baremetal-default-{scenario_stream}'
+ - name: 'dovetail-apex-baremetal-default-optional-{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"
+ enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/"
abort-all-job: false
git-revision: false
- multijob:
@@ -568,7 +607,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-daily.*'
@@ -609,17 +648,28 @@
git-revision: true
- apex-builder-{stream}
+# snapshot info fetch
+- job-template:
+ name: 'apex-fetch-snap-info'
+
+ disabled: false
+
+ parameters:
+ - '{project}-defaults'
+
+ builders:
+ - shell:
+ !include-raw-escape: ./apex-fetch-snap-info.sh
+
# snapshot create
- job-template:
name: 'apex-create-snapshot'
- # Job template for clean
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
-
disabled: false
+ parameters:
+ - '{project}-defaults'
+
builders:
- shell:
!include-raw-escape: ./apex-snapshot-create.sh
@@ -628,13 +678,11 @@
- job-template:
name: 'apex-upload-snapshot'
- # Job template for clean
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
-
disabled: false
+ parameters:
+ - '{project}-defaults'
+
builders:
- inject:
properties-content: ARTIFACT_TYPE=snapshot
@@ -642,7 +690,7 @@
# CSIT promote
- job-template:
- name: 'apex-csit-promote-daily-{stream}-{os_version}'
+ name: 'apex-{snap_type}-promote-daily-{stream}-os-{os_version}-{topology}'
# Job template for promoting CSIT Snapshots
#
@@ -662,54 +710,133 @@
branch: '{branch}'
- apex-parameter:
gs-pathname: '{gs-pathname}'
-
+ - string:
+ name: ARTIFACT_VERSION
+ default: dev
+ description: "Used for overriding the ARTIFACT_VERSION"
+ - string:
+ name: PROMOTE
+ default: 'True'
+ description: "Used for overriding the PROMOTE"
+ - string:
+ name: GS_URL
+ default: 'artifacts.opnfv.org/apex/{os_version}/{topology}'
+ description: "User for overriding GS_URL from apex params"
+ - string:
+ name: OS_VERSION
+ default: '{os_version}'
+ description: OpenStack version short name
+ - string:
+ name: ODL_BRANCH
+ default: '{odl_branch}'
+ description: ODL branch being used
+ - string:
+ name: FORCE_PROMOTE
+ default: 'False'
+ description: "Used to force promotion and skip CSIT"
+ - string:
+ name: SNAP_TYPE
+ default: '{snap_type}'
+ description: Type of snapshot to promote
properties:
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- - 'apex-deploy.*'
- 'apex-runner.*'
- 'apex-daily.*'
+ - 'apex-.*-promote.*'
+ - 'odl-netvirt.*'
+ - throttle:
+ max-per-node: 1
+ max-total: 10
+ option: 'project'
triggers:
- - timed: '0 12 * * 0'
+ - '{stream}-{snap_type}-{os_version}'
builders:
- multijob:
- name: deploy-virtual
+ name: apex-virtual-deploy
condition: SUCCESSFUL
projects:
- name: 'apex-deploy-virtual-{stream}'
- current-parameters: false
+ current-parameters: true
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-{os_version}-noha
+ DEPLOY_SCENARIO=os-{sdn}-{os_scenario}-{topology}
OPNFV_CLEAN=yes
GERRIT_BRANCH=$GERRIT_BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- PROMOTE=True
+ node-parameters: true
+ kill-phase-on: FAILURE
+ abort-all-job: true
+ git-revision: true
+ - multijob:
+ name: fetch snapshot info
+ condition: SUCCESSFUL
+ projects:
+ - name: 'apex-fetch-snap-info'
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
git-revision: false
- multijob:
- name: functest-smoke
+ name: test phase
condition: SUCCESSFUL
+ execution-type: SEQUENTIALLY
projects:
+ - name: cperf-apex-csit-master
+ predefined-parameters: |
+ ODL_BRANCH=$ODL_BRANCH
+ RC_FILE_PATH=/tmp/csit/overcloudrc
+ NODE_FILE_PATH=/tmp/csit/node.yaml
+ SSH_KEY_PATH=/tmp/csit/id_rsa
+ ODL_CONTAINERIZED=true
+ OS_VERSION=$OS_VERSION
+ SKIP_CSIT=$FORCE_PROMOTE
+ SNAP_TYPE=$SNAP_TYPE
+ node-parameters: true
+ kill-phase-on: NEVER
+ abort-all-job: false
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /csit/"
+ - name: cperf-upload-logs-csit
+ predefined-parameters: |
+ ODL_BRANCH=$ODL_BRANCH
+ OS_VERSION=$OS_VERSION
+ SNAP_TYPE=$SNAP_TYPE
+ node-parameters: true
+ kill-phase-on: FAILURE
+ abort-all-job: false
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /csit/"
- name: 'functest-apex-virtual-suite-{stream}'
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-{os_version}-noha
- FUNCTEST_SUITE_NAME=tempest_smoke_serial
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ DOCKER_TAG=$DOCKER_TAG
+ FUNCTEST_SUITE_NAME=tempest_smoke
+ FUNCTEST_MODE=testcase
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
+ kill-phase-on: NEVER
+ enable-condition: "def m = '$SNAP_TYPE' ==~ /functest/"
+ abort-all-job: true
+ git-revision: false
+ - name: 'apex-fetch-logs-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ GERRIT_BRANCH=$GERRIT_BRANCH
+ GERRIT_REFSPEC=$GERRIT_REFSPEC
+ GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+ GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ node-parameters: true
+ kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- multijob:
@@ -717,9 +844,7 @@
condition: SUCCESSFUL
projects:
- name: 'apex-create-snapshot'
- current-parameters: false
- predefined-parameters: |
- SNAP_TYPE=csit
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -729,9 +854,7 @@
condition: SUCCESSFUL
projects:
- name: 'apex-upload-snapshot'
- current-parameters: false
- predefined-parameters: |
- SNAP_TYPE=csit
+ current-parameters: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -763,7 +886,7 @@
properties:
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-deploy.*'
@@ -835,7 +958,7 @@
project-type: 'multijob'
- disabled: false
+ disabled: true
node: 'flex-pod2'
@@ -869,7 +992,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -938,7 +1061,7 @@
- logrotate-default
- build-blocker:
use-build-blocker: true
- block-level: 'NODE'
+ blocking-level: 'NODE'
blocking-jobs:
- 'apex-verify.*'
- 'apex-runner.*'
@@ -1070,6 +1193,7 @@
#######################
# trigger macros
+# timed is in format: 'min hour daymonth month dayweek'
########################
- trigger:
name: 'apex-master'
@@ -1077,6 +1201,11 @@
- timed: '0 0 1-31/2 * *'
- trigger:
+ name: 'apex-gambia'
+ triggers:
+ - timed: '0 4 2-30/2 * *'
+
+- trigger:
name: 'apex-fraser'
triggers:
- timed: '0 0 2-30/2 * *'
@@ -1091,3 +1220,151 @@
triggers:
- timed: '0 3 1 1 7'
+- trigger:
+ name: 'master-csit-master'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'master-csit-rocky'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'master-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-csit-queens'
+ triggers:
+ - timed: '0 5 * * *'
+
+- trigger:
+ name: 'fraser-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-csit-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-csit-queens'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'master-functest-master'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'master-functest-rocky'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'master-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'gambia-functest-queens'
+ triggers:
+ - timed: '0 3 * * *'
+
+- trigger:
+ name: 'fraser-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'fraser-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'euphrates-functest-queens'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-master'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-rocky'
+ triggers:
+ - timed: ''
+
+- trigger:
+ name: 'danube-functest-queens'
+ triggers:
+ - timed: ''
diff --git a/jjb/apex/scenarios.yaml.hidden b/jjb/apex/scenarios.yaml.hidden
index 8375f6163..a221699f1 100644
--- a/jjb/apex/scenarios.yaml.hidden
+++ b/jjb/apex/scenarios.yaml.hidden
@@ -1,24 +1,43 @@
master:
+ - 'os-nosdn-nofeature-noha'
+ - 'os-nosdn-nofeature-ha'
+ - 'os-nosdn-nofeature-ha-ipv6'
- 'os-odl-nofeature-noha'
- 'os-odl-nofeature-ha'
- - 'os-odl-queens-noha'
- - 'os-odl-queens-ha'
-fraser:
+ - 'os-nosdn-rocky-noha'
+ - 'os-nosdn-rocky-ha'
+ - 'os-nosdn-rocky-ha-ipv6'
+ - 'os-odl-rocky-noha'
+ - 'os-odl-rocky-ha'
+ - 'k8s-nosdn-nofeature-noha'
+ - 'os-odl-bgpvpn-ha'
+ - 'os-odl-bgpvpn-noha'
+ - 'os-odl-bgpvpn_queens-ha'
+ - 'os-odl-bgpvpn_queens-noha'
+ - 'os-odl-sfc-ha'
+ - 'os-odl-sfc-noha'
+ - 'os-odl-sfc_rocky-ha'
+ - 'os-odl-sfc_rocky-noha'
+ - 'os-nosdn-calipso-noha'
+ - 'os-nosdn-calipso_rocky-noha'
+ - 'os-ovn-nofeature-ha'
+ - 'os-ovn-rocky-ha'
+gambia:
- 'os-nosdn-nofeature-noha'
- 'os-nosdn-nofeature-ha'
- - 'os-odl-nofeature-ha'
+ - 'os-nosdn-nofeature-ha-ipv6'
- 'os-odl-nofeature-noha'
+ - 'os-odl-nofeature-ha'
+ - 'k8s-nosdn-nofeature-noha'
- 'os-odl-bgpvpn-ha'
- - 'os-ovn-nofeature-noha'
- - 'os-nosdn-fdio-noha'
- - 'os-nosdn-fdio-ha'
- - 'os-nosdn-bar-ha'
- - 'os-nosdn-bar-noha'
- - 'os-nosdn-ovs_dpdk-noha'
- - 'os-nosdn-ovs_dpdk-ha'
- - 'os-odl-sfc-noha'
+ - 'os-odl-bgpvpn-noha'
- 'os-odl-sfc-ha'
+ - 'os-odl-sfc-noha'
- 'os-nosdn-calipso-noha'
+ - 'os-ovn-nofeature-ha'
+fraser:
+ - 'os-nosdn-nofeature-ha'
+ - 'os-odl-bgpvpn-ha'
euphrates:
- 'os-nosdn-nofeature-noha'
- 'os-nosdn-nofeature-ha'
@@ -37,7 +56,6 @@ euphrates:
- 'os-nosdn-kvm_ovs_dpdk-ha'
- 'os-odl-sfc-noha'
- 'os-odl-sfc-ha'
- - 'os-nosdn-calipso-noha'
danube:
- 'os-nosdn-nofeature-noha'
- 'os-nosdn-nofeature-ha'
diff --git a/jjb/armband/armband-ci-jobs.yaml b/jjb/armband/armband-ci-jobs.yaml
index b8ffc16fa..2ab1a6d53 100644
--- a/jjb/armband/armband-ci-jobs.yaml
+++ b/jjb/armband/armband-ci-jobs.yaml
@@ -15,6 +15,11 @@
fraser: &fraser
stream: fraser
branch: 'stable/{stream}'
+ disabled: false
+ gs-pathname: '/{stream}'
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
# -------------------------------
@@ -33,16 +38,23 @@
# -------------------------------
# CI POD's
# -------------------------------
- # fraser
- # -------------------------------
+ # yamllint disable rule:key-duplicates
pod:
- # yamllint disable rule:key-duplicates
+ # -------------------------------
+ # fraser
+ # -------------------------------
- armband-baremetal:
<<: *baremetal
<<: *fraser
+ # -------------------------------
+ # gambia
+ # -------------------------------
+ - armband-baremetal:
+ <<: *baremetal
+ <<: *gambia
- armband-virtual:
<<: *virtual
- <<: *fraser
+ <<: *gambia
# -------------------------------
# master
# -------------------------------
@@ -66,11 +78,22 @@
auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
- 'os-nosdn-ovs-ha':
auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+ - 'os-nosdn-vpp-ha':
+ auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
# NOHA scenarios
- 'os-nosdn-nofeature-noha':
auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+ exclude:
+ # Dovetail (and only it) should run against Fraser HA baremetal scenarios
+ - scenario: os-nosdn-nofeature-noha
+ stream: fraser
+ - scenario: os-ovn-nofeature-ha
+ stream: fraser
+ - scenario: os-nosdn-vpp-ha
+ stream: fraser
+
jobs:
- '{installer}-{scenario}-{pod}-daily-{stream}'
- '{installer}-deploy-{pod}-daily-{stream}'
@@ -97,7 +120,7 @@
blocking-jobs:
- '{installer}-os-.*?-{pod}-daily-.*'
- 'armband-verify-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -126,28 +149,42 @@
DEPLOY_SCENARIO={scenario}
same-node: true
block: true
- - 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'
+ - conditional-step:
+ condition-kind: not
+ condition-operand:
+ condition-kind: regex-match
+ regex: 'fraser'
+ label: '{stream}'
+ steps:
+ - trigger-builds:
+ - project: 'functest-{installer}-{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: 'fraser'
+ 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'
# 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
@@ -161,11 +198,9 @@
- condition-kind: regex-match
regex: '.*-ha'
label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- SAT: true
- use-build-time: true
+ - condition-kind: regex-match
+ regex: 'fraser'
+ label: '{stream}'
steps:
- trigger-builds:
- project: 'dovetail-{installer}-{pod}-proposed_tests-{stream}'
@@ -184,11 +219,9 @@
- condition-kind: regex-match
regex: '.*-ha'
label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- SUN: true
- use-build-time: true
+ - condition-kind: regex-match
+ regex: 'fraser'
+ label: '{stream}'
steps:
- trigger-builds:
- project: 'dovetail-{installer}-{pod}-default-{stream}'
@@ -202,24 +235,17 @@
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
# Armband uses Fuel's log collection project job, no need to duplicate
- - conditional-step:
- condition-kind: not
- condition-operand:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
- steps:
- - trigger-builds:
- - project: 'fuel-collect-logs-{deploy-type}-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: 'fuel-collect-logs-{deploy-type}-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'
- job-template:
name: '{installer}-deploy-{pod}-daily-{stream}'
@@ -238,7 +264,7 @@
blocking-jobs:
- '{installer}-deploy-{pod}-daily-{stream}'
- '{installer}-deploy-generic-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
@@ -252,6 +278,9 @@
- string:
name: DEPLOY_SCENARIO
default: 'os-odl-nofeature-ha'
+ - string:
+ name: PROJECT
+ default: '{project}'
scm:
- git-scm
@@ -281,7 +310,7 @@
- trigger:
name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 1 * * 1'
+ - timed: '0 1 * * 2,7'
- trigger:
name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-master-trigger'
triggers:
@@ -289,39 +318,61 @@
- trigger:
name: 'fuel-os-odl-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 1 * * 3,7'
+ - timed: '0 1 * * 4,6'
- trigger:
name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: ''
+ - timed: '0 1 * * 1'
- trigger:
name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 1 * * 4'
+ - timed: '0 1 * * 3,5'
+- trigger:
+ name: 'fuel-os-nosdn-vpp-ha-armband-baremetal-master-trigger'
+ triggers:
+ - timed: ''
# ---------------------------------------------------------------------
-# Enea Armband CI Baremetal Triggers running against fraser branch
+# Enea Armband CI Baremetal Triggers running against gambia branch
# ---------------------------------------------------------------------
- trigger:
- name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-gambia-trigger'
triggers:
- - timed: '0 1 * * 2'
+ - timed: '10 1 * * 1,3'
- trigger:
- name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl-nofeature-ha-armband-baremetal-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-ha-armband-baremetal-gambia-trigger'
+ triggers:
+ - timed: '10 1 * * 5,7'
+- trigger:
+ name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-gambia-trigger'
+ triggers:
+ - timed: '10 1 * * 2'
+- trigger:
+ name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-gambia-trigger'
triggers:
- - timed: '0 1 * * 5'
+ - timed: '10 1 * * 4,6'
- trigger:
- name: 'fuel-os-ovn-nofeature-ha-armband-baremetal-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-armband-baremetal-gambia-trigger'
triggers:
- timed: ''
+# -------------------------------------------------------------------
+# Enea Armband CI Baremetal Triggers running against fraser branch (for Dovetail)
+# -------------------------------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-fraser-trigger'
+ triggers:
+ - timed: '5 13 * * 6,7'
+- trigger:
+ name: 'fuel-os-odl-nofeature-ha-armband-baremetal-fraser-trigger'
+ triggers:
+ - timed: '0 13 * * 6'
- trigger:
name: 'fuel-os-nosdn-ovs-ha-armband-baremetal-fraser-trigger'
triggers:
- - timed: '0 1 * * 6'
-
+ - timed: '0 13 * * 7'
# --------------------------------------------------------------
# Enea Armband CI Virtual Triggers running against master branch
# --------------------------------------------------------------
@@ -345,26 +396,34 @@
name: 'fuel-os-nosdn-ovs-ha-armband-virtual-master-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-vpp-ha-armband-virtual-master-trigger'
+ triggers:
+ - timed: ''
# -------------------------------------------------------------------
-# Enea Armband CI Virtual Triggers running against fraser branch
+# Enea Armband CI Virtual Triggers running against gambia branch
# -------------------------------------------------------------------
- trigger:
- name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-gambia-trigger'
+ triggers:
+ - timed: ''
+- trigger:
+ name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-ha-armband-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-odl-nofeature-ha-armband-virtual-fraser-trigger'
+ name: 'fuel-os-ovn-nofeature-ha-armband-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-ovn-nofeature-ha-armband-virtual-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-armband-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-ovs-ha-armband-virtual-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-armband-virtual-gambia-trigger'
triggers:
- timed: ''
diff --git a/jjb/armband/armband-rtd-jobs.yaml b/jjb/armband/armband-rtd-jobs.yaml
new file mode 100644
index 000000000..130400899
--- /dev/null
+++ b/jjb/armband/armband-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: armband-rtd
+ project: armband
+ project-name: armband
+
+ project-pattern: 'armband'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-armband/47349/'
+ rtd-token: 'b8f7de9a1f2baf063ccc6afb52dbc8e6308b6ab5'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/armband/armband-verify-jobs.yaml b/jjb/armband/armband-verify-jobs.yaml
index 08cf3c084..57d80aeac 100644
--- a/jjb/armband/armband-verify-jobs.yaml
+++ b/jjb/armband/armband-verify-jobs.yaml
@@ -4,7 +4,6 @@
project: 'armband'
- installer: 'fuel'
#####################################
# branch definitions
#####################################
@@ -13,30 +12,22 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser:
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
#####################################
- # patch verification phases
- #####################################
- phase:
- - 'deploy-virtual':
- slave-label: 'armband-virtual'
- #####################################
# jobs
#####################################
jobs:
- 'armband-verify-{stream}'
- - 'armband-verify-{phase}-{stream}'
+
#####################################
# job templates
#####################################
- job-template:
name: 'armband-verify-{stream}'
- project-type: multijob
-
disabled: '{obj:disabled}'
concurrent: true
@@ -45,14 +36,8 @@
- logrotate-default
- throttle:
enabled: true
- max-total: 4
+ max-total: 2
option: 'project'
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'fuel-os-.*?-virtual-daily-.*'
- - 'armband-verify-.*'
- block-level: 'NODE'
scm:
- git-scm-gerrit
@@ -97,114 +82,19 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'armband-virtual-defaults':
- installer: '{installer}'
- - '{installer}-defaults':
- gs-pathname: '{gs-pathname}'
- - string:
- name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-ha'
+ - 'opnfv-build-ubuntu-arm-defaults'
builders:
- description-setter:
description: "Built on $NODE_NAME"
- - multijob:
- name: deploy-virtual
- condition: SUCCESSFUL
- projects:
- - name: 'armband-verify-deploy-virtual-{stream}'
- current-parameters: false
- predefined-parameters: |
- BRANCH=$BRANCH
- GERRIT_REFSPEC=$GERRIT_REFSPEC
- GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
- GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- node-parameters: false
- kill-phase-on: FAILURE
- abort-all-job: true
-
- - multijob:
- name: smoke-test
- condition: SUCCESSFUL
- projects:
- # Use Functest job definition from jjb/functest/functest-daily-jobs
- - name: 'functest-fuel-armband-virtual-suite-{stream}'
- current-parameters: false
- predefined-parameters: |
- FUNCTEST_MODE=tier
- FUNCTEST_TIER=healthcheck
- # Should be in sync with fuel-deploy.sh default scenario
- DEPLOY_SCENARIO=$DEPLOY_SCENARIO
- BRANCH=$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: NEVER
- abort-all-job: true
- - name: 'functest-fuel-armband-virtual-suite-{stream}'
- current-parameters: false
- predefined-parameters: |
- FUNCTEST_MODE=testcase
- FUNCTEST_SUITE_NAME=vping_ssh
- # Should be in sync with fuel-deploy.sh default scenario
- DEPLOY_SCENARIO=$DEPLOY_SCENARIO
- BRANCH=$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: NEVER
- abort-all-job: true
-
-- job-template:
- name: 'armband-verify-{phase}-{stream}'
-
- disabled: '{obj:disabled}'
-
- concurrent: true
-
- properties:
- - logrotate-default
- - throttle:
- enabled: true
- max-total: 2
- max-per-node: 1
- option: 'project'
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'armband-verify-deploy-.*'
- block-level: 'NODE'
-
- scm:
- - git-scm-gerrit
+ - 'armband-verify-builder-macro'
- wrappers:
- - ssh-agent-wrapper
- - timeout:
- timeout: 360
- fail: true
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - '{slave-label}-defaults'
- - 'armband-virtual-defaults':
- installer: '{installer}'
- - '{installer}-defaults':
- gs-pathname: '{gs-pathname}'
-
- builders:
- - description-setter:
- description: "Built on $NODE_NAME"
- - '{project}-verify-{phase}-macro'
#####################################
# builder macros
#####################################
- builder:
- name: 'armband-verify-deploy-virtual-macro'
+ name: 'armband-verify-builder-macro'
builders:
- - shell:
- !include-raw: ../fuel/fuel-deploy.sh
+ - shell: |
+ #!/bin/bash
+ make fuel-patches-import
diff --git a/jjb/auto/auto-rtd-jobs.yaml b/jjb/auto/auto-rtd-jobs.yaml
new file mode 100644
index 000000000..f23fe95d9
--- /dev/null
+++ b/jjb/auto/auto-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: auto-rtd
+ project: auto
+ project-name: auto
+
+ project-pattern: 'auto'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-auto/47350/'
+ rtd-token: '3c2277762678c97e59d24c83201194d6b56d7983'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/auto/auto.yaml b/jjb/auto/auto.yaml
index c28dc5618..abba9c8d3 100644
--- a/jjb/auto/auto.yaml
+++ b/jjb/auto/auto.yaml
@@ -1,8 +1,219 @@
---
+# jenkins job templates for Auto
- project:
- name: auto
+ name: 'auto-ci-jobs'
+ project: 'auto'
- project: '{name}'
+ # -------------------------------
+ # BRANCH ANCHORS
+ # -------------------------------
+ stream:
+ - master:
+ branch: '{stream}'
+ gs-pathname: ''
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ # -------------------------------
+ # DEPLOY TYPE ANCHORS
+ # -------------------------------
+ baremetal: &baremetal
+ installer: 'fuel'
+ slave-label: 'auto-baremetal'
+ # -------------------------------
+ # POD, INSTALLER, AND BRANCH MAPPING
+ # -------------------------------
+ # CI POD's
+ # -------------------------------
+ pod:
+ - auto-baremetal:
+ <<: *baremetal
+ # -------------------------------
+ # scenarios
+ # -------------------------------
+ scenario:
+ # HA scenarios
+ - 'os-nosdn-onap-ha':
+ auto-trigger-name: 'fuel-{scenario}-{pod}-{stream}-trigger'
jobs:
- - '{project}-verify-basic'
+ - '{installer}-{scenario}-{pod}-auto-daily-{stream}'
+ - '{installer}-deploy-{pod}-daily-{stream}'
+ - 'auto-verify-{stream}'
+ - 'auto-merge-{stream}'
+
+########################
+# job templates
+########################
+- job-template:
+ name: '{installer}-{scenario}-{pod}-auto-daily-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ concurrent: false
+
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-total: 4
+ max-per-node: 1
+ option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - '{installer}-os-.*?-{pod}-auto-daily-.*'
+ blocking-level: 'NODE'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+ triggers:
+ - '{auto-trigger-name}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults':
+ gs-pathname: '{gs-pathname}'
+ - '{slave-label}-defaults':
+ installer: '{installer}'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: '{scenario}'
+
+ builders:
+ - trigger-builds:
+ - project: '{installer}-deploy-{pod}-daily-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ DEPLOY_SCENARIO=os-nosdn-nofeature-ha
+ PROJECT=armband
+ same-node: true
+ block: true
+
+- job-template:
+ name: 'auto-verify-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ project-type: freestyle
+
+ concurrent: true
+
+ properties:
+ - logrotate-default
+
+ 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}'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**'
+
+ builders:
+ - shell: |
+ pwd
+ ./ci/build-auto.sh verify
+
+- job-template:
+ name: 'auto-merge-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ project-type: freestyle
+
+ concurrent: true
+
+ properties:
+ - logrotate-default
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+
+ scm:
+ - git-scm
+
+ 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}'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**'
+
+ builders:
+ - shell: |
+ pwd
+ ./ci/build-auto.sh merge
+
+########################
+# trigger macros
+########################
+# CI PODs
+# ----------------------------------------------------------------
+# Auto CI Baremetal Triggers running against master branch
+# ----------------------------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-onap-ha-auto-baremetal-master-trigger'
+ triggers:
+ - timed: ''
+# ---------------------------------------------------------------------
+# Auto CI Baremetal Triggers running against fraser branch
+# ---------------------------------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-onap-ha-auto-baremetal-fraser-trigger'
+ triggers:
+ - timed: ''
+# ---------------------------------------------------------------------
+# Auto CI Baremetal Triggers running against gambia branch
+# ---------------------------------------------------------------------
+- trigger:
+ name: 'fuel-os-nosdn-onap-ha-auto-baremetal-gambia-trigger'
+ triggers:
+ - timed: ''
diff --git a/jjb/availability/availability-rtd-jobs.yaml b/jjb/availability/availability-rtd-jobs.yaml
new file mode 100644
index 000000000..e245e597d
--- /dev/null
+++ b/jjb/availability/availability-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: availability-rtd
+ project: availability
+ project-name: availability
+
+ gerrit-skip-vote: true
+ project-pattern: 'availability'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-availability/47351/'
+ rtd-token: '3ae514b14073e1eacb697d3eddee62a26c8c891c'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/barometer/barometer-rtd-jobs.yaml b/jjb/barometer/barometer-rtd-jobs.yaml
new file mode 100644
index 000000000..936d1f27f
--- /dev/null
+++ b/jjb/barometer/barometer-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: barometer-rtd
+ project: barometer
+ project-name: barometer
+
+ project-pattern: 'barometer'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-barometer/47353/'
+ rtd-token: 'aef70b8a0148b295e25dd92474110bcd622bacb0'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/barometer/barometer.yaml b/jjb/barometer/barometer.yaml
index 92176207f..9cb222a2e 100644
--- a/jjb/barometer/barometer.yaml
+++ b/jjb/barometer/barometer.yaml
@@ -18,7 +18,7 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -32,7 +32,7 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
+ - 'lf-build2-defaults'
scm:
- git-scm-gerrit
@@ -89,7 +89,7 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
+ - 'lf-build2-defaults'
scm:
- git-scm
diff --git a/jjb/bottlenecks/bottlenecks-ci-jobs.yaml b/jjb/bottlenecks/bottlenecks-ci-jobs.yaml
index 41b73a290..0a48eedf5 100644
--- a/jjb/bottlenecks/bottlenecks-ci-jobs.yaml
+++ b/jjb/bottlenecks/bottlenecks-ci-jobs.yaml
@@ -19,8 +19,8 @@
gs-packagepath: '/{suite}'
# docker tag used for version control
docker-tag: 'latest'
- fraser: &fraser
- stream: fraser
+ gambia: &gambia
+ stream: gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
gs-packagepath: '/{stream}/{suite}'
@@ -49,12 +49,12 @@
slave-label: compass-baremetal-branch
installer: compass
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
- virtual:
slave-label: compass-virtual-branch
installer: compass
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
# -------------------------------
# None-CI PODs
@@ -79,6 +79,7 @@
- 'posca_feature_moon_tenants'
- 'posca_feature_vnf_scale_out'
- 'posca_factor_soak_throughputs'
+ - 'kubestone_deployment_capacity'
jobs:
- 'bottlenecks-{installer}-{suite}-{pod}-daily-{stream}'
diff --git a/jjb/bottlenecks/bottlenecks-project-jobs.yaml b/jjb/bottlenecks/bottlenecks-project-jobs.yaml
index d4930d745..dac1659f8 100644
--- a/jjb/bottlenecks/bottlenecks-project-jobs.yaml
+++ b/jjb/bottlenecks/bottlenecks-project-jobs.yaml
@@ -21,7 +21,12 @@
# This is used for different test suite dependent packages storage
gs-packagepath: '/{suite}'
disabled: false
- - fraser: &fraser
+ - gambia:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ gs-packagepath: '/{stream}/{suite}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
gs-packagepath: '/{stream}/{suite}'
@@ -70,7 +75,6 @@
branch-pattern: '**/{branch}'
builders:
- # - bottlenecks-hello
- bottlenecks-unit-tests
- job-template:
@@ -103,7 +107,6 @@
builders:
- bottlenecks-hello
- # - bottlenecks-unit-tests
- job-template:
name: 'bottlenecks-{suite}-upload-artifacts-{stream}'
diff --git a/jjb/bottlenecks/bottlenecks-rtd-jobs.yaml b/jjb/bottlenecks/bottlenecks-rtd-jobs.yaml
new file mode 100644
index 000000000..9730f24ef
--- /dev/null
+++ b/jjb/bottlenecks/bottlenecks-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: bottlenecks-rtd
+ project: bottlenecks
+ project-name: bottlenecks
+
+ gerrit-skip-vote: true
+ project-pattern: 'bottlenecks'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-bottlenecks/47355/'
+ rtd-token: '95dd0dbdde4a219b5196ffb86e15401b7b927885'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/bottlenecks/bottlenecks-run-suite.sh b/jjb/bottlenecks/bottlenecks-run-suite.sh
index 7a3db00c4..9b5e8eecf 100644
--- a/jjb/bottlenecks/bottlenecks-run-suite.sh
+++ b/jjb/bottlenecks/bottlenecks-run-suite.sh
@@ -24,7 +24,26 @@ OPENRC=/tmp/admin_rc.sh
OS_CACERT=/tmp/os_cacert
BOTTLENECKS_CONFIG=/tmp
-
+KUBESTONE_TEST_DIR=/home/opnfv/bottlenecks/testsuites/kubestone/testcases
+
+# Pulling Bottlenecks docker and passing environment variables
+echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
+docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
+
+opts="--privileged=true -id"
+envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
+ -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
+ -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
+ -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
+ -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
+docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
+
+cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
+echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
+${cmd} >$redirect
+sleep 5
+
+# Run test suite
if [[ $SUITE_NAME == *posca* ]]; then
POSCA_SCRIPT=/home/opnfv/bottlenecks/testsuites/posca
sudo rm -f ${OPENRC}
@@ -116,23 +135,6 @@ if [[ $SUITE_NAME == *posca* ]]; then
sudo ls -al ${BOTTLENECKS_CONFIG}
fi
- # Pulling Bottlenecks docker and passing environment variables
- echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
- docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
-
- opts="--privileged=true -id"
- envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
- -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
- -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
- -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
- -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
- docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
-
- cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
- echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
- ${cmd} >$redirect
- sleep 5
-
# Running test cases through Bottlenecks docker
if [[ $SUITE_NAME == posca_stress_traffic ]]; then
TEST_CASE=posca_factor_system_bandwidth
@@ -144,4 +146,11 @@ if [[ $SUITE_NAME == *posca* ]]; then
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 == *kubestone* ]]; then
+ if [[ $SUITE_NAME == kubestone_deployment_capacity ]]; then
+ TEST_CASE=${KUBESTONE_TEST_DIR}/deployment_capacity.yaml
+ fi
+ testcase_cmd="docker exec bottlenecks-load-master python ${KUBESTONE_TEST_DIR}/../stress_test.py -c $TEST_CASE"
+ echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
+ ${testcase_cmd} >$redirect
fi
diff --git a/jjb/calipso/calipso-rtd-jobs.yaml b/jjb/calipso/calipso-rtd-jobs.yaml
new file mode 100644
index 000000000..e6b61d768
--- /dev/null
+++ b/jjb/calipso/calipso-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: calipso-rtd
+ project: calipso
+ project-name: calipso
+
+ gerrit-skip-vote: true
+ project-pattern: 'calipso'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-calipso/47356/'
+ rtd-token: '9b88e25a769998fc316b25efe15eca2b7c1474f4'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/ci_gate_security/opnfv-ci-gate-security.yaml b/jjb/ci_gate_security/opnfv-ci-gate-security.yaml
index 2e500befb..365afdd30 100644
--- a/jjb/ci_gate_security/opnfv-ci-gate-security.yaml
+++ b/jjb/ci_gate_security/opnfv-ci-gate-security.yaml
@@ -126,6 +126,8 @@
name: SLAVE_LABEL
default: 'opnfv-build'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- project-parameter:
project: $GERRIT_PROJECT
branch: '{branch}'
diff --git a/jjb/clover/clover-project.yaml b/jjb/clover/clover-project.yaml
index 31eed8f14..4abbc0865 100644
--- a/jjb/clover/clover-project.yaml
+++ b/jjb/clover/clover-project.yaml
@@ -18,7 +18,11 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -122,7 +126,7 @@
blocking-jobs:
- 'clover-daily-deploy-.*?'
- 'container4nfv-daily-deploy-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- timeout:
diff --git a/jjb/clover/clover-rtd-jobs.yaml b/jjb/clover/clover-rtd-jobs.yaml
new file mode 100644
index 000000000..b58b71e27
--- /dev/null
+++ b/jjb/clover/clover-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: clover-rtd
+ project: clover
+ project-name: clover
+
+ gerrit-skip-vote: true
+ project-pattern: 'clover'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-clover/47357/'
+ rtd-token: '8b47c0a3c1cfe7de885bf217628b58dd91f14f2e'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/compass4nfv/compass-ci-jobs.yaml b/jjb/compass4nfv/compass-ci-jobs.yaml
index 8eeaabfaa..9dc80748d 100644
--- a/jjb/compass4nfv/compass-ci-jobs.yaml
+++ b/jjb/compass4nfv/compass-ci-jobs.yaml
@@ -13,14 +13,14 @@
gs-pathname: ''
ppa-pathname: '/{stream}'
disabled: false
- openstack-version: pike
- fraser: &fraser
- stream: fraser
+ openstack-version: queens
+ gambia: &gambia
+ stream: gambia
branch: 'stable/{stream}'
disabled: false
gs-pathname: '/{stream}'
ppa-pathname: '/{stream}'
- openstack-version: pike
+ openstack-version: queens
danube: &danube
stream: danube
branch: 'stable/{stream}'
@@ -45,11 +45,11 @@
- baremetal:
slave-label: compass-baremetal-branch
os-version: 'xenial'
- <<: *fraser
+ <<: *gambia
- virtual:
slave-label: compass-virtual-branch
os-version: 'xenial'
- <<: *fraser
+ <<: *gambia
# -------------------------------
# master
# -------------------------------
@@ -129,6 +129,9 @@
- 'k8-nosdn-stor4nfv-noha':
disabled: false
auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
+ - 'os-nosdn-stor4nfv-ha':
+ disabled: false
+ auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
jobs:
- 'compass-{scenario}-{pod}-daily-{stream}'
@@ -159,7 +162,7 @@
- 'compass-os-.*?-baremetal-daily-.*?'
- 'compass-k8-.*?-baremetal-daily-.*?'
- 'compass-verify-[^-]*-[^-]*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- fix-workspace-permissions
@@ -214,23 +217,17 @@
unstable-threshold: 'FAILURE'
# here the stream means the SUT stream, dovetail stream is defined in its own job
# only run on os-(nosdn|odl_l3)-nofeature-ha scenario
- # run with testsuite default, dovetail docker image with latest tag(Monday, Tuesday)
- # run with testsuite proposed_tests, dovetail docker image with latest tag(Thursday, Friday)
+ # run with testsuite default, testarea mandatory, dovetail docker image with latest tag
+ # run with testsuite default, testarea optional, dovetail docker image with latest tag
- conditional-step:
condition-kind: and
condition-operands:
- condition-kind: regex-match
regex: os-(nosdn|odl_l3)-nofeature-ha
label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- MON: true
- TUES: true
- use-build-time: true
steps:
- trigger-builds:
- - project: 'dovetail-compass-{pod}-default-{stream}'
+ - project: 'dovetail-compass-{pod}-default-mandatory-{stream}'
current-parameters: false
predefined-parameters: |
DOCKER_TAG=latest
@@ -247,17 +244,12 @@
- condition-kind: regex-match
regex: os-(nosdn|odl_l3)-nofeature-ha
label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- THURS: true
- FRI: true
- use-build-time: true
steps:
- trigger-builds:
- - project: 'dovetail-compass-{pod}-proposed_tests-{stream}'
+ - project: 'dovetail-compass-{pod}-default-optional-{stream}'
current-parameters: false
- predefined-parameters:
+ predefined-parameters: |
+ DOCKER_TAG=latest
DEPLOY_SCENARIO={scenario}
block: true
same-node: true
@@ -307,6 +299,24 @@
condition-kind: and
condition-operands:
- condition-kind: regex-match
+ regex: k8-nosdn-nofeature-ha
+ label: '{scenario}'
+ steps:
+ - trigger-builds:
+ - project: 'bottlenecks-compass-kubestone_deployment_capacity-{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:
+ - condition-kind: regex-match
regex: master
label: '{stream}'
steps:
@@ -341,7 +351,7 @@
blocking-jobs:
- 'compass-deploy-{pod}-daily-.*?'
- 'compass-verify-deploy-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -379,7 +389,7 @@
!include-raw-escape: ./compass-deploy.sh
- conditional-step:
condition-kind: regex-match
- regex: (danube|fraser)
+ regex: (danube|gambia)
label: '{stream}'
steps:
- shell:
@@ -443,7 +453,7 @@
description: "Directory where the cache to be used during the build is located."
- string:
name: PPA_REPO
- default: "http://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
+ default: "https://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
- string:
name: PPA_CACHE
default: "$WORKSPACE/work/repo/"
@@ -522,6 +532,10 @@
name: 'compass-k8-nosdn-stor4nfv-ha-baremetal-centos-master-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-baremetal-centos-master-trigger'
+ triggers:
+ - timed: ''
# ----------------------------
# noha-baremetal-centos-master
@@ -615,6 +629,10 @@
name: 'compass-k8-nosdn-stor4nfv-ha-huawei-pod7-danube-trigger'
triggers:
- timed: ''
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-huawei-pod7-danube-trigger'
+ triggers:
+ - timed: ''
# ----------------------------
# noha-huawei-pod7-danube
@@ -707,6 +725,10 @@
name: 'compass-k8-nosdn-stor4nfv-ha-baremetal-master-trigger'
triggers:
- timed: '0 16 1-29/2 * *'
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-baremetal-master-trigger'
+ triggers:
+ - timed: '0 20 1-29/2 * *'
# ---------------------
# noha-baremetal-master
@@ -745,94 +767,98 @@
- timed: ''
# -------------------
-# ha-baremetal-fraser
+# ha-baremetal-gambia
# -------------------
- trigger:
- name: 'compass-os-nosdn-nofeature-ha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-nofeature-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 1 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-openo-ha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-openo-ha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l3-nofeature-ha-baremetal-fraser-trigger'
+ name: 'compass-os-odl_l3-nofeature-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 21 2-30/2 * *'
- trigger:
- name: 'compass-os-onos-nofeature-ha-baremetal-fraser-trigger'
+ name: 'compass-os-onos-nofeature-ha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-ocl-nofeature-ha-baremetal-fraser-trigger'
+ name: 'compass-os-ocl-nofeature-ha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-onos-sfc-ha-baremetal-fraser-trigger'
+ name: 'compass-os-onos-sfc-ha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l2-moon-ha-baremetal-fraser-trigger'
+ name: 'compass-os-odl_l2-moon-ha-baremetal-gambia-trigger'
triggers:
- timed: '' # '0 5 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-kvm-ha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-kvm-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 13 2-30/2 * *'
- trigger:
- name: 'compass-os-nosdn-ovs_dpdk-ha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-ovs_dpdk-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 9 1-29/2 * *'
- trigger:
- name: 'compass-k8-nosdn-nofeature-ha-baremetal-fraser-trigger'
+ name: 'compass-k8-nosdn-nofeature-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 5 1-29/2 * *'
- trigger:
- name: 'compass-os-odl-sfc-ha-baremetal-fraser-trigger'
+ name: 'compass-os-odl-sfc-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 17 2-30/2 * *'
- trigger:
- name: 'compass-os-nosdn-bar-ha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-bar-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 21 1-29/2 * *'
- trigger:
- name: 'compass-k8-nosdn-stor4nfv-ha-baremetal-fraser-trigger'
+ name: 'compass-k8-nosdn-stor4nfv-ha-baremetal-gambia-trigger'
triggers:
- timed: '0 7 2-30/2 * *'
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-baremetal-gambia-trigger'
+ triggers:
+ - timed: ''
# ---------------------
-# noha-baremetal-fraser
+# noha-baremetal-gambia
# ---------------------
- trigger:
- name: 'compass-os-nosdn-kvm-noha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-kvm-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-nosdn-nofeature-noha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-nofeature-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l3-nofeature-noha-baremetal-fraser-trigger'
+ name: 'compass-os-odl_l3-nofeature-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l2-moon-noha-baremetal-fraser-trigger'
+ name: 'compass-os-odl_l2-moon-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl-sfc-noha-baremetal-fraser-trigger'
+ name: 'compass-os-odl-sfc-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-nosdn-ovs_dpdk-noha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-ovs_dpdk-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-nosdn-bar-noha-baremetal-fraser-trigger'
+ name: 'compass-os-nosdn-bar-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-k8-nosdn-stor4nfv-noha-baremetal-fraser-trigger'
+ name: 'compass-k8-nosdn-stor4nfv-noha-baremetal-gambia-trigger'
triggers:
- timed: ''
@@ -891,6 +917,10 @@
name: 'compass-k8-nosdn-stor4nfv-ha-virtual-master-trigger'
triggers:
- timed: '0 15 2-30/2 * *'
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-virtual-master-trigger'
+ triggers:
+ - timed: '0 19 2-30/2 * *'
# -------------------
# noha-virtual-master
@@ -929,93 +959,97 @@
- timed: '0 10 2-30/2 * *'
# -----------------
-# ha-virtual-fraser
+# ha-virtual-gambia
# -----------------
- trigger:
- name: 'compass-os-nosdn-nofeature-ha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-nofeature-ha-virtual-gambia-trigger'
triggers:
- timed: '0 23 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-openo-ha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-openo-ha-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l3-nofeature-ha-virtual-fraser-trigger'
+ name: 'compass-os-odl_l3-nofeature-ha-virtual-gambia-trigger'
triggers:
- timed: '0 22 2-30/2 * *'
- trigger:
- name: 'compass-os-onos-nofeature-ha-virtual-fraser-trigger'
+ name: 'compass-os-onos-nofeature-ha-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-ocl-nofeature-ha-virtual-fraser-trigger'
+ name: 'compass-os-ocl-nofeature-ha-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-onos-sfc-ha-virtual-fraser-trigger'
+ name: 'compass-os-onos-sfc-ha-virtual-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'compass-os-odl_l2-moon-ha-virtual-fraser-trigger'
+ name: 'compass-os-odl_l2-moon-ha-virtual-gambia-trigger'
triggers:
- timed: '0 20 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-kvm-ha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-kvm-ha-virtual-gambia-trigger'
triggers:
- timed: '0 16 2-30/2 * *'
- trigger:
- name: 'compass-os-nosdn-ovs_dpdk-ha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-ovs_dpdk-ha-virtual-gambia-trigger'
triggers:
- timed: '0 14 1-29/2 * *'
- trigger:
- name: 'compass-os-odl-sfc-ha-virtual-fraser-trigger'
+ name: 'compass-os-odl-sfc-ha-virtual-gambia-trigger'
triggers:
- timed: '0 18 2-30/2 * *'
- trigger:
- name: 'compass-k8-nosdn-nofeature-ha-virtual-fraser-trigger'
+ name: 'compass-k8-nosdn-nofeature-ha-virtual-gambia-trigger'
triggers:
- timed: '5 1 2-30/2 * *'
- trigger:
- name: 'compass-os-nosdn-bar-ha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-bar-ha-virtual-gambia-trigger'
triggers:
- timed: '0 19 1-29/2 * *'
- trigger:
- name: 'compass-k8-nosdn-stor4nfv-ha-virtual-fraser-trigger'
+ name: 'compass-k8-nosdn-stor4nfv-ha-virtual-gambia-trigger'
triggers:
- timed: '0 15 1-29/2 * *'
+- trigger:
+ name: 'compass-os-nosdn-stor4nfv-ha-virtual-gambia-trigger'
+ triggers:
+ - timed: ''
# -------------------
-# noha-virtual-fraser
+# noha-virtual-gambia
# -------------------
- trigger:
- name: 'compass-os-nosdn-kvm-noha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-kvm-noha-virtual-gambia-trigger'
triggers:
- timed: '0 15 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-nofeature-noha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-nofeature-noha-virtual-gambia-trigger'
triggers:
- timed: '0 17 2-30/2 * *'
- trigger:
- name: 'compass-os-odl_l3-nofeature-noha-virtual-fraser-trigger'
+ name: 'compass-os-odl_l3-nofeature-noha-virtual-gambia-trigger'
triggers:
- timed: '0 23 1-29/2 * *'
- trigger:
- name: 'compass-os-odl_l2-moon-noha-virtual-fraser-trigger'
+ name: 'compass-os-odl_l2-moon-noha-virtual-gambia-trigger'
triggers:
- timed: '0 21 2-30/2 * *'
- trigger:
- name: 'compass-os-odl-sfc-noha-virtual-fraser-trigger'
+ name: 'compass-os-odl-sfc-noha-virtual-gambia-trigger'
triggers:
- timed: '0 19 1-29/2 * *'
- trigger:
- name: 'compass-os-nosdn-ovs_dpdk-noha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-ovs_dpdk-noha-virtual-gambia-trigger'
triggers:
- timed: '0 12 2-30/2 * *'
- trigger:
- name: 'compass-os-nosdn-bar-noha-virtual-fraser-trigger'
+ name: 'compass-os-nosdn-bar-noha-virtual-gambia-trigger'
triggers:
- timed: '0 12 1-29/2 * *'
- trigger:
- name: 'compass-k8-nosdn-stor4nfv-noha-virtual-fraser-trigger'
+ name: 'compass-k8-nosdn-stor4nfv-noha-virtual-gambia-trigger'
triggers:
- timed: '0 13 2-30/2 * *'
diff --git a/jjb/compass4nfv/compass-deploy.sh b/jjb/compass4nfv/compass-deploy.sh
index ac649b992..4c5448e33 100644
--- a/jjb/compass4nfv/compass-deploy.sh
+++ b/jjb/compass4nfv/compass-deploy.sh
@@ -35,6 +35,8 @@ export OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION}
if [[ "${DEPLOY_SCENARIO}" =~ "-ocl" ]]; then
export NETWORK_CONF_FILE=network_ocl.yml
+elif [[ "${DEPLOY_SCENARIO}" =~ "-odl" ]]; then
+ export NETWORK_CONF_FILE=network_odl.yml
elif [[ "${DEPLOY_SCENARIO}" =~ "-onos" ]]; then
export NETWORK_CONF_FILE=network_onos.yml
elif [[ "${DEPLOY_SCENARIO}" =~ "-openo" ]]; then
diff --git a/jjb/compass4nfv/compass-dovetail-jobs.yaml b/jjb/compass4nfv/compass-dovetail-jobs.yaml
index c09086348..ec62da3b7 100644
--- a/jjb/compass4nfv/compass-dovetail-jobs.yaml
+++ b/jjb/compass4nfv/compass-dovetail-jobs.yaml
@@ -51,7 +51,7 @@
blocking-jobs:
- 'compass-os-.*?-{pod}-daily-.*?'
- 'compass-os-.*?-{pod}-weekly-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -128,7 +128,7 @@
- 'compass-deploy-{pod}-daily-.*?'
- 'compass-deploy-{pod}-weekly-.*'
- 'compass-verify-deploy-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
diff --git a/jjb/compass4nfv/compass-project-jobs.yaml b/jjb/compass4nfv/compass-project-jobs.yaml
index dc935f024..17745a29e 100644
--- a/jjb/compass4nfv/compass-project-jobs.yaml
+++ b/jjb/compass4nfv/compass-project-jobs.yaml
@@ -20,7 +20,7 @@
gs-pathname: '/{stream}'
ppa-pathname: '/{stream}'
disabled: false
- - fraser:
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
ppa-pathname: '/{stream}'
@@ -129,7 +129,7 @@
description: "URL to Google Storage."
- string:
name: PPA_REPO
- default: "http://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
+ default: "https://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
- string:
name: PPA_CACHE
default: "$WORKSPACE/work/repo/"
diff --git a/jjb/compass4nfv/compass-verify-jobs.yaml b/jjb/compass4nfv/compass-verify-jobs.yaml
index c357ff641..daedff797 100644
--- a/jjb/compass4nfv/compass-verify-jobs.yaml
+++ b/jjb/compass4nfv/compass-verify-jobs.yaml
@@ -14,14 +14,14 @@
gs-pathname: ''
ppa-pathname: '/{stream}'
disabled: false
- openstack-version: 'pike'
+ openstack-version: 'queens'
branch-type: 'master'
- - fraser:
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
ppa-pathname: '/{stream}'
disabled: false
- openstack-version: 'pike'
+ openstack-version: 'queens'
branch-type: 'master'
distro:
@@ -71,7 +71,7 @@
- 'compass-verify-[^-]*-[^-]*'
- 'compass-os-.*?-virtual-daily-.*?'
- 'compass-k8-.*?-virtual-daily-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- ssh-agent-wrapper
@@ -162,15 +162,6 @@
node-parameters: true
kill-phase-on: NEVER
abort-all-job: true
- - name: 'functest-compass-virtual-suite-{stream}'
- current-parameters: false
- predefined-parameters: |
- FUNCTEST_MODE=testcase
- FUNCTEST_SUITE_NAME=vping_ssh
- DEPLOY_SCENARIO=os-nosdn-nofeature-ha
- node-parameters: true
- kill-phase-on: NEVER
- abort-all-job: true
- job-template:
name: 'compass-verify-k8-{distro}-{stream}'
@@ -193,7 +184,7 @@
blocking-jobs:
- 'compass-verify-[^-]*-[^-]*'
- 'compass-os-.*?-virtual-daily-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- ssh-agent-wrapper
@@ -288,7 +279,7 @@
- 'compass-os-.*?-virtual-daily-.*?'
- 'compass-verify-deploy-.*'
- 'functest-compass-virtual.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- ssh-agent-wrapper
@@ -343,7 +334,7 @@
description: "URL to Google Storage."
- string:
name: PPA_REPO
- default: "http://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
+ default: "https://artifacts.opnfv.org/compass4nfv/package{ppa-pathname}"
- string:
name: PPA_CACHE
default: "$WORKSPACE/work/repo/"
diff --git a/jjb/compass4nfv/compass4nfv-rtd-jobs.yaml b/jjb/compass4nfv/compass4nfv-rtd-jobs.yaml
new file mode 100644
index 000000000..7d136881a
--- /dev/null
+++ b/jjb/compass4nfv/compass4nfv-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: compass4nfv-rtd
+ project: compass4nfv
+ project-name: compass4nfv
+
+ gerrit-skip-vote: true
+ project-pattern: 'compass4nfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-compass4nfv/47358/'
+ rtd-token: '4208e8492be2e4eab7f18f1e70b5d78247d1b249'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/container4nfv/arm64/compass-build.sh b/jjb/container4nfv/arm64/compass-build.sh
index 696f7ff76..48381cb00 100755
--- a/jjb/container4nfv/arm64/compass-build.sh
+++ b/jjb/container4nfv/arm64/compass-build.sh
@@ -7,8 +7,8 @@ COMPASS_WORK_DIR=$WORKSPACE/../compass-work
mkdir -p $COMPASS_WORK_DIR
ln -s $COMPASS_WORK_DIR work
-#TODO: remove workaround after all arm64 patches merged
-curl -s http://people.linaro.org/~yibo.cai/compass/compass4nfv-arm64-fixup.sh | bash -s {scenario}
+sudo docker rm -f `docker ps | grep compass | cut -f1 -d' '` || true
-# build tarball
-COMPASS_ISO_REPO='http://people.linaro.org/~yibo.cai/compass' ./build.sh
+curl -s http://people.linaro.org/~yibo.cai/compass/compass4nfv-arm64-fixup.sh | bash || true
+
+./build.sh
diff --git a/jjb/container4nfv/arm64/compass-deploy.sh b/jjb/container4nfv/arm64/compass-deploy.sh
index a22af09ba..7889c3bba 100755
--- a/jjb/container4nfv/arm64/compass-deploy.sh
+++ b/jjb/container4nfv/arm64/compass-deploy.sh
@@ -5,11 +5,11 @@ cd compass4nfv
export ADAPTER_OS_PATTERN='(?i)CentOS-7.*arm.*'
export OS_VERSION="centos7"
-export KUBERNETES_VERSION="v1.7.5"
+export KUBERNETES_VERSION="v1.9.1"
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
+ export VIRT_NUMBER=2 VIRT_CPUS=8 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"
diff --git a/jjb/container4nfv/arm64/deploy-cni.sh b/jjb/container4nfv/arm64/deploy-cni.sh
new file mode 100755
index 000000000..9afb98048
--- /dev/null
+++ b/jjb/container4nfv/arm64/deploy-cni.sh
@@ -0,0 +1,17 @@
+#!/bin/bash -e
+
+cd container4nfv/src/arm/cni-deploy
+
+DEPLOY_SCENARIO={scenario}
+
+virtualenv .venv
+source .venv/bin/activate
+pip install ansible==2.6.1
+
+ansible-playbook -i inventory/inventory.cfg deploy.yml --tags flannel,multus
+
+if [ "$DEPLOY_SCENARIO" == "k8-sriov-nofeature-noha" ]; then
+ ansible-playbook -i inventory/inventory.cfg deploy.yml --tags sriov
+elif [ "$DEPLOY_SCENARIO" == "k8-vpp-nofeature-noha" ]; then
+ ansible-playbook -i inventory/inventory.cfg deploy.yml --tags vhost-vpp
+fi
diff --git a/jjb/container4nfv/container4nfv-arm64.yaml b/jjb/container4nfv/container4nfv-arm64.yaml
index 5f5bc8627..c5ba3be1f 100644
--- a/jjb/container4nfv/container4nfv-arm64.yaml
+++ b/jjb/container4nfv/container4nfv-arm64.yaml
@@ -7,28 +7,35 @@
stream:
- master:
branch: master
- - fraser:
- branch: stable/fraser
+ - gambia:
+ branch: stable/gambia
scenario:
- 'k8-multus-nofeature-noha':
disabled: false
- 'k8-sriov-nofeature-noha':
disabled: false
+ - 'k8-vpp-nofeature-noha':
+ disabled: false
pod:
- virtual:
slave-label: arm-packet01
- baremetal:
slave-label: compass-baremetal-arm
jobs:
+ - 'container4nfv-arm-deploy-{pod}-daily-{stream}'
- 'container4nfv-{scenario}-{pod}-daily-{stream}'
- job-template:
- name: 'container4nfv-{scenario}-{pod}-daily-{stream}'
- disabled: '{obj:disabled}'
- concurrent: false
+ name: 'container4nfv-arm-deploy-{pod}-daily-{stream}'
+ disabled: false
node: '{slave-label}'
+ wrappers:
+ - timeout:
+ timeout: 300
+ fail: true
+
scm:
- git:
url: https://gerrit.opnfv.org/gerrit/compass4nfv
@@ -38,12 +45,7 @@
wipe-workspace: true
triggers:
- - 'trigger-{scenario}-{pod}-{stream}'
-
- wrappers:
- - timeout:
- timeout: 150
- fail: true
+ - 'trigger-deploy-{pod}-{stream}'
builders:
- shell:
@@ -54,42 +56,78 @@
- project: yardstick-arm64-compass-arm-virtual03-daily-master
current-parameters: false
same-node: true
- block: false
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'Failure'
+ - project: functest-compass-arm-virtual-daily-master
+ current-parameters: false
+ predefined-parameters:
+ DEPLOY_SCENARIO='k8-nosdn-nofeature-ha'
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'Failure'
+ - project: container4nfv-k8-multus-nofeature-noha-{pod}-daily-{stream}
+ current-parameters: true
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'Failure'
+ - project: container4nfv-k8-sriov-nofeature-noha-{pod}-daily-{stream}
+ current-parameters: true
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'Failure'
+ - project: container4nfv-k8-vpp-nofeature-noha-{pod}-daily-{stream}
+ current-parameters: true
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'never'
-- trigger:
- name: 'trigger-k8-multus-nofeature-noha-virtual-master'
- triggers:
- - timed: '0 12 * * *'
-- trigger:
- name: 'trigger-k8-sriov-nofeature-noha-virtual-master'
- triggers:
- - timed: '0 15 * * *'
+- job-template:
+ name: 'container4nfv-{scenario}-{pod}-daily-{stream}'
+ disabled: '{obj:disabled}'
+ node: '{slave-label}'
-- trigger:
- name: 'trigger-k8-multus-nofeature-noha-virtual-fraser'
- triggers:
- - timed: '0 18 * * *'
-- trigger:
- name: 'trigger-k8-sriov-nofeature-noha-virtual-fraser'
- triggers:
- - timed: '0 21 * * *'
+ scm:
+ - git:
+ url: https://gerrit.opnfv.org/gerrit/container4nfv
+ branches:
+ - master
+ basedir: container4nfv
+ wipe-workspace: true
+
+ builders:
+ - shell:
+ !include-raw: arm64/deploy-cni.sh
- trigger:
- name: 'trigger-k8-multus-nofeature-noha-baremetal-master'
+ name: 'trigger-deploy-virtual-master'
triggers:
- timed: '0 12 * * *'
- trigger:
- name: 'trigger-k8-sriov-nofeature-noha-baremetal-master'
+ name: 'trigger-deploy-virtual-gambia'
triggers:
- - timed: '0 15 * * *'
-
+ - timed: '0 18 * * *'
- trigger:
- name: 'trigger-k8-multus-nofeature-noha-baremetal-fraser'
+ name: 'trigger-deploy-baremetal-master'
triggers:
- - timed: '0 18 * * *'
+ - timed: '0 12 * * *'
- trigger:
- name: 'trigger-k8-sriov-nofeature-noha-baremetal-fraser'
+ name: 'trigger-deploy-baremetal-gambia'
triggers:
- - timed: '0 21 * * *'
+ - timed: '0 18 * * *'
diff --git a/jjb/container4nfv/container4nfv-project.yaml b/jjb/container4nfv/container4nfv-project.yaml
index 194a1a989..f1d58da4a 100644
--- a/jjb/container4nfv/container4nfv-project.yaml
+++ b/jjb/container4nfv/container4nfv-project.yaml
@@ -18,7 +18,7 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -119,7 +119,7 @@
blocking-jobs:
- 'clover-daily-deploy-.*?'
- 'container4nfv-daily-deploy-.*?'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- timeout:
diff --git a/jjb/container4nfv/container4nfv-rtd-jobs.yaml b/jjb/container4nfv/container4nfv-rtd-jobs.yaml
new file mode 100644
index 000000000..b55f958e5
--- /dev/null
+++ b/jjb/container4nfv/container4nfv-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: container4nfv-rtd
+ project: container4nfv
+ project-name: container4nfv
+
+ gerrit-skip-vote: true
+ project-pattern: 'container4nfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-container4nfv/47359/'
+ rtd-token: '82f917a788d006dc15df14ecd3c991115490bf8a'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/copper/copper-rtd-jobs.yaml b/jjb/copper/copper-rtd-jobs.yaml
new file mode 100644
index 000000000..6198d2211
--- /dev/null
+++ b/jjb/copper/copper-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: copper-rtd
+ project: copper
+ project-name: copper
+
+ gerrit-skip-vote: true
+ project-pattern: 'copper'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-copper/47360/'
+ rtd-token: '1b423ddc3af602f8078c1ece0d689e0b4d3c3f79'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/cperf/cirros-upload.yaml.ansible b/jjb/cperf/cirros-upload.yaml.ansible
new file mode 100644
index 000000000..855bb1f3d
--- /dev/null
+++ b/jjb/cperf/cirros-upload.yaml.ansible
@@ -0,0 +1,39 @@
+---
+- hosts: all
+ tasks:
+ - copy:
+ src: "{{ lookup('env', 'WORKSPACE') }}/{{ item }}"
+ dest: "/home/heat-admin/{{ item }}"
+ owner: heat-admin
+ group: heat-admin
+ mode: 0775
+ with_items:
+ - cirros-0.3.5-x86_64-disk.img
+ - overcloudrc
+ - name: Upload cirros glance image
+ shell: >
+ source /home/heat-admin/overcloudrc && openstack image create
+ cirros-0.3.5-x86_64-disk --public
+ --file /home/heat-admin/cirros-0.3.5-x86_64-disk.img
+ --disk-format qcow2 --container-format bare
+ - name: Create nano flavor
+ shell: >
+ source /home/heat-admin/overcloudrc && openstack flavor create
+ --id 42 --ram 64 --disk 0 --vcpus 1 m1.nano
+ - name: Open CSIT TCP port for netcat
+ iptables:
+ chain: INPUT
+ action: insert
+ protocol: tcp
+ destination_port: 12345
+ jump: ACCEPT
+ become: yes
+ - name: Open CSIT UDP port for netcat
+ iptables:
+ chain: INPUT
+ action: insert
+ protocol: udp
+ destination_port: 12345
+ jump: ACCEPT
+ become: yes
+
diff --git a/jjb/cperf/cperf-ci-jobs.yaml b/jjb/cperf/cperf-ci-jobs.yaml
index fdd3509d1..61bdebd34 100644
--- a/jjb/cperf/cperf-ci-jobs.yaml
+++ b/jjb/cperf/cperf-ci-jobs.yaml
@@ -9,47 +9,30 @@
# -------------------------------
# BRANCH ANCHORS
# -------------------------------
- master: &master
- stream: master
- branch: '{stream}'
- gs-pathname: ''
- docker-tag: 'latest'
- danube: &danube
- stream: danube
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- docker-tag: 'stable'
+ stream: master
+ branch: '{stream}'
+ gs-pathname: ''
+ docker-tag: 'latest'
- # -------------------------------
- # POD, INSTALLER, AND BRANCH MAPPING
- # -------------------------------
- pod:
- # -------------------------------
- # master
- # -------------------------------
- - intel-pod2:
- installer: apex
- <<: *master
- - intel-pod2:
- installer: apex
- <<: *danube
+ installer: apex
testsuite:
- - 'daily'
+ - csit
+ - cbench
jobs:
- - 'cperf-{installer}-{pod}-{testsuite}-{stream}'
+ - 'cperf-{installer}-{testsuite}-{stream}'
+ - 'cperf-upload-logs-csit'
################################
# job template
################################
- job-template:
- name: 'cperf-{installer}-{pod}-{testsuite}-{stream}'
+ name: 'cperf-{installer}-{testsuite}-{stream}'
concurrent: true
properties:
- - logrotate-default
- throttle:
enabled: true
max-per-node: 1
@@ -57,28 +40,46 @@
wrappers:
- build-name:
- name: '$BUILD_NUMBER Suite: $CPERF_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+ name: '$BUILD_NUMBER Suite: $CPERF_SUITE_NAME ODL BRANCH: $ODL_BRANCH'
- timeout:
timeout: 400
abort: true
parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - '{pod}-defaults'
- - '{installer}-defaults'
- cperf-parameter:
testsuite: '{testsuite}'
gs-pathname: '{gs-pathname}'
docker-tag: '{docker-tag}'
-
- scm:
- - git-scm
+ stream: '{stream}'
builders:
- 'cperf-{testsuite}-builder'
+- job-template:
+ name: 'cperf-upload-logs-csit'
+
+ concurrent: true
+
+ disabled: false
+
+ parameters:
+ - cperf-parameter:
+ testsuite: 'csit'
+ gs-pathname: '{gs-pathname}'
+ docker-tag: '{docker-tag}'
+ stream: '{stream}'
+
+ # yamllint enable rule:line-length
+ properties:
+ - logrotate-default
+ - throttle:
+ max-per-node: 1
+ max-total: 10
+ option: 'project'
+
+ builders:
+ - 'cperf-upload-logs-csit'
+
########################
# parameter macros
########################
@@ -90,6 +91,14 @@
default: '{testsuite}'
description: "Suite name to run"
- string:
+ name: ODL_BRANCH
+ default: 'master'
+ description: "Branch that OpenDaylight is running"
+ - string:
+ name: OS_VERSION
+ default: 'master'
+ description: "OpenStack version (short name, no stable/ prefix)"
+ - string:
name: GS_PATHNAME
default: '{gs-pathname}'
description: "Version directory where the opnfv documents will be stored in gs repository"
@@ -101,6 +110,22 @@
name: DOCKER_TAG
default: '{docker-tag}'
description: 'Tag to pull docker image'
+ - string:
+ name: RC_FILE_PATH
+ default: ''
+ description: "Path to the OS credentials file if given"
+ - string:
+ name: SSH_KEY_PATH
+ default: ''
+ description: "Path to the private SSH key to access OPNFV nodes"
+ - string:
+ name: NODE_FILE_PATH
+ default: ''
+ description: "Path to the yaml file describing overcloud nodes"
+ - string:
+ name: ODL_CONTAINERIZED
+ default: 'true'
+ description: "boolean set true if ODL on overcloud is a container"
########################
# trigger macros
@@ -110,12 +135,26 @@
# builder macros
########################
- builder:
- name: cperf-daily-builder
+ name: cperf-csit-builder
+ builders:
+ - 'cperf-cleanup'
+ - 'cperf-prepare-robot'
+ - 'cperf-robot-netvirt-csit'
+
+- builder:
+ name: cperf-cbench-builder
builders:
- 'cperf-cleanup'
+ - 'cperf-prepare-robot'
- 'cperf-robot-cbench'
- builder:
+ name: cperf-prepare-robot
+ builders:
+ - shell:
+ !include-raw: ./cperf-prepare-robot.sh
+
+- builder:
name: cperf-robot-cbench
builders:
- shell: |
@@ -123,23 +162,6 @@
set -o errexit
set -o nounset
set -o pipefail
- undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
- grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
- INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
-
- sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc
- sudo chmod 755 /tmp/overcloudrc
- source /tmp/overcloudrc
-
- # robot suites need the ssh key to log in to controller nodes, so throwing it
- # in tmp, and mounting /tmp as $HOME as far as robot is concerned
- sudo rm -rf /tmp/.ssh
- sudo mkdir /tmp/.ssh
- sudo chmod 0700 /tmp/.ssh
- sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa /tmp/.ssh/
- sudo chown -R jenkins-ci:jenkins-ci /tmp/.ssh
- # done with sudo. jenkins-ci is the user from this point
- chmod 0600 /tmp/.ssh/id_rsa
# cbench requires the openflow drop test feature to be installed.
sshpass -p karaf ssh -o StrictHostKeyChecking=no \
@@ -148,8 +170,6 @@
-p 8101 karaf@$SDN_CONTROLLER_IP \
feature:install odl-openflowplugin-flow-services-ui odl-openflowplugin-drop-test
- docker pull opnfv/cperf:$DOCKER_TAG
-
robot_cmd="pybot -e exclude -L TRACE -d /tmp \
-v ODL_SYSTEM_1_IP:${SDN_CONTROLLER_IP} \
-v ODL_SYSTEM_IP:${SDN_CONTROLLER_IP} \
@@ -165,6 +185,12 @@
docker run -i -v /tmp:/tmp opnfv/cperf:$DOCKER_TAG ${robot_cmd} ${robot_suite}
- builder:
+ name: cperf-robot-netvirt-csit
+ builders:
+ - shell:
+ !include-raw: ./cperf-robot-netvirt-csit.sh
+
+- builder:
name: cperf-cleanup
builders:
- shell: |
@@ -178,13 +204,7 @@
docker ps -a | grep opnfv/cperf | awk '{print $1}' | xargs docker rm -f >${redirect}
fi
- # Remove existing images if exist
- if [[ ! -z $(docker images | grep opnfv/cperf) ]]; then
- echo "Docker images to remove:"
- docker images | head -1 && docker images | grep opnfv/cperf >${redirect}
- image_tags=($(docker images | grep opnfv/cperf | awk '{print $2}'))
- for tag in "${image_tags[@]}"; do
- echo "Removing docker image opnfv/cperf:$tag..."
- docker rmi opnfv/cperf:$tag >/dev/null
- done
- fi
+- builder:
+ name: cperf-upload-logs-csit
+ builders:
+ - shell: !include-raw: ./cperf-upload-logs-csit.sh
diff --git a/jjb/cperf/cperf-prepare-robot.sh b/jjb/cperf/cperf-prepare-robot.sh
new file mode 100755
index 000000000..d88c6d510
--- /dev/null
+++ b/jjb/cperf/cperf-prepare-robot.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+if [ -z ${RC_FILE_PATH+x} ]; then
+ undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
+ grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+ INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
+ sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/overcloudrc /tmp/overcloudrc
+else
+ cp -f $RC_FILE_PATH ${WORKSPACE}/overcloudrc
+fi
+
+sudo chmod 755 ${WORKSPACE}/overcloudrc
+source ${WORKSPACE}/overcloudrc
+
+# copy ssh key for robot
+
+if [ -z ${SSH_KEY_PATH+x} ]; then
+ sudo scp -o StrictHostKeyChecking=no root@$INSTALLER_IP:/home/stack/.ssh/id_rsa ${WORKSPACE}/
+ sudo chown -R jenkins-ci:jenkins-ci ${WORKSPACE}/
+ # done with sudo. jenkins-ci is the user from this point
+ chmod 0600 ${WORKSPACE}/id_rsa
+else
+ cp -f ${SSH_KEY_PATH} ${WORKSPACE}/
+fi
+
+docker pull opnfv/cperf:$DOCKER_TAG
+
+sudo mkdir -p /tmp/robot_results
diff --git a/jjb/cperf/cperf-robot-netvirt-csit.sh b/jjb/cperf/cperf-robot-netvirt-csit.sh
new file mode 100755
index 000000000..892f0aa7a
--- /dev/null
+++ b/jjb/cperf/cperf-robot-netvirt-csit.sh
@@ -0,0 +1,188 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+if [[ ! -z ${SKIP_CSIT+x} && "$SKIP_CSIT" == "True" ]]; then
+ echo "Skipping csit run"
+ exit 0
+fi
+
+if [ "$OS_VERSION" == 'master' ]; then
+ FULL_OS_VER='master'
+else
+ FULL_OS_VER="stable/${OS_VERSION}"
+fi
+
+if [ "$ODL_BRANCH" == 'master' ]; then
+ ODL_STREAM='neon'
+else
+ ODL_STREAM=${ODL_BRANCH#"stable/"}
+fi
+
+echo "ODL Stream set: ${ODL_STREAM} and OS Version is ${FULL_OS_VER}"
+
+sudo rm -rf releng
+git clone https://gerrit.opnfv.org/gerrit/releng.git
+REL_PATH='releng/jjb/cperf'
+
+# NOTE: sourcing overcloudrc unsets any variable with OS_ prefix
+source ${WORKSPACE}/overcloudrc
+# note SDN_CONTROLLER_IP is set in overcloudrc, which is the VIP
+# for admin/public network (since we are running single network deployment)
+
+NUM_CONTROL_NODES=$(python ${REL_PATH}/parse-node-yaml.py num_nodes --file $NODE_FILE_PATH)
+NUM_COMPUTE_NODES=$(python ${REL_PATH}/parse-node-yaml.py num_nodes --node-type compute --file $NODE_FILE_PATH)
+
+echo "Number of Control nodes found: ${NUM_CONTROL_NODES}"
+echo "Number of Compute nodes found: ${NUM_COMPUTE_NODES}"
+
+# Only 1 combo or ctrl node is specified, even for OS HA deployments
+# Currently supported combinations are:
+# 0cmb-1ctl-2cmp
+# 1cmb-0ctl-0cmp
+# 1cmb-0ctl-1cmp
+if [ "$NUM_COMPUTE_NODES" -eq 0 ]; then
+ OPENSTACK_TOPO="1cmb-0ctl-0cmp"
+else
+ OPENSTACK_TOPO="0cmb-1ctl-2cmp"
+fi
+
+idx=1
+EXTRA_ROBOT_ARGS=""
+for idx in `seq 1 $NUM_CONTROL_NODES`; do
+ CONTROLLER_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-number ${idx} --file $NODE_FILE_PATH)
+ EXTRA_ROBOT_ARGS+=" -v ODL_SYSTEM_${idx}_IP:${CONTROLLER_IP} \
+ -v OS_CONTROL_NODE_${idx}_IP:${CONTROLLER_IP} \
+ -v ODL_SYSTEM_${idx}_IP:${CONTROLLER_IP} \
+ -v HA_PROXY_${idx}_IP:${SDN_CONTROLLER_IP}"
+done
+
+# In all-in-one these Compute IPs still need to be passed to robot
+if [ "$NUM_COMPUTE_NODES" -eq 0 ]; then
+ EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_1_IP:'' -v OS_COMPUTE_2_IP:''"
+else
+ idx=1
+ for idx in `seq 1 $NUM_COMPUTE_NODES`; do
+ COMPUTE_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-type compute --node-number ${idx} --file $NODE_FILE_PATH)
+ EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_${idx}_IP:${COMPUTE_IP}"
+ done
+fi
+
+CONTROLLER_1_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-number 1 --file $NODE_FILE_PATH)
+
+if [ "$ODL_CONTAINERIZED" == 'false' ]; then
+ EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:'ps axf | grep org.apache.karaf | grep -v grep | wc -l || echo 0' \
+ -v NODE_START_COMMAND:'sudo systemctl start opendaylight_api' \
+ -v NODE_KILL_COMMAND:'sudo systemctl stop opendaylight_api' \
+ -v NODE_STOP_COMMAND:'sudo systemctl stop opendaylight_api' \
+ -v NODE_FREEZE_COMMAND:'sudo systemctl stop opendaylight_api' "
+else
+ EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:'sudo docker ps | grep opendaylight_api | wc -l || echo 0' \
+ -v NODE_START_COMMAND:'sudo docker start opendaylight_api' \
+ -v NODE_KILL_COMMAND:'sudo docker stop opendaylight_api' \
+ -v NODE_STOP_COMMAND:'sudo docker stop opendaylight_api' \
+ -v NODE_FREEZE_COMMAND:'sudo docker stop opendaylight_api' "
+fi
+
+# FIXME(trozet) remove this once it is fixed in csit
+# Upload glance image into openstack
+wget -O ${WORKSPACE}/cirros-0.3.5-x86_64-disk.img http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
+export ANSIBLE_HOST_KEY_CHECKING=False
+ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/cirros-upload.yaml.ansible -vvv
+
+LOGS_LOCATION=/tmp/robot_results
+
+robot_cmd="pybot \
+ --removekeywords wuks \
+ --xunit robotxunit.xml \
+ --name 'CSIT' \
+ -e exclude \
+ -d $LOGS_LOCATION \
+ -v BUNDLEFOLDER:/opt/opendaylight \
+ -v CONTROLLER_USER:heat-admin \
+ -v DEFAULT_LINUX_PROMPT:\$ \
+ -v DEFAULT_LINUX_PROMPT_STRICT:]\$ \
+ -v DEFAULT_USER:heat-admin \
+ -v DEVSTACK_DEPLOY_PATH:/tmp \
+ -v EXTERNAL_GATEWAY:$CONTROLLER_1_IP \
+ -v EXTERNAL_PNF:$CONTROLLER_1_IP \
+ -v EXTERNAL_SUBNET:192.0.2.0/24 \
+ -v EXTERNAL_SUBNET_ALLOCATION_POOL:start=192.0.2.100,end=192.0.2.200 \
+ -v EXTERNAL_INTERNET_ADDR:$CONTROLLER_1_IP \
+ -v HA_PROXY_IP:$SDN_CONTROLLER_IP \
+ -v NUM_ODL_SYSTEM:$NUM_CONTROL_NODES \
+ -v NUM_OS_SYSTEM:$(($NUM_CONTROL_NODES + $NUM_COMPUTE_NODES)) \
+ -v NUM_TOOLS_SYSTEM:0 \
+ -v ODL_SNAT_MODE:conntrack \
+ -v ODL_STREAM:$ODL_STREAM \
+ -v ODL_SYSTEM_IP:$CONTROLLER_1_IP \
+ -v OS_CONTROL_NODE_IP:$CONTROLLER_1_IP \
+ -v OPENSTACK_BRANCH:$FULL_OS_VER \
+ -v OPENSTACK_TOPO:$OPENSTACK_TOPO \
+ -v OS_USER:heat-admin \
+ -v ODL_ENABLE_L3_FWD:yes \
+ -v ODL_SYSTEM_USER:heat-admin \
+ -v ODL_SYSTEM_PROMPT:\$ \
+ -v PRE_CLEAN_OPENSTACK_ALL:True \
+ -v PUBLIC_PHYSICAL_NETWORK:datacentre \
+ -v RESTCONFPORT:8081 \
+ -v ODL_RESTCONF_USER:admin \
+ -v ODL_RESTCONF_PASSWORD:$SDN_CONTROLLER_PASSWORD \
+ -v KARAF_PROMPT_LOGIN:'opendaylight-user' \
+ -v KARAF_PROMPT:'opendaylight-user.*root.*>' \
+ -v SECURITY_GROUP_MODE:stateful \
+ -v USER:heat-admin \
+ -v USER_HOME:\$HOME \
+ -v TOOLS_SYSTEM_IP:'' \
+ -v NODE_ROLE_INDEX_START:0 \
+ -v WORKSPACE:/tmp \
+ $EXTRA_ROBOT_ARGS \
+ -v of_port:6653 "
+
+SUITE_HOME='/home/opnfv/repos/odl_test/csit/suites'
+
+# Disabled suites
+#
+# ${SUITE_HOME}/openstack/connectivity/live_migration.robot
+# Live migration will not work unless we use a shared storage backend like
+# Ceph which we do not currently use with CSIT images
+#
+# ${SUITE_HOME}/netvirt/vpnservice/vpn_basic_ipv6.robot
+# This suite fails with an error indicating the connection was closed
+# to the overcloud control node:
+# https://build.opnfv.org/ci/job/cperf-apex-csit-master/104/consoleFull
+#
+# Minimize HA CSIT as it does not pass all suites
+if [ "$NUM_CONTROL_NODES" -eq 3 ]; then
+ suites="${SUITE_HOME}/openstack/connectivity/l2.robot \
+ ${SUITE_HOME}/openstack/connectivity/l3.robot"
+else
+ suites="${SUITE_HOME}/openstack/connectivity/l2.robot \
+ ${SUITE_HOME}/openstack/connectivity/l3.robot \
+ ${SUITE_HOME}/openstack/connectivity/external_network.robot \
+ ${SUITE_HOME}/openstack/connectivity/security_group.robot \
+ ${SUITE_HOME}/openstack/securitygroup/neutron_security_group.robot \
+ ${SUITE_HOME}/openstack/securitygroup/security_group_l3bcast.robot \
+ ${SUITE_HOME}/netvirt/vpnservice/vpn_basic.robot \
+ ${SUITE_HOME}/netvirt/elan/elan.robot \
+ ${SUITE_HOME}/netvirt/vpnservice/arp_learning.robot \
+ ${SUITE_HOME}/netvirt/l2l3_gatewaymac_arp.robot \
+ ${SUITE_HOME}/integration/Create_JVM_Plots.robot"
+fi
+
+echo "Robot command set: ${robot_cmd}"
+echo "Running robot..."
+docker run -i --net=host \
+ -v ${LOGS_LOCATION}:${LOGS_LOCATION} \
+ -v ${WORKSPACE}/id_rsa:/tmp/id_rsa \
+ -v ${WORKSPACE}/overcloudrc:/tmp/overcloudrc \
+ opnfv/cperf:$DOCKER_TAG \
+ /bin/bash -c "source /tmp/overcloudrc; mkdir -p \$HOME/.ssh; cp /tmp/id_rsa \$HOME/.ssh; \
+ cd /home/opnfv/repos/odl_test/ && git pull origin master; \
+ pip install odltools; \
+ ${robot_cmd} ${suites};"
+
+echo "Running post CSIT clean"
+ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/csit-clean.yaml.ansible -vvv
diff --git a/jjb/cperf/cperf-upload-logs-csit.sh b/jjb/cperf/cperf-upload-logs-csit.sh
new file mode 100644
index 000000000..bd8680406
--- /dev/null
+++ b/jjb/cperf/cperf-upload-logs-csit.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+ODL_STREAM=${ODL_BRANCH#"stable/"}
+
+LOGS_LOCATION=/tmp/robot_results
+UPLOAD_LOCATION=artifacts.opnfv.org/cperf/cperf-apex-csit-${ODL_STREAM}/${BUILD_NUMBER}/
+echo "Uploading robot logs to ${UPLOAD_LOCATION}"
+gsutil -m cp -r -v ${LOGS_LOCATION} gs://${UPLOAD_LOCATION} > gsutil.latest_logs.log
diff --git a/jjb/cperf/csit-clean.yaml.ansible b/jjb/cperf/csit-clean.yaml.ansible
new file mode 100644
index 000000000..0151dd824
--- /dev/null
+++ b/jjb/cperf/csit-clean.yaml.ansible
@@ -0,0 +1,11 @@
+---
+- hosts: all
+ tasks:
+ - name: Delete cirros glance image
+ shell: >
+ source /home/heat-admin/overcloudrc && openstack image delete
+ cirros-0.3.5-x86_64-disk
+ - name: Delete nano flavor
+ shell: >
+ source /home/heat-admin/overcloudrc && openstack flavor delete
+ m1.nano
diff --git a/jjb/cperf/parse-node-yaml.py b/jjb/cperf/parse-node-yaml.py
new file mode 100644
index 000000000..5a7575540
--- /dev/null
+++ b/jjb/cperf/parse-node-yaml.py
@@ -0,0 +1,71 @@
+##############################################################################
+# Copyright (c) 2018 Tim Rozet (trozet@redhat.com) 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
+##############################################################################
+
+import argparse
+import sys
+import yaml
+
+
+def get_node_data_by_number(node_type, node_number):
+ node_idx = 1
+ for node_name, node_data in data['servers'].items():
+ if node_type == node_data['type']:
+ if node_idx == node_number:
+ return node_name, node_data
+ else:
+ node_idx += 1
+
+
+def get_node_value(node_type, node_number, key):
+ node_name, node_data = get_node_data_by_number(node_type, node_number)
+ if not key and node_name is not None:
+ return node_name
+ elif node_data and isinstance(node_data, dict) and key in node_data:
+ return node_data[key]
+
+
+def get_number_of_nodes(node_type):
+ nodes = data['servers']
+ num_nodes = 0
+ for node_name, node_data in nodes.items():
+ if node_data['type'] == node_type:
+ num_nodes += 1
+ return num_nodes
+
+
+FUNCTION_MAP = {'num_nodes':
+ {'func': get_number_of_nodes,
+ 'args': ['node_type']},
+ 'get_value':
+ {'func': get_node_value,
+ 'args': ['node_type', 'node_number', 'key']},
+ }
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('command', choices=FUNCTION_MAP.keys())
+ parser.add_argument('-f', '--file',
+ dest='node_file',
+ required=True)
+ parser.add_argument('--node-type',
+ default='controller',
+ required=False)
+ parser.add_argument('--node-number',
+ default=1,
+ type=int,
+ required=False)
+ parser.add_argument('-k', '--key',
+ required=False)
+ args = parser.parse_args(sys.argv[1:])
+ with open(args.node_file, 'r') as fh:
+ data = yaml.safe_load(fh)
+ assert 'servers' in data
+ func = FUNCTION_MAP[args.command]['func']
+ args = [getattr(args, x) for x in FUNCTION_MAP[args.command]['args']]
+ print(func(*args))
diff --git a/jjb/daisy4nfv/daisy-daily-jobs.yaml b/jjb/daisy4nfv/daisy-daily-jobs.yaml
index ba03bc3f2..4a7e6e908 100644
--- a/jjb/daisy4nfv/daisy-daily-jobs.yaml
+++ b/jjb/daisy4nfv/daisy-daily-jobs.yaml
@@ -105,7 +105,7 @@
- 'daisy-os-.*?-{pod}-daily-.*?'
- 'daisy-daily-.*'
- 'daisy-kolla-build-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -191,7 +191,7 @@
- '{installer}-(build|deploy|test)-daily-(fraser|master)'
- '{installer}-deploy-(baremetal|virtual|zte-pod3|zte-pod9)-daily-(fraser|master)'
- '(functest|yardstick)-{installer}-(baremetal|virtual|zte-pod3|zte-pod9)-daily-(fraser|master)'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
diff --git a/jjb/daisy4nfv/daisy-deploy.sh b/jjb/daisy4nfv/daisy-deploy.sh
index ea57ab1b4..950b9be1f 100755
--- a/jjb/daisy4nfv/daisy-deploy.sh
+++ b/jjb/daisy4nfv/daisy-deploy.sh
@@ -17,7 +17,7 @@ if [[ ! "$NODE_NAME" =~ "-virtual" ]] && [[ ! "$LAB_NAME" =~ (zte) ]]; then
exit $deploy_ret
fi
-# clone the securedlab repo
+# clone the securedlab/pharos repo
cd $WORKSPACE
# There are no PDFs in euphrates branch of pharos repo.
diff --git a/jjb/daisy4nfv/daisy-project-jobs.yaml b/jjb/daisy4nfv/daisy-project-jobs.yaml
index ec5ba71f2..791454820 100644
--- a/jjb/daisy4nfv/daisy-project-jobs.yaml
+++ b/jjb/daisy4nfv/daisy-project-jobs.yaml
@@ -60,7 +60,7 @@
- '{installer}-kolla-build-.*'
- 'daisy-deploy-.*'
- 'daisy-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm
@@ -129,7 +129,7 @@
- '{installer}-kolla-build-.*'
- 'daisy4nfv-merge-build-.*'
- 'daisy4nfv-verify-build-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm
@@ -221,7 +221,7 @@
- '{installer}-daily-(build|deploy|test)-(fraser|master)'
- '{installer}-.*-(baremetal|virtual|zte-pod3|zte-pod9)-daily-(fraser|master)'
- '(functest|yardstick)-{installer}-(baremetal|virtual|zte-pod3|zte-pod9)-daily-(fraser|master)'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm
diff --git a/jjb/daisy4nfv/daisy-rtd-jobs.yaml b/jjb/daisy4nfv/daisy-rtd-jobs.yaml
new file mode 100644
index 000000000..2e7689a68
--- /dev/null
+++ b/jjb/daisy4nfv/daisy-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: daisy-rtd
+ project: daisy
+ project-name: daisy
+
+ project-pattern: 'daisy'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-daisy/47361/'
+ rtd-token: '265efe14ff0bb3fa0d4ea66d6be1b7b511d5d713'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/daisy4nfv/daisy4nfv-merge-jobs.yaml b/jjb/daisy4nfv/daisy4nfv-merge-jobs.yaml
index 7e03fabaf..c261c23bc 100644
--- a/jjb/daisy4nfv/daisy4nfv-merge-jobs.yaml
+++ b/jjb/daisy4nfv/daisy4nfv-merge-jobs.yaml
@@ -61,7 +61,7 @@
use-build-blocker: true
blocking-jobs:
- '{alias}-merge-(master|fraser)'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm
@@ -158,7 +158,7 @@
blocking-jobs:
- '{alias}-merge-{phase}-.*'
- '{installer}-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm
diff --git a/jjb/daisy4nfv/daisy4nfv-verify-jobs.yaml b/jjb/daisy4nfv/daisy4nfv-verify-jobs.yaml
index 033beeb6d..c8c1db096 100644
--- a/jjb/daisy4nfv/daisy4nfv-verify-jobs.yaml
+++ b/jjb/daisy4nfv/daisy4nfv-verify-jobs.yaml
@@ -55,7 +55,7 @@
use-build-blocker: true
blocking-jobs:
- '{alias}-merge-build-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
@@ -158,7 +158,7 @@
- '{alias}-merge-build-.*'
- '{alias}-verify-build-.*'
- '{installer}-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
diff --git a/jjb/doctor/doctor-env-presetup.sh b/jjb/doctor/doctor-env-presetup.sh
new file mode 100755
index 000000000..61e65c792
--- /dev/null
+++ b/jjb/doctor/doctor-env-presetup.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+set -o errexit
+set -o pipefail
+
+# set vars from env if not provided by user as options
+installer_key_file=${installer_key_file:-$HOME/installer_key_file}
+opnfv_installer=${opnfv_installer:-$HOME/opnfv-installer.sh}
+
+# Fetch INSTALLER_IP for APEX deployments
+if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
+
+ echo "Gathering IP information for Apex installer VM"
+ ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+ if sudo virsh list | grep undercloud; then
+ echo "Installer VM detected"
+ undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
+ grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+ export INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
+ echo "Installer ip is ${INSTALLER_IP}"
+ else
+ echo "No available installer VM exists and no credentials provided...exiting"
+ exit 1
+ fi
+
+ sudo cp /root/.ssh/id_rsa ${installer_key_file}
+ sudo chown `whoami`:`whoami` ${installer_key_file}
+
+elif [[ ${INSTALLER_TYPE} == 'daisy' ]]; then
+ echo "Gathering IP information for Daisy installer VM"
+ if sudo virsh list | grep daisy; then
+ echo "Installer VM detected"
+
+ bridge_name=$(sudo virsh domiflist daisy | grep vnet | awk '{print $3}')
+ echo "Bridge is $bridge_name"
+
+ installer_mac=$(sudo virsh domiflist daisy | grep vnet | \
+ grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
+ export INSTALLER_IP=$(/usr/sbin/arp -e -i $bridge_name | grep ${installer_mac} | head -n 1 | awk {'print $1'})
+
+ echo "Installer ip is ${INSTALLER_IP}"
+ else
+ echo "No available installer VM exists...exiting"
+ exit 1
+ fi
+fi
+
+
+# Checking if destination path is valid
+if [ -d $opnfv_installer ]; then
+ error "Please provide the full destination path for the installer ip file including the filename"
+else
+ # Check if we can create the file (e.g. path is correct)
+ touch $opnfv_installer || error "Cannot create the file specified. Check that the path is correct and run the script again."
+fi
+
+
+# Write the installer info to the file
+echo export INSTALLER_TYPE=${INSTALLER_TYPE} > $opnfv_installer
+echo export INSTALLER_IP=${INSTALLER_IP} >> $opnfv_installer
+if [ -e ${installer_key_file} ]; then
+ echo export SSH_KEY=${installer_key_file} >> $opnfv_installer
+fi
diff --git a/jjb/doctor/doctor-rtd-jobs.yaml b/jjb/doctor/doctor-rtd-jobs.yaml
new file mode 100644
index 000000000..13ff8605d
--- /dev/null
+++ b/jjb/doctor/doctor-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: doctor-rtd
+ project: doctor
+ project-name: doctor
+
+ gerrit-skip-vote: true
+ project-pattern: 'doctor'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-doctor/47362/'
+ rtd-token: 'bf8640556a3ba3151e4e5602facc5ed982dd88c8'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/doctor/doctor.yaml b/jjb/doctor/doctor.yaml
index 3985356c1..1ebd22d0a 100644
--- a/jjb/doctor/doctor.yaml
+++ b/jjb/doctor/doctor.yaml
@@ -3,28 +3,27 @@
name: doctor
project: '{name}'
+ project-name: '{name}'
+ project-pattern: '{project}'
stream:
- master:
branch: '{stream}'
gs-pathname: ''
- docker-tag: 'latest'
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
- docker-tag: 'stable'
disabled: false
- # feature projects' tests are not triggered by functest
- # doctor verify Pods need to deploy with these scenario
installer:
- - 'apex':
- scenario: 'os-nosdn-kvm-ha'
- - 'fuel':
- scenario: 'os-nosdn-ovs-ha'
- - 'daisy':
- scenario: 'os-nosdn-ovs_dpdk-noha'
+ - 'apex'
+ - 'fuel'
+ - 'daisy'
arch:
- 'x86_64'
@@ -39,13 +38,19 @@
arch: 'aarch64'
- installer: 'daisy'
arch: 'aarch64'
+ # disabling the following tests due to limitation of PoD owners
+ # these would beenabled again once the PoDs are ready
+ - installer: 'fuel'
+ arch: 'x86_64'
jobs:
- - 'doctor-verify-{inspector}-{stream}'
- - 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+ - 'doctor-verify-{stream}'
+ - 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
+ - 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+ - 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
- job-template:
- name: 'doctor-verify-{inspector}-{stream}'
+ name: 'doctor-verify-{stream}'
disabled: '{obj:disabled}'
project-type: 'multijob'
parameters:
@@ -68,19 +73,10 @@
# in phase jobs
echo "Triggering phase jobs!"
- multijob:
- name: 'doctor-verify'
+ name: 'doctor-verify-sample'
execution-type: PARALLEL
projects:
- - name: 'doctor-verify-apex-{inspector}-x86_64-{stream}'
- predefined-parameters: |
- PROJECT=$PROJECT
- 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
- git-revision: true
- - name: 'doctor-verify-fuel-{inspector}-x86_64-{stream}'
+ - name: 'doctor-verify-fault_management-daisy-sample-x86_64-{stream}'
predefined-parameters: |
PROJECT=$PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
@@ -89,15 +85,23 @@
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
kill-phase-on: FAILURE
git-revision: true
- - 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
- git-revision: true
- - name: 'doctor-verify-daisy-{inspector}-x86_64-{stream}'
+ - name: 'doctor-verify-sample-all'
+ execution-type: PARALLEL
+ projects:
+ - name: 'doctor-verify-all-apex-sample-x86_64-{stream}'
+ predefined-parameters: |
+ PROJECT=$PROJECT
+ 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
+ git-revision: true
+ - multijob:
+ name: 'doctor-verify-congress'
+ execution-type: PARALLEL
+ projects:
+ - name: 'doctor-verify-fault_management-apex-congress-x86_64-{stream}'
predefined-parameters: |
PROJECT=$PROJECT
GERRIT_BRANCH=$GERRIT_BRANCH
@@ -108,7 +112,7 @@
git-revision: true
- job-template:
- name: 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+ name: 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
disabled: '{obj:disabled}'
node: 'doctor-{installer}-{arch}'
wrappers:
@@ -122,9 +126,56 @@
- '{installer}-defaults'
- 'doctor-slave-parameter'
- 'doctor-parameter':
- docker-tag: '{docker-tag}'
- scenario: '{scenario}'
- - 'doctor-functest-parameter'
+ inspector: '{inspector}'
+ test_case: 'fault_management'
+ scm:
+ - git-scm-gerrit
+ builders:
+ - 'doctor-verify-installer-inspector-builders-macro'
+ publishers:
+ - 'doctor-verify-publishers-macro'
+
+- job-template:
+ name: 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+ disabled: '{obj:disabled}'
+ node: 'nokia-pod1'
+ wrappers:
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 40
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - 'doctor-slave-parameter'
+ - 'doctor-parameter':
+ inspector: '{inspector}'
+ test_case: 'maintenance'
+ scm:
+ - git-scm-gerrit
+ builders:
+ - 'doctor-verify-installer-inspector-builders-macro'
+ publishers:
+ - 'doctor-verify-publishers-macro'
+
+- job-template:
+ name: 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
+ disabled: '{obj:disabled}'
+ node: 'doctor-{installer}-{arch}'
+ wrappers:
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 50
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - 'doctor-slave-parameter'
+ - 'doctor-parameter':
+ inspector: '{inspector}'
+ test_case: 'all'
scm:
- git-scm-gerrit
builders:
@@ -140,57 +191,15 @@
name: 'doctor-parameter'
parameters:
- string:
- name: OS_CREDS
- default: /home/jenkins/openstack.creds
- description: 'OpenStack credentials'
- - string:
- name: DOCKER_TAG
- default: '{docker-tag}'
- description: 'Tag to pull docker image'
+ name: INSPECTOR_TYPE
+ default: '{inspector}'
+ description: 'inspector component'
- string:
- name: CLEAN_DOCKER_IMAGES
- default: 'false'
- description: 'Remove downloaded docker images (opnfv/functest:*)'
- - string:
- name: DEPLOY_SCENARIO
- default: '{scenario}'
- description: 'Scenario to deploy and test'
+ name: TEST_CASE
+ default: '{test_case}'
+ description: 'test case: all, fault_management or maintenance'
+
-- parameter:
- name: 'doctor-functest-parameter'
- parameters:
- # functest-suite-parameter
- - string:
- name: FUNCTEST_MODE
- default: 'testcase'
- - string:
- name: FUNCTEST_SUITE_NAME
- default: 'doctor-notification'
- - string:
- name: TESTCASE_OPTIONS
- # yamllint disable rule:line-length
- default: '-e INSPECTOR_TYPE={inspector} -v $WORKSPACE:/home/opnfv/repos/doctor'
- # yamllint enable rule:line-length
- description: 'Addtional parameters specific to test case(s)'
- # functest-parameter
- - string:
- name: GS_PATHNAME
- default: '{gs-pathname}'
- # yamllint disable rule:line-length
- description: "Version directory where the opnfv documents will be stored in gs repository"
- # yamllint enable rule:line-length
- - string:
- name: FUNCTEST_REPO_DIR
- default: "/home/opnfv/repos/functest"
- description: "Directory where the Functest repository is cloned"
- - string:
- name: PUSH_RESULTS_TO_DB
- default: "true"
- description: "Push the results of all the tests to the resultDB"
- - string:
- name: CI_DEBUG
- default: 'true'
- description: "Show debug output information"
# -------------------------------
# builder macros
# -------------------------------
@@ -198,27 +207,23 @@
- builder:
name: 'doctor-verify-installer-inspector-builders-macro'
builders:
- - 'clean-workspace-log'
- # yamllint disable rule:line-length
- - shell: |
- # NOTE: Create symbolic link, so that we can archive file outside
- # of $WORKSPACE .
- # NOTE: We are printing all logs under 'tests/' during test run,
- # so this symbolic link should not be in 'tests/'. Otherwise,
- # we'll have the same log twice in jenkins console log.
- ln -sfn $HOME/opnfv/functest/results/{stream} functest_results
- # NOTE: Get functest script in $WORKSPACE. This functest script is
- # needed to perform VM image download in set-functest-env.sh
- # from E release cycle.
- mkdir -p functest/ci
- wget https://git.opnfv.org/functest/plain/functest/ci/download_images.sh -O functest/ci/download_images.sh
- - 'functest-suite-builder'
+ # yamllint disable rule:indentation
+ - shell:
+ !include-raw:
+ - ./doctor-env-presetup.sh
+ - ../../utils/fetch_os_creds.sh
- shell: |
- functest_log="$HOME/opnfv/functest/results/{stream}/$FUNCTEST_SUITE_NAME.log"
- # NOTE: checking the test result, as the previous job could return
- # 0 regardless the result of doctor test scenario.
- grep -e 'doctor test successfully' $functest_log || exit 1
- # yamllint enable rule:line-length
+ # prepare the env for test
+ source $HOME/opnfv-openrc.sh
+ if [ -f $HOME/os_cacert ]; then
+ export OS_CACERT=$HOME/os_cacert
+ fi
+ source $HOME/opnfv-installer.sh
+
+ # run tox to trigger the test
+ # As Jenkins user, it has no permission to send ICMP package
+ sudo -E tox -e py34
+
# -------------------------------
# publisher macros
@@ -228,10 +233,8 @@
publishers:
- archive:
artifacts: 'doctor_tests/*.log'
- - archive:
- artifacts: 'functest_results/$FUNCTEST_SUITE_NAME.log'
- email-jenkins-admins-on-failure
-
+ - workspace-cleanup
#####################################
# trigger macros
diff --git a/jjb/domino/domino-rtd-jobs.yaml b/jjb/domino/domino-rtd-jobs.yaml
new file mode 100644
index 000000000..26f254760
--- /dev/null
+++ b/jjb/domino/domino-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: domino-rtd
+ project: domino
+ project-name: domino
+
+ gerrit-skip-vote: true
+ project-pattern: 'domino'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-domino/47363/'
+ rtd-token: 'c89c7fc281d94a985df61b49be2b824f544ba6fd'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/dovetail-webportal/dovetail-webportal-project-jobs.yaml b/jjb/dovetail-webportal/dovetail-webportal-project-jobs.yaml
new file mode 100644
index 000000000..a579af6d6
--- /dev/null
+++ b/jjb/dovetail-webportal/dovetail-webportal-project-jobs.yaml
@@ -0,0 +1,102 @@
+---
+###################################################
+# Non-ci jobs for Dovetail project
+# They will only be enabled on request by projects!
+###################################################
+- project:
+ name: dovetail-webportal-project-jobs
+
+ project: 'dovetail-webportal'
+
+ jobs:
+ - 'dovetail-webportal-verify-{stream}'
+ - 'dovetail-webportal-merge-{stream}'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+
+################################
+# job templates
+################################
+
+- job-template:
+ name: 'dovetail-webportal-verify-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+
+ scm:
+ - git-scm-gerrit
+
+ triggers:
+ - gerrit:
+ server-name: 'gerrit.opnfv.org'
+ trigger-on:
+ - patchset-created-event:
+ exclude-drafts: 'false'
+ exclude-trivial-rebase: 'false'
+ exclude-no-code-change: 'false'
+ - draft-published-event
+ - comment-added-contains-event:
+ comment-contains-value: 'recheck'
+ - comment-added-contains-event:
+ comment-contains-value: 'reverify'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: '{project}'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ builders:
+ - dovetail-webportal-unit-tests
+
+- job-template:
+ name: 'dovetail-webportal-merge-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+
+ scm:
+ - git-scm
+
+ 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}'
+
+ builders:
+ - dovetail-webportal-unit-tests
+
+################################
+# builders for dovetail project
+###############################
+- builder:
+ name: dovetail-webportal-unit-tests
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+
+ tox
diff --git a/jjb/dovetail/dovetail-ci-jobs.yaml b/jjb/dovetail/dovetail-ci-jobs.yaml
index a95617ae4..abbffb2af 100644
--- a/jjb/dovetail/dovetail-ci-jobs.yaml
+++ b/jjb/dovetail/dovetail-ci-jobs.yaml
@@ -20,10 +20,17 @@
dovetail-branch: '{stream}'
gs-pathname: ''
docker-tag: 'latest'
+ disabled: true
fraser: &fraser
stream: fraser
branch: 'stable/{stream}'
- dovetail-branch: master
+ dovetail-branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ docker-tag: 'ovp-2.0.0'
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
+ dovetail-branch: 'master'
gs-pathname: '/{stream}'
docker-tag: 'latest'
@@ -60,6 +67,16 @@
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *fraser
+ - baremetal:
+ slave-label: fuel-baremetal
+ SUT: fuel
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - virtual:
+ slave-label: fuel-virtual
+ SUT: fuel
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
# compass CI PODs
- baremetal:
slave-label: compass-baremetal
@@ -81,6 +98,16 @@
SUT: compass
auto-trigger-name: 'daily-trigger-disabled'
<<: *fraser
+ - baremetal:
+ slave-label: compass-baremetal
+ SUT: compass
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - virtual:
+ slave-label: compass-virtual
+ SUT: compass
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
# -------------------------------
# Installers not using labels
# CI PODs
@@ -108,6 +135,16 @@
SUT: apex
auto-trigger-name: 'daily-trigger-disabled'
<<: *fraser
+ - virtual:
+ slave-label: apex-virtual-master
+ SUT: apex
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - baremetal:
+ slave-label: apex-baremetal-master
+ SUT: apex
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
# armband CI PODs
- armband-baremetal:
slave-label: armband-baremetal
@@ -178,8 +215,13 @@
- 'default'
- 'proposed_tests'
+ testarea:
+ - 'mandatory'
+ - 'optional'
+
jobs:
- 'dovetail-{SUT}-{pod}-{testsuite}-{stream}'
+ - 'dovetail-{SUT}-{pod}-{testsuite}-{testarea}-{stream}'
################################
# job templates
@@ -231,6 +273,85 @@
default: '{testsuite}'
description: "dovetail testsuite to run"
- string:
+ name: TESTAREA
+ default: 'all'
+ description: "dovetail testarea to run"
+ - string:
+ name: DOVETAIL_REPO_DIR
+ default: "/home/opnfv/dovetail"
+ description: "Directory where the dovetail repository is cloned"
+ - string:
+ name: SUT_BRANCH
+ default: '{branch}'
+ description: "SUT branch"
+
+ scm:
+ - git-scm
+
+ builders:
+ - description-setter:
+ description: "POD: $NODE_NAME"
+ - 'dovetail-cleanup'
+ - 'dovetail-run'
+
+ publishers:
+ - archive:
+ artifacts: 'results/**/*'
+ allow-empty: true
+ fingerprint: true
+ - email-jenkins-admins-on-failure
+
+- job-template:
+ name: 'dovetail-{SUT}-{pod}-{testsuite}-{testarea}-{stream}'
+
+ disabled: false
+
+ concurrent: true
+
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: 300
+ abort: true
+ - fix-workspace-permissions
+
+ triggers:
+ - '{auto-trigger-name}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{dovetail-branch}'
+ - '{SUT}-defaults'
+ - '{slave-label}-defaults'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-ha'
+ - string:
+ name: DOCKER_TAG
+ default: '{docker-tag}'
+ description: 'Tag to pull dovetail docker image'
+ - string:
+ name: CI_DEBUG
+ default: 'true'
+ description: "Show debug output information"
+ - string:
+ name: TESTSUITE
+ default: '{testsuite}'
+ description: "dovetail testsuite to run"
+ - string:
+ name: TESTAREA
+ default: '{testarea}'
+ description: "dovetail testarea to run"
+ - string:
name: DOVETAIL_REPO_DIR
default: "/home/opnfv/dovetail"
description: "Directory where the dovetail repository is cloned"
diff --git a/jjb/dovetail/dovetail-rtd-jobs.yaml b/jjb/dovetail/dovetail-rtd-jobs.yaml
new file mode 100644
index 000000000..482ff4673
--- /dev/null
+++ b/jjb/dovetail/dovetail-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: dovetail-rtd
+ project: dovetail
+ project-name: dovetail
+
+ project-pattern: 'dovetail'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-dovetail/47364/'
+ rtd-token: '47df9d7358b153666c2cf5cc139cd3a65d135688'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/dovetail/dovetail-run.sh b/jjb/dovetail/dovetail-run.sh
index df681dd59..04b11fdd1 100755
--- a/jjb/dovetail/dovetail-run.sh
+++ b/jjb/dovetail/dovetail-run.sh
@@ -16,7 +16,7 @@ set -e
DEPLOY_TYPE=baremetal
[[ $BUILD_TAG =~ "virtual" ]] && DEPLOY_TYPE=virt
-DOVETAIL_HOME=${WORKSPACE}/cvp
+DOVETAIL_HOME=${WORKSPACE}/ovp
[ -d ${DOVETAIL_HOME} ] && sudo rm -rf ${DOVETAIL_HOME}
mkdir -p ${DOVETAIL_HOME}
@@ -27,13 +27,44 @@ mkdir -p ${DOVETAIL_CONFIG}
DOVETAIL_IMAGES=${DOVETAIL_HOME}/images
mkdir -p ${DOVETAIL_IMAGES}
+OPENRC=${DOVETAIL_CONFIG}/env_config.sh
+CACERT=${DOVETAIL_CONFIG}/os_cacert
+POD=${DOVETAIL_CONFIG}/pod.yaml
+
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
sshkey=""
-# The path of openrc.sh is defined in fetch_os_creds.sh
-OPENRC=${DOVETAIL_CONFIG}/env_config.sh
-CACERT=${DOVETAIL_CONFIG}/os_cacert
-if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
+
+check_file_exists() {
+ if [[ -f $1 ]]; then
+ echo 0
+ else
+ echo 1
+ fi
+}
+
+get_cred_file_with_scripts() {
+ echo "INFO: clone releng repo..."
+ releng_repo=${WORKSPACE}/releng
+ [ -d ${releng_repo} ] && sudo rm -rf ${releng_repo}
+ git clone https://gerrit.opnfv.org/gerrit/releng ${releng_repo} >/dev/null
+
+ echo "INFO: clone pharos repo..."
+ pharos_repo=${WORKSPACE}/pharos
+ [ -d ${pharos_repo} ] && sudo rm -rf ${pharos_repo}
+ git clone https://git.opnfv.org/pharos ${pharos_repo} >/dev/null
+
+ echo "INFO: SUT branch is $SUT_BRANCH"
+ echo "INFO: dovetail branch is $BRANCH"
+ BRANCH_BACKUP=$BRANCH
+ export BRANCH=$SUT_BRANCH
+ cmd="${releng_repo}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} -o ${CACERT} >${redirect}"
+ echo "INFO: cmd is ${cmd}"
+ ${cmd}
+ export BRANCH=$BRANCH_BACKUP
+}
+
+get_apex_cred_file() {
instack_mac=$(sudo virsh domiflist undercloud | grep default | \
grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk {'print $1'})
@@ -43,67 +74,93 @@ if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
fi
-elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
- # If production lab then creds may be retrieved dynamically
- # creds are on the jumphost, always in the same folder
- sudo cp $LAB_CONFIG/admin-openrc $OPENRC
- # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
- # replace the default one by the customized one provided by jenkins config
-fi
+ get_cred_file_with_scripts
+}
-# 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
+get_compass_cred_file() {
+ get_cred_file_with_scripts
+}
-releng_repo=${WORKSPACE}/releng
-[ -d ${releng_repo} ] && sudo rm -rf ${releng_repo}
-git clone https://gerrit.opnfv.org/gerrit/releng ${releng_repo} >/dev/null
+get_fuel_cred_file() {
+ get_cred_file_with_scripts
+}
-if [[ ${INSTALLER_TYPE} != 'joid' ]]; then
- echo "SUT branch is $SUT_BRANCH"
- echo "dovetail branch is $BRANCH"
- BRANCH_BACKUP=$BRANCH
- export BRANCH=$SUT_BRANCH
- ${releng_repo}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} -o ${CACERT} >${redirect}
- export BRANCH=$BRANCH_BACKUP
-fi
+get_joid_cred_file() {
+ # If production lab then creds may be retrieved dynamically
+ # creds are on the jumphost, always in the same folder
+ sudo cp $LAB_CONFIG/admin-openrc $OPENRC
+}
-if [[ -f $OPENRC ]]; then
- echo "INFO: openstack credentials path is $OPENRC"
- if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "compass" ]]; then
- if [[ -f ${CACERT} ]]; then
- echo "INFO: ${INSTALLER_TYPE} openstack cacert file is ${CACERT}"
+change_cred_file_cacert_path() {
+ if [[ ${INSTALLER_TYPE} == "apex" ]]; then
+ echo "INFO: apex doesn't need to set OS_CACERT."
+ return 0
+ fi
+ exists=`check_file_exists ${CACERT}`
+ if [[ $exists == 0 ]]; then
+ echo "INFO: set ${INSTALLER_TYPE} openstack cacert file to be ${CACERT}"
+ if [[ ${INSTALLER_TYPE} == "compass" ]]; then
echo "export OS_CACERT=${CACERT}" >> ${OPENRC}
- else
- echo "ERROR: Can't find ${INSTALLER_TYPE} openstack cacert file. Please check if it is existing."
- sudo ls -al ${DOVETAIL_CONFIG}
- exit 1
+ elif [[ ${INSTALLER_TYPE} == "fuel" ]]; then
+ sed -i "s#/etc/ssl/certs/mcp_os_cacert#${CACERT}#g" ${OPENRC}
fi
+ else
+ echo "ERROR: cannot find file ${CACERT}. Please check if it exists."
+ sudo ls -al ${DOVETAIL_CONFIG}
+ exit 1
fi
- echo "export EXTERNAL_NETWORK=${EXTERNAL_NETWORK}" >> ${OPENRC}
-else
- echo "ERROR: cannot find file $OPENRC. Please check if it is existing."
- sudo ls -al ${DOVETAIL_CONFIG}
- exit 1
-fi
+}
-if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "fuel" ]]; then
- sed -i "s#/etc/ssl/certs/mcp_os_cacert#${CACERT}#g" ${OPENRC}
-fi
-cat $OPENRC
+change_cred_file_ext_net() {
+ exists=`check_file_exists ${OPENRC}`
+ if [[ $exists == 0 ]]; then
+ echo "export EXTERNAL_NETWORK=${EXTERNAL_NETWORK}" >> ${OPENRC}
+ else
+ echo "ERROR: cannot find file $OPENRC. Please check if it exists."
+ sudo ls -al ${DOVETAIL_CONFIG}
+ exit 1
+ fi
+}
+
+get_cred_file() {
+ if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
+ get_apex_cred_file
+ elif [[ ${INSTALLER_TYPE} == 'compass' ]]; then
+ get_compass_cred_file
+ elif [[ ${INSTALLER_TYPE} == 'fuel' ]]; then
+ get_fuel_cred_file
+ elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
+ get_joid_cred_file
+ fi
-if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "compass" ]]; then
+ exists=`check_file_exists ${OPENRC}`
+ if [[ $exists == 0 ]]; then
+ echo "INFO: original openstack credentials file is:"
+ cat $OPENRC
+ echo "INFO: change cacert file path in credentials file"
+ change_cred_file_cacert_path
+ echo "INFO: set external network in credentials file"
+ change_cred_file_ext_net
+ echo "INFO: final openstack credentials file is:"
+ cat $OPENRC
+ else
+ echo "ERROR: cannot find file $OPENRC. Please check if it exists."
+ sudo ls -al ${DOVETAIL_CONFIG}
+ exit 1
+ fi
+}
+
+get_compass_pod_file() {
compass_repo=${WORKSPACE}/compass4nfv/
+ echo "INFO: clone compass repo..."
git clone https://github.com/opnfv/compass4nfv.git ${compass_repo} >/dev/null
- sudo 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
+ cat << EOF >${POD}
nodes:
- {ip: ${jumpserver_ip}, name: node0, password: root, role: Jumpserver, user: root}
- {ip: 10.1.0.50, name: node1, password: root, role: controller, user: root,
@@ -114,24 +171,51 @@ nodes:
- {ip: 10.1.0.54, name: node5, password: root, role: compute, user: root}
EOF
-fi
-if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_TYPE} == 'baremetal' ]]; then
+}
+
+get_fuel_baremetal_pod_file() {
fuel_ctl_ssh_options="${ssh_options} -i ${SSH_KEY}"
ssh_user="ubuntu"
fuel_ctl_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
- "sudo salt --out yaml 'ctl*' pillar.get _param:openstack_control_address | \
- awk '{print \$2; exit}'") &> /dev/null
- cat << EOF >${DOVETAIL_CONFIG}/pod.yaml
+ "sudo salt 'cfg*' pillar.get _param:openstack_control_address --out text| \
+ cut -f2 -d' '")
+ fuel_cmp_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
+ "sudo salt 'cmp001*' pillar.get _param:openstack_control_address --out text| \
+ cut -f2 -d' '")
+ fuel_dbs_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
+ "sudo salt 'dbs01*' pillar.get _param:openstack_database_node01_address --out text| \
+ cut -f2 -d' '")
+ fuel_msg_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
+ "sudo salt 'msg01*' pillar.get _param:openstack_message_queue_node01_address --out text| \
+ cut -f2 -d' '")
+ ipmi_index=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
+ "sudo salt 'ctl*' network.ip_addrs cidr=${fuel_ctl_ip} --out text | grep ${fuel_ctl_ip} | cut -c 5")
+
+ organization="$(cut -d'-' -f1 <<< "${NODE_NAME}")"
+ pod_name="$(cut -d'-' -f2 <<< "${NODE_NAME}")"
+ pdf_file=${pharos_repo}/labs/${organization}/${pod_name}.yaml
+ ipmiIp=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.address)
+ ipmiIp="$(cut -d'/' -f1 <<< "${ipmiIp}")"
+ ipmiPass=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.pass)
+ ipmiUser=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.user)
+ [[ $ipmiUser == ENC* ]] && ipmiUser=$(eyaml decrypt -s ${ipmiUser//[[:blank:]]/})
+ [[ $ipmiPass == ENC* ]] && ipmiPass=$(eyaml decrypt -s ${ipmiPass//[[:blank:]]/})
+
+ cat << EOF >${POD}
nodes:
-- {ip: ${fuel_ctl_ip}, name: node1, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, role: controller, user: ${ssh_user}}
-
+- {ip: ${INSTALLER_IP}, name: node0, key_filename: /home/opnfv/userconfig/pre_config/id_rsa,
+ role: Jumpserver, user: ${ssh_user}}
+- {ip: ${fuel_ctl_ip}, name: node1, key_filename: /home/opnfv/userconfig/pre_config/id_rsa,
+ role: controller, user: ${ssh_user}, ipmi_ip: ${ipmiIp}, ipmi_user: ${ipmiUser}, ipmi_password: ${ipmiPass}}
+- {ip: ${fuel_msg_ip}, name: msg01, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, role: controller, user: ${ssh_user}}
+- {ip: ${fuel_cmp_ip}, name: cmp01, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, role: controller, user: ${ssh_user}}
+- {ip: ${fuel_dbs_ip}, name: dbs01, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, role: controller, user: ${ssh_user}}
EOF
-fi
+}
-if [[ ! -f ${DOVETAIL_CONFIG}/pod.yaml ]]; then
+get_pod_file_with_scripts() {
set +e
-
sudo pip install virtualenv
cd ${releng_repo}/modules
@@ -143,45 +227,95 @@ if [[ ! -f ${DOVETAIL_CONFIG}/pod.yaml ]]; then
if [[ ${INSTALLER_TYPE} == compass ]]; then
options="-u root -p root"
elif [[ ${INSTALLER_TYPE} == fuel ]]; then
- options="-u root -p r00tme"
+ options="-u ubuntu -k /root/.ssh/id_rsa"
elif [[ ${INSTALLER_TYPE} == apex ]]; then
options="-u stack -k /root/.ssh/id_rsa"
elif [[ ${INSTALLER_TYPE} == daisy ]]; then
options="-u root -p r00tme"
else
- echo "Don't support to generate pod.yaml on ${INSTALLER_TYPE} currently."
- echo "HA test cases may not run properly."
+ echo "WARNING: Don't support to generate ${POD} on ${INSTALLER_TYPE} currently."
+ echo "WARNING: HA test cases may not run properly."
fi
cmd="sudo python ${releng_repo}/utils/create_pod_file.py -t ${INSTALLER_TYPE} \
- -i ${INSTALLER_IP} ${options} -f ${DOVETAIL_CONFIG}/pod.yaml \
+ -i ${INSTALLER_IP} ${options} -f ${POD} \
-s /home/opnfv/userconfig/pre_config/id_rsa"
- echo ${cmd}
+ echo "INFO: cmd is ${cmd}"
${cmd}
deactivate
-
set -e
-
cd ${WORKSPACE}
-fi
+}
-if [ -f ${DOVETAIL_CONFIG}/pod.yaml ]; then
- sudo chmod 666 ${DOVETAIL_CONFIG}/pod.yaml
- echo "Adapt process info for $INSTALLER_TYPE ..."
- attack_process='rabbitmq'
- cat << EOF >> ${DOVETAIL_CONFIG}/pod.yaml
+change_apex_pod_file_process_info() {
+ cat << EOF >> ${POD}
process_info:
-- {testcase_name: dovetail.ha.tc010, attack_process: ${attack_process}}
+- {testcase_name: yardstick.ha.rabbitmq, attack_process: rabbitmq_server}
+- {testcase_name: yardstick.ha.cinder_api, attack_process: cinder_wsgi}
+EOF
+}
+change_fuel_pod_file_process_info() {
+ cat << EOF >> ${POD}
+process_info:
+- {testcase_name: yardstick.ha.cinder_api, attack_process: cinder-wsgi}
+- {testcase_name: yardstick.ha.rabbitmq, attack_process: rabbitmq_server, attack_host: msg01}
+- {testcase_name: yardstick.ha.neutron_l3_agent, attack_process: neutron-l3-agent, attack_host: cmp01}
+- {testcase_name: yardstick.ha.database, attack_process: mysqld, attack_host: dbs01}
EOF
- echo "file ${DOVETAIL_CONFIG}/pod.yaml:"
- cat ${DOVETAIL_CONFIG}/pod.yaml
-else
- echo "Error: cannot find file ${DOVETAIL_CONFIG}/pod.yaml. Please check if it is existing."
- sudo ls -al ${DOVETAIL_CONFIG}
- echo "HA test cases may not run properly."
-fi
+}
+
+change_compass_pod_file_process_info() {
+ cat << EOF >> ${POD}
+process_info:
+- {testcase_name: yardstick.ha.rabbitmq, attack_process: rabbitmq}
+EOF
+}
+
+change_pod_file_process_info() {
+ sudo chmod 666 ${POD}
+ echo "INFO: adapt process info for $INSTALLER_TYPE ..."
+ if [ "$INSTALLER_TYPE" == "apex" ]; then
+ change_apex_pod_file_process_info
+ elif [ "$INSTALLER_TYPE" == "fuel" ]; then
+ change_fuel_pod_file_process_info
+ elif [ "$INSTALLER_TYPE" == "compass" ]; then
+ change_compass_pod_file_process_info
+ fi
+}
+
+get_pod_file() {
+ # These packages are used for parsing yaml files and decrypting ipmi user and password.
+ sudo pip install shyaml
+ sudo yum install -y rubygems || sudo apt-get install -y ruby
+ sudo gem install hiera-eyaml
+ if [[ ${INSTALLER_TYPE} == 'compass' ]]; then
+ get_compass_pod_file
+ elif [[ ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_TYPE} == 'baremetal' ]]; then
+ get_fuel_baremetal_pod_file
+ fi
+
+ exists=`check_file_exists ${POD}`
+ if [[ $exists == 1 ]]; then
+ get_pod_file_with_scripts
+ fi
+
+ exists=`check_file_exists ${POD}`
+ if [[ $exists == 0 ]]; then
+ change_pod_file_process_info
+ else
+ echo "ERROR: cannot find file ${POD}. Please check if it exists."
+ sudo ls -al ${DOVETAIL_CONFIG}
+ exit 1
+ fi
+
+ echo "INFO: file ${POD} is:"
+ cat ${POD}
+}
+
+get_cred_file
+get_pod_file
if [ "$INSTALLER_TYPE" == "fuel" ]; then
if [[ "${SUT_BRANCH}" =~ "danube" ]]; then
@@ -211,7 +345,7 @@ fi
ubuntu_image=${image_path}/ubuntu-16.04-server-cloudimg-amd64-disk1.img
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}
+ wget -q -nc https://artifacts.opnfv.org/sdnvpn/ubuntu-16.04-server-cloudimg-amd64-disk1.img -P ${image_path}
fi
sudo cp ${ubuntu_image} ${DOVETAIL_IMAGES}
@@ -276,7 +410,7 @@ sleep 5
container_id=$(docker ps | grep "${DOCKER_REPO}:${DOCKER_TAG}" | awk '{print $1}' | head -1)
echo "Container ID=${container_id}"
if [ -z ${container_id} ]; then
- echo "Cannot find ${DOCKER_REPO} container ID ${container_id}. Please check if it is existing."
+ echo "Cannot find ${DOCKER_REPO} container ID ${container_id}. Please check if it exists."
docker ps -a
exit 1
fi
@@ -318,11 +452,28 @@ else
testsuite="--testsuite ${TESTSUITE}"
fi
-run_cmd="dovetail run ${testsuite} -d"
+if [[ ${TESTAREA} == 'mandatory' ]]; then
+ testarea='--mandatory'
+elif [[ ${TESTAREA} == 'optional' ]]; then
+ testarea="--optional"
+elif [[ ${TESTAREA} == 'all' ]]; then
+ testarea=""
+else
+ testarea="--testarea ${TESTAREA}"
+fi
+
+run_cmd="dovetail run ${testsuite} ${testarea} --deploy-scenario ${DEPLOY_SCENARIO} -d -r"
echo "Container exec command: ${run_cmd}"
docker exec $container_id ${run_cmd}
sudo cp -r ${DOVETAIL_HOME}/results ./
+result_package=$(find ${DOVETAIL_HOME} -name 'logs_*')
+echo "Results package is ${result_package}"
+for item in ${result_package};
+do
+ sudo mv ${item} ./results
+done
+
# To make sure the file owner is the current user, for the copied results files in the above line
echo "Change owner of result files ..."
CURRENT_USER=${SUDO_USER:-$USER}
@@ -333,7 +484,7 @@ sudo chown -R ${CURRENT_USER}:${PRIMARY_GROUP} ./results
#remove useless files to save disk space
sudo rm -rf ./results/workspace
sudo rm -f ./results/yardstick.img
-sudo rm -f ./results/tmp*
+sudo rm -f ./results/bottlenecks/tmp*
echo "Dovetail: done!"
diff --git a/jjb/edgecloud/edgecloud-rtd-jobs.yaml b/jjb/edgecloud/edgecloud-rtd-jobs.yaml
new file mode 100644
index 000000000..a3835f3ca
--- /dev/null
+++ b/jjb/edgecloud/edgecloud-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: edgecloud-rtd
+ project: edgecloud
+ project-name: edgecloud
+
+ project-pattern: 'edgecloud'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-edgecloud/52895/'
+ rtd-token: '47989bec8e8da44ab2f33491cd6031f0411d319b'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/escalator/escalator-rtd-jobs.yaml b/jjb/escalator/escalator-rtd-jobs.yaml
new file mode 100644
index 000000000..762051c96
--- /dev/null
+++ b/jjb/escalator/escalator-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: escalator-rtd
+ project: escalator
+ project-name: escalator
+
+ gerrit-skip-vote: true
+ project-pattern: 'escalator'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-escalator/47365/'
+ rtd-token: 'cb75c70dab564cb40e6d9e8f2a99ced96f5b79b1'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/fds/fds-rtd-jobs.yaml b/jjb/fds/fds-rtd-jobs.yaml
new file mode 100644
index 000000000..9bf47b956
--- /dev/null
+++ b/jjb/fds/fds-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: fds-rtd
+ project: fds
+ project-name: fds
+
+ project-pattern: 'fds'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-fds/47367/'
+ rtd-token: '756989c50a7c8f3350c4943f3d39a73762a4cd85'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/fuel/fuel-daily-jobs.yaml b/jjb/fuel/fuel-daily-jobs.yaml
index 7110daeaf..fb619c3f5 100644
--- a/jjb/fuel/fuel-daily-jobs.yaml
+++ b/jjb/fuel/fuel-daily-jobs.yaml
@@ -21,8 +21,8 @@
branch: 'stable/{stream}'
disabled: false
gs-pathname: '/{stream}'
- danube: &danube
- stream: danube
+ gambia: &gambia
+ stream: gambia
branch: 'stable/{stream}'
disabled: false
gs-pathname: '/{stream}'
@@ -40,9 +40,12 @@
<<: *master
- baremetal:
slave-label: fuel-baremetal
- <<: *fraser
+ <<: *gambia
- virtual:
slave-label: fuel-virtual
+ <<: *gambia
+ - baremetal:
+ slave-label: fuel-baremetal
<<: *fraser
# -------------------------------
# None-CI PODs
@@ -59,54 +62,52 @@
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-odl-nofeature-ha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-onos-sfc-ha':
- 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':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-nosdn-kvm_ovs-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- - 'os-nosdn-kvm_ovs_dpdk-ha':
- auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-nosdn-kvm_ovs_dpdk_bar-ha':
+ - 'os-nosdn-vpp-ha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
# NOHA scenarios
- 'os-nosdn-nofeature-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-odl-nofeature-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-onos-sfc-noha':
+ - 'os-odl-sfc-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-onos-nofeature-noha':
+ - 'os-odl-bgpvpn-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-ovn-nofeature-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-nosdn-kvm-noha':
+ - 'os-odl-ovs-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- 'os-nosdn-ovs-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-nosdn-kvm_ovs_dpdk-noha':
- auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- - 'os-nosdn-kvm_ovs_dpdk_bar-noha':
- auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
- # danube scenario for Dovetail only
- - 'os-odl_l2-bgpvpn-ha':
+ - 'os-nosdn-vpp-noha':
auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
exclude:
- - scenario: os-odl_l2-bgpvpn-ha
- stream: master
- - scenario: os-odl_l2-bgpvpn-ha
+ # Dovetail (and only it) should run against Fraser HA baremetal scenarios
+ - scenario: os-nosdn-nofeature-noha
+ stream: fraser
+ - scenario: os-odl-nofeature-noha
+ stream: fraser
+ - scenario: os-odl-sfc-noha
+ stream: fraser
+ - scenario: os-odl-bgpvpn-noha
+ stream: fraser
+ - scenario: os-odl-ovs-noha
stream: fraser
- scenario: os-ovn-nofeature-noha
- stream: danube
+ stream: fraser
+ - scenario: os-nosdn-ovs-noha
+ stream: fraser
+ - scenario: os-nosdn-vpp-noha
+ stream: fraser
- scenario: os-ovn-nofeature-ha
- stream: danube
+ stream: fraser
+ - scenario: os-nosdn-vpp-ha
+ stream: fraser
jobs:
- 'fuel-{scenario}-{pod}-daily-{stream}'
@@ -134,9 +135,8 @@
use-build-blocker: true
blocking-jobs:
- 'fuel-os-.*?-{pod}-daily-.*'
- - 'fuel-os-.*?-{pod}-weekly-.*'
- 'fuel-verify-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -167,50 +167,33 @@
DEPLOY_SCENARIO={scenario}
same-node: true
block: true
- - 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
- # 4.testsuite default here is for the test cases already added into OVP
- # 5.run default testsuite on Tuesday against ha scenario
- # 6.not used for release criteria or compliance, only to debug the dovetail tool bugs
- conditional-step:
- condition-kind: and
- condition-operands:
- - condition-kind: regex-match
- regex: '.*-ha'
- label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- MON: true
- WED: true
- FRI: true
- use-build-time: true
+ condition-kind: not
+ condition-operand:
+ condition-kind: regex-match
+ regex: 'fraser'
+ 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: 'fraser'
+ label: '{stream}'
steps:
- trigger-builds:
- - project: 'dovetail-fuel-{pod}-proposed_tests-{stream}'
+ - project: 'yardstick-fuel-{pod}-daily-{stream}'
current-parameters: false
predefined-parameters:
DEPLOY_SCENARIO={scenario}
@@ -220,20 +203,20 @@
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 default here is for the test cases already added into OVP
+ # 3.run default testsuite mandatory test cases against ha scenario
+ # 4.run default testsuite optional test cases against ha scenario twice one week
+ # 5.not used for release criteria or compliance, only to debug the dovetail tool bugs
- conditional-step:
condition-kind: and
condition-operands:
- condition-kind: regex-match
regex: '.*-ha'
label: '{scenario}'
- - condition-kind: day-of-week
- day-selector: select-days
- days:
- TUES: true
- use-build-time: true
steps:
- trigger-builds:
- - project: 'dovetail-fuel-{pod}-default-{stream}'
+ - project: 'dovetail-fuel-{pod}-default-mandatory-{stream}'
current-parameters: false
predefined-parameters:
DEPLOY_SCENARIO={scenario}
@@ -244,14 +227,20 @@
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
- conditional-step:
- condition-kind: not
- condition-operand:
- condition-kind: regex-match
- regex: 'danube'
- label: '{stream}'
+ condition-kind: and
+ condition-operands:
+ - condition-kind: regex-match
+ regex: '.*-ha'
+ label: '{scenario}'
+ - condition-kind: day-of-week
+ day-selector: select-days
+ days:
+ MON: true
+ WED: true
+ use-build-time: true
steps:
- trigger-builds:
- - project: 'fuel-collect-logs-{pod}-daily-{stream}'
+ - project: 'dovetail-fuel-{pod}-default-optional-{stream}'
current-parameters: false
predefined-parameters:
DEPLOY_SCENARIO={scenario}
@@ -261,10 +250,20 @@
build-step-failure-threshold: 'never'
failure-threshold: 'never'
unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'fuel-collect-logs-{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'
publishers:
- - email:
- recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
+ - email-fuel-ptl
- email-jenkins-admins-on-failure
- job-template:
@@ -285,10 +284,7 @@
use-build-blocker: true
blocking-jobs:
- 'fuel-deploy-{pod}-daily-.*'
- - 'fuel-deploy-generic-daily-.*'
- - 'fuel-deploy-{pod}-weekly-.*'
- - 'fuel-deploy-generic-weekly-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
@@ -315,13 +311,10 @@
description: "Built on $NODE_NAME"
- track-begin-timestamp
- shell:
- !include-raw-escape: ./fuel-download-artifact.sh
- - shell:
!include-raw-escape: ./fuel-deploy.sh
publishers:
- - email:
- recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
+ - email-fuel-ptl
- email-jenkins-admins-on-failure
- report-provision-result
@@ -383,29 +376,14 @@
triggers:
- timed: '5 5 * * *'
- trigger:
- name: 'fuel-os-onos-sfc-ha-baremetal-daily-master-trigger'
- triggers:
- - timed: '' # '5 5 * * *'
-- trigger:
- name: 'fuel-os-onos-nofeature-ha-baremetal-daily-master-trigger'
- 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'
+ name: 'fuel-os-nosdn-vpp-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '' # '5 17 * * *'
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-master-trigger'
- triggers:
- - timed: '' # '30 12 * * *'
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-master-trigger'
- triggers:
- - timed: '' # '30 8 * * *'
+ - timed: ''
+
# NOHA Scenarios
- trigger:
name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-master-trigger'
@@ -416,11 +394,11 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-sfc-noha-baremetal-daily-master-trigger'
+ name: 'fuel-os-odl-sfc-noha-baremetal-daily-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-nofeature-noha-baremetal-daily-master-trigger'
+ name: 'fuel-os-odl-bgpvpn-noha-baremetal-daily-master-trigger'
triggers:
- timed: ''
- trigger:
@@ -428,7 +406,7 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-master-trigger'
+ name: 'fuel-os-odl-ovs-noha-baremetal-daily-master-trigger'
triggers:
- timed: ''
- trigger:
@@ -436,88 +414,64 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-baremetal-daily-master-trigger'
+ name: 'fuel-os-nosdn-vpp-noha-baremetal-daily-master-trigger'
triggers:
- timed: ''
# ----------------------------------------------
-# Triggers for job running on fuel-baremetal against fraser branch
+# Triggers for job running on fuel-baremetal against gambia branch
# ----------------------------------------------
# HA Scenarios
- trigger:
- name: 'fuel-os-nosdn-nofeature-ha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-baremetal-daily-gambia-trigger'
triggers:
- - timed: '' # '0 20 * * *'
+ - timed: '0 20 * * *'
- trigger:
- name: 'fuel-os-odl-nofeature-ha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-ha-baremetal-daily-gambia-trigger'
triggers:
- - timed: '' # '0 2 * * *'
+ - timed: '0 2 * * *'
- trigger:
- name: 'fuel-os-onos-sfc-ha-baremetal-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 5 * * *'
-- trigger:
- name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-nofeature-ha-baremetal-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 8 * * *'
-- trigger:
- name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 17 * * *'
-- trigger:
- name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 20 * * *'
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-gambia-trigger'
triggers:
- - timed: '' # '0 12 * * *'
+ - timed: '0 5 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 8 * * *'
-# NOHA Scenarios
-- trigger:
- name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
+# NOHA Scenarios
- trigger:
- name: 'fuel-os-odl-nofeature-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-sfc-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-nofeature-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-odl-sfc-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-odl-bgpvpn-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-odl-ovs-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-baremetal-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-noha-baremetal-daily-gambia-trigger'
triggers:
- timed: ''
# ----------------------------------------------
@@ -532,31 +486,15 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-sfc-ha-virtual-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-onos-nofeature-ha-virtual-daily-master-trigger'
- 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: ''
-- trigger:
name: 'fuel-os-nosdn-ovs-ha-virtual-daily-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-master-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-virtual-daily-master-trigger'
triggers:
- timed: ''
# NOHA Scenarios
@@ -569,109 +507,100 @@
triggers:
- timed: '5 18 * * *'
- trigger:
- name: 'fuel-os-onos-sfc-noha-virtual-daily-master-trigger'
+ name: 'fuel-os-odl-sfc-noha-virtual-daily-master-trigger'
triggers:
- - timed: '' # '35 20 * * *'
+ - timed: '5 4 * * *'
- trigger:
- name: 'fuel-os-onos-nofeature-noha-virtual-daily-master-trigger'
+ name: 'fuel-os-odl-bgpvpn-noha-virtual-daily-master-trigger'
triggers:
- - timed: '' # '5 23 * * *'
+ - timed: '5 6 * * *'
- trigger:
name: 'fuel-os-ovn-nofeature-noha-virtual-daily-master-trigger'
triggers:
- timed: '5 23 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm-noha-virtual-daily-master-trigger'
+ name: 'fuel-os-odl-ovs-noha-virtual-daily-master-trigger'
triggers:
- - timed: '' # '35 6 * * *'
+ - timed: '5 2 * * *'
- trigger:
name: 'fuel-os-nosdn-ovs-noha-virtual-daily-master-trigger'
triggers:
- timed: '5 9 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-master-trigger'
- triggers:
- - timed: '' # '30 16 * * *'
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-virtual-daily-master-trigger'
+ name: 'fuel-os-nosdn-vpp-noha-virtual-daily-master-trigger'
triggers:
- - timed: '' # '30 20 * * *'
+ - timed: ''
# ----------------------------------------------
-# Triggers for job running on fuel-virtual against fraser branch
+# Triggers for job running on fuel-baremetal against fraser branch (for Dovetail)
# ----------------------------------------------
- trigger:
- name: 'fuel-os-nosdn-nofeature-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-baremetal-daily-fraser-trigger'
triggers:
- - timed: ''
+ - timed: '5 13 * * 6,7'
- trigger:
- name: 'fuel-os-odl-nofeature-ha-virtual-daily-fraser-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-onos-sfc-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-ha-baremetal-daily-fraser-trigger'
triggers:
- - timed: ''
+ - timed: '0 13 * * 6'
- trigger:
- name: 'fuel-os-onos-nofeature-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-fraser-trigger'
triggers:
- - timed: ''
+ - timed: '0 13 * * 7'
+# ----------------------------------------------
+# Triggers for job running on fuel-virtual against gambia branch
+# ----------------------------------------------
- trigger:
- name: 'fuel-os-ovn-nofeature-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-ha-virtual-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-ha-virtual-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-ovs-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-ovn-nofeature-ha-virtual-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-ha-virtual-daily-gambia-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-virtual-daily-gambia-trigger'
triggers:
- timed: ''
# NOHA Scenarios
- trigger:
- name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-fraser-trigger'
- triggers:
- - timed: '' # '0 13 * * *'
-- trigger:
- name: 'fuel-os-odl-nofeature-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '0 18 * * *'
+ - timed: '0 13 * * *'
- trigger:
- name: 'fuel-os-ovn-nofeature-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-nofeature-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '5 23 * * *'
+ - timed: '0 18 * * *'
- trigger:
- name: 'fuel-os-onos-sfc-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-sfc-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '30 20 * * *'
+ - timed: '0 4 * * *'
- trigger:
- name: 'fuel-os-onos-nofeature-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-bgpvpn-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '0 23 * * *'
+ - timed: '0 7 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-ovn-nofeature-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '30 6 * * *'
+ - timed: '0 23 * * *'
- trigger:
- name: 'fuel-os-nosdn-ovs-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-odl-ovs-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '0 9 * * *'
+ - timed: '0 2 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-ovs-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '0 16 * * *'
+ - timed: '0 9 * * *'
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-virtual-daily-fraser-trigger'
+ name: 'fuel-os-nosdn-vpp-noha-virtual-daily-gambia-trigger'
triggers:
- - timed: '' # '0 20 * * *'
+ - timed: ''
# ----------------------------------------------
# ZTE POD1 Triggers running against master branch
# ----------------------------------------------
@@ -684,31 +613,15 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-sfc-ha-zte-pod1-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-onos-nofeature-ha-zte-pod1-daily-master-trigger'
- 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: ''
-- trigger:
name: 'fuel-os-nosdn-ovs-ha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod1-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod1-daily-master-trigger'
+ name: 'fuel-os-nosdn-vpp-ha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
# NOHA Scenarios
@@ -721,11 +634,11 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-sfc-noha-zte-pod1-daily-master-trigger'
+ name: 'fuel-os-odl-sfc-noha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-onos-nofeature-noha-zte-pod1-daily-master-trigger'
+ name: 'fuel-os-odl-bgpvpn-noha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
- trigger:
@@ -733,7 +646,7 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm-noha-zte-pod1-daily-master-trigger'
+ name: 'fuel-os-odl-ovs-noha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
- trigger:
@@ -741,10 +654,6 @@
triggers:
- timed: ''
- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod1-daily-master-trigger'
- triggers:
- - timed: ''
-- trigger:
- name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-zte-pod1-daily-master-trigger'
+ name: 'fuel-os-nosdn-vpp-noha-zte-pod1-daily-master-trigger'
triggers:
- timed: ''
diff --git a/jjb/fuel/fuel-deploy.sh b/jjb/fuel/fuel-deploy.sh
index 35bf3dc01..8bc5fa268 100755
--- a/jjb/fuel/fuel-deploy.sh
+++ b/jjb/fuel/fuel-deploy.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# SPDX-license-identifier: Apache-2.0
##############################################################################
-# Copyright (c) 2017 Ericsson AB, Mirantis Inc., Enea Software AB and others.
+# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea Software AB 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
@@ -12,83 +12,43 @@ set -o pipefail
export TERM="vt220"
-if [[ "$BRANCH" =~ 'danube' ]]; then
- # source the file so we get OPNFV vars
- # shellcheck disable=SC1091
- source latest.properties
-
- # echo the info about artifact that is used during the deployment
- echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
-
- # for Danube deployments (no artifact for current master or newer branches)
- # checkout the commit that was used for building the downloaded artifact
- # to make sure the ISO and deployment mechanism uses same versions
- echo "Checking out ${OPNFV_GIT_SHA1}"
- git checkout "${OPNFV_GIT_SHA1}" --quiet
-
- # releng wants us to use nothing else but opnfv.iso for now. We comply.
- ISO_FILE_ARG="-i file://${WORKSPACE}/opnfv.iso"
-fi
-
-# shellcheck disable=SC2153
-if [[ "${JOB_NAME}" =~ 'verify' ]]; then
- # set simplest scenario for virtual deploys to run for verify
- DEPLOY_SCENARIO="os-nosdn-nofeature-noha"
-fi
-
# set deployment parameters
export TMPDIR=${HOME}/tmpdir
# shellcheck disable=SC2153
LAB_NAME=${NODE_NAME/-*}
# shellcheck disable=SC2153
POD_NAME=${NODE_NAME/*-}
-# Armband might override LAB_CONFIG_URL, all others use the default
-LAB_CONFIG_URL=${LAB_CONFIG_URL:-'ssh://jenkins-ericsson@gerrit.opnfv.org:29418/securedlab'}
-
-# Fuel requires deploy script to be ran with sudo, Armband does not
-SUDO='sudo -E'
-if [ "${PROJECT}" = 'fuel' ]; then
- # Fuel currently supports ericsson, intel, lf and zte labs
- if [[ ! "${LAB_NAME}" =~ (ericsson|intel|lf|zte) ]]; then
- echo "Unsupported/unidentified lab ${LAB_NAME}. Cannot continue!"
- exit 1
- fi
-else
- SUDO=
- # Armband currently supports arm, enea labs
- if [[ ! "${LAB_NAME}" =~ (arm|enea) ]]; then
- echo "Unsupported/unidentified lab ${LAB_NAME}. Cannot continue!"
- exit 1
- fi
+
+# define Docker tag for stable branches
+[[ "${BRANCH}" != master ]] && export MCP_DOCKER_TAG=${BRANCH##*/}
+
+# Fuel currently supports arm, enea, ericsson, intel, lf, unh and zte labs
+if [[ ! "${LAB_NAME}" =~ (arm|enea|ericsson|intel|lf|unh|zte) ]]; then
+ echo "Unsupported/unidentified lab ${LAB_NAME}. Cannot continue!"
+ exit 1
fi
echo "Using configuration for ${LAB_NAME}"
# create TMPDIR if it doesn't exist, change permissions
mkdir -p "${TMPDIR}"
-chmod a+x "${HOME}" "${TMPDIR}"
+sudo chmod a+x "${HOME}" "${TMPDIR}"
cd "${WORKSPACE}" || exit 1
-if [[ "$BRANCH" =~ (danube|euphrates) ]]; then
- if [[ "${LAB_CONFIG_URL}" =~ ^(git|ssh):// ]]; then
- echo "Cloning securedlab repo ${BRANCH}"
- LOCAL_CFG="${TMPDIR}/securedlab"
- rm -rf "${LOCAL_CFG}"
- git clone --quiet --branch "${BRANCH}" "${LAB_CONFIG_URL}" "${LOCAL_CFG}"
- LAB_CONFIG_ARG="-b file://${LOCAL_CFG}"
- BRIDGE_ARG="-B ${BRIDGE:-pxebr}"
- else
- LAB_CONFIG_ARG="-b ${LAB_CONFIG_URL}"
- fi
-fi
# log file name
FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz"
+# Limited scope for vPOD verify jobs running on armband-virtual
+[[ ! "${JOB_NAME}" =~ verify-deploy-virtual-arm64 ]] || EXTRA_ARGS='-e'
+
+# turn on DEBUG mode
+[[ ${CI_DEBUG,,} == true ]] && EXTRA_ARGS="-D ${EXTRA_ARGS:-}"
+
# construct the command
-DEPLOY_COMMAND="${SUDO} ${WORKSPACE}/ci/deploy.sh ${LAB_CONFIG_ARG:-} \
- -l ${LAB_NAME} -p ${POD_NAME} -s ${DEPLOY_SCENARIO} ${ISO_FILE_ARG:-} \
- -S ${TMPDIR} ${BRIDGE_ARG:-} \
+DEPLOY_COMMAND="${WORKSPACE}/ci/deploy.sh \
+ -l ${LAB_NAME} -p ${POD_NAME} -s ${DEPLOY_SCENARIO} \
+ -S ${TMPDIR} ${EXTRA_ARGS:-} \
-L ${WORKSPACE}/${FUEL_LOG_FILENAME}"
# log info to console
@@ -97,7 +57,6 @@ echo "--------------------------------------------------------"
echo "Scenario: ${DEPLOY_SCENARIO}"
echo "Lab: ${LAB_NAME}"
echo "POD: ${POD_NAME}"
-[[ "${BRANCH}" =~ 'danube' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
echo
echo "Starting the deployment using ${INSTALLER_TYPE}. This could take some time..."
echo "--------------------------------------------------------"
@@ -117,7 +76,7 @@ echo "Deployment is done!"
# upload logs for baremetal deployments
# work with virtual deployments is still going on, so skip that for now
-if [[ "${JOB_NAME}" =~ (baremetal-daily|baremetal-weekly) ]]; then
+if [[ "${JOB_NAME}" =~ baremetal-daily ]]; then
echo "Uploading deployment logs"
gsutil cp "${WORKSPACE}/${FUEL_LOG_FILENAME}" \
"gs://${GS_URL}/logs/${FUEL_LOG_FILENAME}" > /dev/null 2>&1
diff --git a/jjb/fuel/fuel-docker-jobs.yaml b/jjb/fuel/fuel-docker-jobs.yaml
new file mode 100644
index 000000000..c06848e56
--- /dev/null
+++ b/jjb/fuel/fuel-docker-jobs.yaml
@@ -0,0 +1,204 @@
+---
+##############################################
+# job configuration for docker build and push
+##############################################
+- project:
+
+ name: fuel-docker
+
+ project: fuel
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{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
+ 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
+
+ jobs:
+ - "fuel-docker-{stream}"
+ - "fuel-docker-build-{arch_tag}-{stream}"
+ - "fuel-docker-manifest-{stream}"
+
+########################
+# job templates
+########################
+- job-template:
+ name: 'fuel-docker-{stream}'
+
+ project-type: multijob
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - fuel-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: "*/25 * * * *"
+ - gerrit-trigger-tag-created:
+ project: '{project}'
+
+ builders:
+ - multijob:
+ name: 'build fuel images'
+ execution-type: PARALLEL
+ projects:
+ - name: 'fuel-docker-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'fuel-docker-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish fuel manifests'
+ condition: SUCCESSFUL
+ execution-type: PARALLEL
+ projects:
+ - name: 'fuel-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+
+ publishers:
+ - email-fuel-ptl
+
+- job-template:
+ name: 'fuel-docker-build-{arch_tag}-{stream}'
+ disabled: '{obj:disabled}'
+ parameters:
+ - fuel-job-parameters:
+ project: '{project}'
+ branch: '{branch}'
+ slave_label: '{slave_label}'
+ arch_tag: '{arch_tag}'
+ scm:
+ - git-scm
+ builders:
+ - shell: |
+ #!/bin/bash -ex
+ case "{stream}" in
+ "master")
+ tag="latest" ;;
+ *)
+ tag="{stream}" ;;
+ esac
+ ./ci/build.sh $tag
+
+- job-template:
+ name: 'fuel-docker-manifest-{stream}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: 'opnfv-build-ubuntu'
+ description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - 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 fuel-docker 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/fuel:saltmaster-reclass-ARCH-$tag \
+ --target $REPO/fuel:saltmaster-reclass-$tag
+ exit $?
+
+# parameter macro
+- parameter:
+ name: fuel-job-parameters
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: '{slave_label}'
+ description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - 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: PROJECT
+ default: "{project}"
+ description: "Project name used to enable job conditions"
+ - string:
+ name: REPO
+ default: "opnfv"
+ description: "Repository name for fuel-docker images"
diff --git a/jjb/fuel/fuel-download-artifact.sh b/jjb/fuel/fuel-download-artifact.sh
deleted file mode 100755
index 02ca10305..000000000
--- a/jjb/fuel/fuel-download-artifact.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 Ericsson AB 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
-##############################################################################
-set -o errexit
-set -o pipefail
-
-# disable Fuel ISO download for master branch
-[[ ! "$BRANCH" =~ (danube) ]] && exit 0
-
-# use proxy url to replace the normal URL, or googleusercontent.com will be blocked randomly
-[[ "$NODE_NAME" =~ (zte) ]] && GS_URL=${GS_BASE_PROXY%%/*}/$GS_URL
-
-# get the latest.properties file in order to get info regarding latest artifact
-echo "Downloading http://$GS_URL/latest.properties"
-curl -L -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
-
-# check if we got the file
-[[ -f $WORKSPACE/latest.properties ]] || exit 1
-
-# source the file so we get artifact metadata
-source $WORKSPACE/latest.properties
-
-# echo the info about artifact that is used during the deployment
-OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/}
-echo "Using $OPNFV_ARTIFACT for deployment"
-
-# check if we already have the ISO to avoid redownload
-ISOSTORE="/iso_mount/opnfv_ci/${BRANCH##*/}"
-if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
- echo "ISO exists locally. Skipping the download and using the file from ISO store"
- ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
- echo "--------------------------------------------------------"
- echo
- ls -al $WORKSPACE/opnfv.iso
- echo
- echo "--------------------------------------------------------"
- echo "Done!"
- exit 0
-fi
-
-[[ "$NODE_NAME" =~ (zte) ]] && OPNFV_ARTIFACT_URL=${GS_BASE_PROXY%%/*}/$OPNFV_ARTIFACT_URL
-
-# log info to console
-echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
-echo "This could take some time..."
-echo "--------------------------------------------------------"
-echo
-
-# download the file
-curl -L -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
-
-# list the file
-ls -al $WORKSPACE/opnfv.iso
-
-echo
-echo "--------------------------------------------------------"
-echo "Done!"
diff --git a/jjb/fuel/fuel-lab-reconfig.sh b/jjb/fuel/fuel-lab-reconfig.sh
deleted file mode 100755
index 4b42a396e..000000000
--- a/jjb/fuel/fuel-lab-reconfig.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 Ericsson AB 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
-##############################################################################
-set -o errexit
-set -o nounset
-set -o pipefail
-
-# check to see if ucs login info file exists
-if [ -e ~/.ssh/ucs_creds ];then
- source ~/.ssh/ucs_creds
-else
- echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
- exit 1
-fi
-
-# clone releng
-echo "Cloning releng repo..."
-if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
- echo "Unable to clone releng repo...Exiting"
- exit 1
-fi
-
-# log info to console
-echo "Starting the lab reconfiguration for $INSTALLER_TYPE..."
-echo "--------------------------------------------------------"
-echo
-
-# create venv
-$WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
-
-# disable nounset because 'activate' script contains unbound variable(s)
-set +o nounset
-# enter venv
-source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
-# set nounset back again
-set -o nounset
-
-# verify we are in venv
-if [[ ! $(which python | grep venv) ]]; then
- echo "Unable to activate venv...Exiting"
- exit 1
-fi
-
-python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/fuel.yaml
-
-# while undergoing reboot
-sleep 30
-
-# check to see if slave is back up
-ping_counter=0
-ping_flag=0
-while [ "$ping_counter" -lt 20 ]; do
- if [[ $(ping -c 5 172.30.10.72) ]]; then
- ping_flag=1
- break
- fi
- ((ping_counter++))
- sleep 10
-done
-
-if [ "$ping_flag" -eq 1 ]; then
- echo "Slave is pingable, now wait 180 seconds for services to start"
- sleep 180
-else
- echo "Slave did not come back up after reboot: please check lf-pod2"
- exit 1
-fi
-
-set +o nounset
-deactivate
-
-echo
-echo "--------------------------------------------------------"
-echo "Done!"
diff --git a/jjb/fuel/fuel-project-jobs.yaml b/jjb/fuel/fuel-project-jobs.yaml
deleted file mode 100644
index fc49f6348..000000000
--- a/jjb/fuel/fuel-project-jobs.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
----
-########################
-# Job configuration for fuel
-########################
-- project:
- name: fuel-project-jobs
-
- project: 'fuel'
-
- installer: 'fuel'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - fraser:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
- jobs:
- - 'fuel-deploy-generic-daily-{stream}'
-
-########################
-# job templates
-########################
-- job-template:
- name: 'fuel-deploy-generic-daily-{stream}'
-
- concurrent: true
-
- disabled: '{obj:disabled}'
-
- properties:
- - logrotate-default
- - throttle:
- enabled: true
- max-per-node: 1
- option: 'project'
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'fuel-os-.*?-daily-.*'
- - 'fuel-deploy-generic-daily-.*'
- block-level: 'NODE'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - '{installer}-defaults':
- gs-pathname: '{gs-pathname}'
- - string:
- name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
- description: 'Git URL to use on this Jenkins Slave'
- - string:
- name: DEPLOY_SCENARIO
- default: 'os-odl-nofeature-ha'
- - node:
- name: SLAVE_NAME
- description: 'Slave name on Jenkins'
- allowed-slaves:
- - ericsson-pod2
- - lf-pod2
- - ericsson-pod1
- default-slaves:
- - ericsson-pod2
-
- scm:
- - git-scm
-
- wrappers:
- - build-name:
- name: '$BUILD_NUMBER - POD: $NODE_NAME Scenario: $DEPLOY_SCENARIO'
-
- builders:
- - shell:
- !include-raw-escape: ./fuel-deploy.sh
diff --git a/jjb/fuel/fuel-rtd-jobs.yaml b/jjb/fuel/fuel-rtd-jobs.yaml
new file mode 100644
index 000000000..d40ef984f
--- /dev/null
+++ b/jjb/fuel/fuel-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: fuel-rtd
+ project: fuel
+ project-name: fuel
+
+ project-pattern: 'fuel'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-fuel/47205/'
+ rtd-token: '38f40bf6c08fd4bccb930871bc29b08404cf98b0'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/fuel/fuel-set-scenario.sh b/jjb/fuel/fuel-set-scenario.sh
new file mode 100755
index 000000000..4c8ed7334
--- /dev/null
+++ b/jjb/fuel/fuel-set-scenario.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 SUSE, Mirantis Inc., Enea Software AB 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
+##############################################################################
+set -o pipefail
+set -x
+
+#----------------------------------------------------------------------
+# This script is used by CI and executed by Jenkins jobs.
+# You are not supposed to use this script manually if you don't know
+# what you are doing.
+#----------------------------------------------------------------------
+
+# This function allows developers to specify the impacted scenario by
+# requesting a RE-check via a gerrit change comment under a specific format.
+#
+# Patterns to be searched in change comment:
+# recheck: <scenario-name>
+# reverify: <scenario-name>
+# Examples:
+# recheck: os-odl-ovs-noha
+# reverify: os-nosdn-nofeature-ha
+
+function set_scenario() {
+ # process gerrit event comment text (if present)
+ DEPLOY_SCENARIO=$(echo "${GERRIT_EVENT_COMMENT_TEXT}" | \
+ grep -Po '(?!:(recheck|reverify):\s*)([-\w]+ha)')
+ if [ -z "${DEPLOY_SCENARIO}" ]; then
+ if [[ "$JOB_NAME" =~ baremetal ]]; then
+ DEPLOY_SCENARIO='os-nosdn-nofeature-ha'
+ else
+ DEPLOY_SCENARIO='os-nosdn-nofeature-noha'
+ fi
+ fi
+ # save the scenario names into java properties file
+ # so they can be injected to downstream jobs via envInject
+ echo "Recording the scenario '${DEPLOY_SCENARIO}' for downstream jobs"
+ echo "DEPLOY_SCENARIO=${DEPLOY_SCENARIO}" > "$WORK_DIRECTORY/scenario.properties"
+}
+
+# ensure GERRIT vars are set
+[ -n "${GERRIT_CHANGE_NUMBER}" ] || exit 1
+GERRIT_EVENT_COMMENT_TEXT="${GERRIT_EVENT_COMMENT_TEXT:-''}"
+
+# this directory is where the temporary properties file will be stored
+WORK_DIRECTORY=/tmp/$GERRIT_CHANGE_NUMBER
+/bin/rm -rf "$WORK_DIRECTORY" && mkdir -p "$WORK_DIRECTORY"
+
+set_scenario
diff --git a/jjb/fuel/fuel-verify-jobs.yaml b/jjb/fuel/fuel-verify-jobs.yaml
index bef6a5094..5695ef8a0 100644
--- a/jjb/fuel/fuel-verify-jobs.yaml
+++ b/jjb/fuel/fuel-verify-jobs.yaml
@@ -13,27 +13,43 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser:
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
#####################################
+ # cluster architectures
+ #####################################
+ arch_tag:
+ - 'amd64':
+ slave-label: 'fuel'
+ functest-suite-label: 'fuel'
+ - 'arm64':
+ slave-label: 'armband'
+ functest-suite-label: 'fuel-armband'
+ #####################################
+ # cluster types
+ #####################################
+ type:
+ - 'virtual'
+ - 'baremetal'
+ #####################################
# patch verification phases
#####################################
phase:
- - 'deploy-virtual':
- slave-label: 'fuel-virtual'
+ - 'docker-build'
+ - 'deploy'
#####################################
# jobs
#####################################
jobs:
- - 'fuel-verify-{stream}'
- - 'fuel-verify-{phase}-{stream}'
+ - 'fuel-verify-{type}-{arch_tag}-{stream}'
+ - 'fuel-verify-{phase}-{type}-{arch_tag}-{stream}'
#####################################
# job templates
#####################################
- job-template:
- name: 'fuel-verify-{stream}'
+ name: 'fuel-verify-{type}-{arch_tag}-{stream}'
project-type: multijob
@@ -50,9 +66,9 @@
- build-blocker:
use-build-blocker: true
blocking-jobs:
- - 'fuel-os-.*?-virtual-daily-.*'
+ - 'fuel-os-.*?-daily-.*'
- 'fuel-verify-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
@@ -64,99 +80,79 @@
fail: true
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: 'ci/**'
- - compare-type: ANT
- pattern: 'mcp/**'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**'
- readable-message: true
+ - 'fuel-verify-{type}-{arch_tag}-trigger':
+ project: '{project}'
+ branch: '{branch}'
parameters:
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'fuel-virtual-defaults':
+ - '{slave-label}-{type}-defaults':
installer: '{installer}'
- '{installer}-defaults':
gs-pathname: '{gs-pathname}'
- - string:
- name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-ha'
builders:
+ - 'fuel-verify-set-scenario-macro'
+ - inject:
+ properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/scenario.properties"
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- multijob:
- name: deploy-virtual
+ name: docker-build
condition: SUCCESSFUL
projects:
- - name: 'fuel-verify-deploy-virtual-{stream}'
+ - name: 'fuel-verify-docker-build-{type}-{arch_tag}-{stream}'
current-parameters: false
predefined-parameters: |
BRANCH=$BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
- node-parameters: false
+ node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
- multijob:
- name: smoke-test
+ name: deploy
condition: SUCCESSFUL
projects:
- # Use Functest job definition from jjb/functest/functest-daily-jobs
- - name: 'functest-fuel-virtual-suite-{stream}'
+ - name: 'fuel-verify-deploy-{type}-{arch_tag}-{stream}'
current-parameters: false
predefined-parameters: |
- FUNCTEST_MODE=tier
- FUNCTEST_TIER=healthcheck
+ MCP_DOCKER_TAG={arch_tag}-verify
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
BRANCH=$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: NEVER
+ kill-phase-on: FAILURE
abort-all-job: true
- - name: 'functest-fuel-virtual-suite-{stream}'
+
+ - multijob:
+ name: smoke-test
+ condition: SUCCESSFUL
+ projects:
+ # Use Functest job definition from jjb/functest/functest-daily-jobs
+ - name: 'functest-{functest-suite-label}-{type}-suite-{stream}'
current-parameters: false
predefined-parameters: |
- FUNCTEST_MODE=testcase
- FUNCTEST_SUITE_NAME=vping_ssh
+ FUNCTEST_MODE=tier
+ FUNCTEST_TIER=healthcheck
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
BRANCH=$BRANCH
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
node-parameters: true
+ enable-condition: "def m = ! ('$NODE_LABELS' =~ /armband-virtual/)"
kill-phase-on: NEVER
abort-all-job: true
- job-template:
- name: 'fuel-verify-{phase}-{stream}'
+ name: 'fuel-verify-{phase}-{type}-{arch_tag}-{stream}'
disabled: '{obj:disabled}'
@@ -172,8 +168,9 @@
- build-blocker:
use-build-blocker: true
blocking-jobs:
+ - 'fuel-verify-docker-build-.*'
- 'fuel-verify-deploy-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
@@ -188,8 +185,7 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - '{slave-label}-defaults'
- - 'fuel-virtual-defaults':
+ - '{slave-label}-{type}-defaults':
installer: '{installer}'
- '{installer}-defaults':
gs-pathname: '{gs-pathname}'
@@ -198,11 +194,77 @@
- description-setter:
description: "Built on $NODE_NAME"
- '{project}-verify-{phase}-macro'
+########################
+# trigger macros
+########################
+- trigger:
+ name: 'fuel-verify-virtual-amd64-trigger'
+ triggers:
+ - gerrit: &fuel_verify_virtual_amd64_trigger
+ 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|reverify)(\s|$|:\s*[-\w]+-noha)'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: '{project}'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: 'ci/**'
+ - compare-type: ANT
+ pattern: 'mcp/**'
+ disable-strict-forbidden-file-verification: 'true'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**'
+ readable-message: true
+- trigger:
+ name: 'fuel-verify-virtual-arm64-trigger'
+ triggers:
+ - gerrit:
+ <<: *fuel_verify_virtual_amd64_trigger
+- trigger:
+ name: 'fuel-verify-baremetal-amd64-trigger'
+ triggers:
+ - gerrit: &fuel_verify_baremetal_amd64_trigger
+ <<: *fuel_verify_virtual_amd64_trigger
+ trigger-on:
+ - comment-added-contains-event:
+ comment-contains-value: '(recheck|reverify):\s*[-\w]+-ha'
+- trigger:
+ name: 'fuel-verify-baremetal-arm64-trigger'
+ triggers:
+ - gerrit:
+ <<: *fuel_verify_baremetal_amd64_trigger
+ skip-vote:
+ successful: true
+ failed: true
+ unstable: true
+ notbuilt: true
#####################################
# builder macros
#####################################
- builder:
- name: 'fuel-verify-deploy-virtual-macro'
+ name: 'fuel-verify-set-scenario-macro'
+ builders:
+ - shell:
+ !include-raw: ./fuel-set-scenario.sh
+- builder:
+ name: 'fuel-verify-deploy-macro'
builders:
- shell:
!include-raw: ./fuel-deploy.sh
+- builder:
+ name: 'fuel-verify-docker-build-macro'
+ builders:
+ - shell: |
+ #!/bin/bash -ex
+ sudo -E ./ci/build.sh 'verify' ''
diff --git a/jjb/fuel/fuel-weekly-jobs.yaml b/jjb/fuel/fuel-weekly-jobs.yaml
deleted file mode 100644
index aca625d2b..000000000
--- a/jjb/fuel/fuel-weekly-jobs.yaml
+++ /dev/null
@@ -1,191 +0,0 @@
----
-# jenkins job templates for Fuel
-- project:
-
- name: fuel-weekly
-
- project: fuel
-
- installer: fuel
-
- # -------------------------------
- # BRANCH ANCHORS
- # -------------------------------
- master: &master
- stream: master
- branch: '{stream}'
- disabled: false
- gs-pathname: ''
- fraser: &fraser
- stream: fraser
- branch: 'stable/{stream}'
- disabled: false
- gs-pathname: '/{stream}'
- # -------------------------------
- # POD, INSTALLER, AND BRANCH MAPPING
- # -------------------------------
- # CI PODs
- # -------------------------------
- pod:
- - baremetal:
- slave-label: fuel-baremetal
- <<: *master
- - virtual:
- slave-label: fuel-virtual
- <<: *master
- - baremetal:
- slave-label: fuel-baremetal
- <<: *fraser
- - virtual:
- slave-label: fuel-virtual
- <<: *fraser
- # -------------------------------
- # scenarios
- # -------------------------------
- scenario:
- # HA scenarios
- - 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'weekly-trigger-disabled'
-
- jobs:
- - 'fuel-{scenario}-{pod}-weekly-{stream}'
- - 'fuel-deploy-{pod}-weekly-{stream}'
-
-########################
-# job templates
-########################
-- job-template:
- name: 'fuel-{scenario}-{pod}-weekly-{stream}'
-
- disabled: '{obj:disabled}'
-
- concurrent: false
-
- properties:
- - logrotate-default
- - throttle:
- enabled: true
- max-total: 4
- max-per-node: 1
- option: 'project'
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'fuel-os-.*?-{pod}-daily-.*'
- - 'fuel-os-.*?-{pod}-weekly-.*'
- - 'fuel-verify-.*'
- block-level: 'NODE'
-
- wrappers:
- - build-name:
- name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
- triggers:
- - '{auto-trigger-name}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - '{installer}-defaults':
- gs-pathname: '{gs-pathname}'
- - '{slave-label}-defaults':
- installer: '{installer}'
- - string:
- name: DEPLOY_SCENARIO
- default: '{scenario}'
-
- builders:
- - description-setter:
- description: "Built on $NODE_NAME"
- - trigger-builds:
- - project: 'fuel-deploy-{pod}-weekly-{stream}'
- current-parameters: false
- predefined-parameters:
- DEPLOY_SCENARIO={scenario}
- same-node: true
- block: true
- - trigger-builds:
- - project: 'functest-fuel-{pod}-weekly-{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'
-
- publishers:
- - email:
- recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
- - email-jenkins-admins-on-failure
-
-- job-template:
- name: 'fuel-deploy-{pod}-weekly-{stream}'
-
- disabled: '{obj:disabled}'
-
- concurrent: true
-
- properties:
- - logrotate-default
- - throttle:
- enabled: true
- max-total: 4
- max-per-node: 1
- option: 'project'
- - build-blocker:
- use-build-blocker: true
- blocking-jobs:
- - 'fuel-deploy-{pod}-daily-.*'
- - 'fuel-deploy-generic-daily-.*'
- - 'fuel-deploy-{pod}-weekly-.*'
- - 'fuel-deploy-generic-weekly-.*'
- block-level: 'NODE'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - '{installer}-defaults':
- gs-pathname: '{gs-pathname}'
- - '{slave-label}-defaults':
- installer: '{installer}'
- - testapi-parameter
- - string:
- name: DEPLOY_SCENARIO
- default: 'os-odl-nofeature-ha'
-
- scm:
- - git-scm
-
- wrappers:
- - build-name:
- name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
- builders:
- - description-setter:
- description: "Built on $NODE_NAME"
- - track-begin-timestamp
- - shell:
- !include-raw-escape: ./fuel-deploy.sh
-
- publishers:
- - email:
- recipients: peter.barabas@ericsson.com fzhadaev@mirantis.com
- - email-jenkins-admins-on-failure
- - report-provision-result
-
-########################
-# trigger macros
-########################
-# ----------------------------------------------
-# Triggers for job running on fuel-baremetal against master branch
-# ----------------------------------------------
-# HA Scenarios
-- trigger:
- name: 'fuel-os-nosdn-nofeature-ha-baremetal-weekly-master-trigger'
- triggers:
- - timed: ''
diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh
index 1df9a554c..42bf60b0a 100755
--- a/jjb/functest/functest-alpine.sh
+++ b/jjb/functest/functest-alpine.sh
@@ -4,15 +4,17 @@ set -e
set +u
set +o pipefail
+REPO=${REPO:-opnfv}
CI_LOOP=${CI_LOOP:-daily}
TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results
ENERGY_RECORDER_API_URL=http://energy.opnfv.fr/resources
+DOCKER_TAG=${DOCKER_TAG:-$([[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/})}
check_os_deployment() {
- FUNCTEST_IMAGE=opnfv/functest-healthcheck:${DOCKER_TAG}
+ FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG}
echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
docker pull ${FUNCTEST_IMAGE}>/dev/null
- cmd="docker run --rm --privileged=true ${volumes} ${FUNCTEST_IMAGE} check_deployment"
+ cmd="docker run --rm ${volumes} ${FUNCTEST_IMAGE} check_deployment"
echo "Checking deployment, CMD: ${cmd}"
eval ${cmd}
ret_value=$?
@@ -25,19 +27,15 @@ check_os_deployment() {
}
-
run_tiers() {
tiers=$1
cmd_opt="run_tests -r -t all"
[[ $BUILD_TAG =~ "suite" ]] && cmd_opt="run_tests -t all"
- ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
- echo 0 > ${ret_val_file}
-
for tier in ${tiers[@]}; do
- FUNCTEST_IMAGE=opnfv/functest-${tier}:${DOCKER_TAG}
+ FUNCTEST_IMAGE=${REPO}/functest-${tier}:${DOCKER_TAG}
echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
docker pull ${FUNCTEST_IMAGE}>/dev/null
- cmd="docker run --rm --privileged=true ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
+ cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
echo "Running Functest tier '${tier}'. CMD: ${cmd}"
eval ${cmd}
ret_value=$?
@@ -45,6 +43,7 @@ run_tiers() {
echo ${ret_value} > ${ret_val_file}
if [ ${tier} == 'healthcheck' ]; then
echo "Healthcheck tier failed. Exiting Functest..."
+ skip_tests=1
break
fi
fi
@@ -54,22 +53,20 @@ run_tiers() {
run_test() {
test_name=$1
cmd_opt="run_tests -t ${test_name}"
- ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
- echo 0 > ${ret_val_file}
# Determine which Functest image should be used for the test case
case ${test_name} in
- connection_check|api_check|snaps_health_check)
- FUNCTEST_IMAGE=opnfv/functest-healthcheck:${DOCKER_TAG} ;;
- vping_ssh|vping_userdata|tempest_smoke_serial|rally_sanity|refstack_defcore|odl|odl_netvirt|snaps_smoke)
- FUNCTEST_IMAGE=opnfv/functest-smoke:${DOCKER_TAG} ;;
- tempest_full_parallel|rally_full)
- FUNCTEST_IMAGE=opnfv/functest-components:${DOCKER_TAG} ;;
- cloudify_ims|orchestra_openims|orchestra_clearwaterims|vyos_vrouter)
- FUNCTEST_IMAGE=opnfv/functest-vnf:${DOCKER_TAG} ;;
- promise|doctor-notification|bgpvpn|functest-odl-sfc|domino-multinode|barometercollectd|fds)
- FUNCTEST_IMAGE=opnfv/functest-features:${DOCKER_TAG} ;;
- parser-basics)
- FUNCTEST_IMAGE=opnfv/functest-parser:${DOCKER_TAG} ;;
+ connection_check|tenantnetwork1|tenantnetwork2|vmready1|vmready2|singlevm1|singlevm2|vping_ssh|vping_userdata|cinder_test|odl|api_check|snaps_health_check)
+ FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG} ;;
+ tempest_smoke_serial|tempest_smoke|neutron-tempest-plugin-api|rally_sanity|refstack_defcore|patrole|snaps_smoke|neutron_trunk|networking-bgpvpn|networking-sfc|barbican)
+ FUNCTEST_IMAGE=${REPO}/functest-smoke:${DOCKER_TAG} ;;
+ shaker|vmtp)
+ FUNCTEST_IMAGE=${REPO}/functest-benchmarking:${DOCKER_TAG} ;;
+ tempest_full_parallel|tempest_full|tempest_scenario|rally_full)
+ FUNCTEST_IMAGE=${REPO}/functest-components:${DOCKER_TAG} ;;
+ cloudify|cloudify_ims|heat_ims|vyos_vrouter|juju_epc)
+ FUNCTEST_IMAGE=${REPO}/functest-vnf:${DOCKER_TAG} ;;
+ doctor-notification|bgpvpn|functest-odl-sfc|barometercollectd|fds|vgpu|stor4nfv_os)
+ FUNCTEST_IMAGE=${REPO}/functest-features:${DOCKER_TAG} ;;
*)
echo "Unkown test case $test_name"
exit 1
@@ -77,7 +74,7 @@ run_test() {
esac
echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
docker pull ${FUNCTEST_IMAGE}>/dev/null
- cmd="docker run --rm --privileged=true ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
+ cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
echo "Running Functest test case '${test_name}'. CMD: ${cmd}"
eval ${cmd}
ret_value=$?
@@ -92,7 +89,6 @@ FUNCTEST_DIR=/home/opnfv/functest
DEPLOY_TYPE=baremetal
[[ $BUILD_TAG =~ "virtual" ]] && DEPLOY_TYPE=virt
HOST_ARCH=$(uname -m)
-DOCKER_TAG=`[[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/}`
# Prepare OpenStack credentials volume
rc_file=${HOME}/opnfv-openrc.sh
@@ -108,11 +104,6 @@ fi
rc_file_vol="-v ${rc_file}:${FUNCTEST_DIR}/conf/env_file"
-# 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
-
echo "Functest: Start Docker and prepare environment"
echo "Functest: Download images that will be used by test cases"
@@ -141,13 +132,17 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-
if [ "${INSTALLER_TYPE}" == 'fuel' ]; then
COMPUTE_ARCH=$(ssh -l ubuntu ${INSTALLER_IP} -i ${SSH_KEY} ${ssh_options} \
"sudo salt 'cmp*' grains.get cpuarch --out yaml | awk '{print \$2; exit}'")
+ IMAGE_PROPERTIES="hw_disk_bus:scsi,hw_scsi_model:virtio-scsi"
envs="${envs} -e POD_ARCH=${COMPUTE_ARCH}"
fi
+if [[ ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_SCENARIO} == 'os-nosdn-nofeature-noha' ]]; then
+ libvirt_vol="-v ${ssh_key}:${FUNCTEST_DIR}/conf/libvirt_key"
+ envs="${envs} -e LIBVIRT_USER=ubuntu -e LIBVIRT_KEY_PATH=${FUNCTEST_DIR}/conf/libvirt_key"
+fi
if [[ ${INSTALLER_TYPE} == 'compass' && ${DEPLOY_SCENARIO} =~ 'sfc' ]]; then
ssh_key="/tmp/id_rsa"
@@ -159,8 +154,108 @@ if [[ ${INSTALLER_TYPE} == 'compass' && ${DEPLOY_SCENARIO} =~ 'sfc' ]]; then
envs="${envs} -e EXTERNAL_NETWORK=${EXTERNAL_NETWORK}"
fi
+if [[ ${INSTALLER_TYPE} == 'compass' ]] || [[ ${DEPLOY_SCENARIO} == *"odl"* ]]; then
+ envs="${envs} -e SDN_CONTROLLER_RESTCONFPORT=8080"
+fi
+
+if [[ ${DEPLOY_SCENARIO} == *"ovs"* ]] || [[ ${DEPLOY_SCENARIO} == *"fdio"* ]]; then
+ if [[ -n ${IMAGE_PROPERTIES} ]]; then
+ IMAGE_PROPERTIES="${IMAGE_PROPERTIES},hw_mem_page_size:large"
+ else
+ IMAGE_PROPERTIES="hw_mem_page_size:large"
+ fi
+ FLAVOR_EXTRA_SPECS="hw:mem_page_size:large"
+fi
+
+if [[ -n ${IMAGE_PROPERTIES} ]] || [[ -n ${FLAVOR_EXTRA_SPECS} ]]; then
+ envs="${envs} -e IMAGE_PROPERTIES=${IMAGE_PROPERTIES} -e FLAVOR_EXTRA_SPECS=${FLAVOR_EXTRA_SPECS}"
+fi
+
+tempest_conf_yaml=$(mktemp)
+case ${INSTALLER_TYPE} in
+apex)
+ cat << EOF > "${tempest_conf_yaml}"
+---
+compute-feature-enabled:
+ shelve: false
+ vnc_console: true
+identity-feature-enabled:
+ api_v2: false
+ api_v2_admin: false
+image-feature-enabled:
+ api_v2: true
+ api_v1: false
+volume:
+ storage_protocol: ceph
+volume-feature-enabled:
+ backup: false
+EOF
+ ;;
+compass)
+ cat << EOF > "${tempest_conf_yaml}"
+---
+compute-feature-enabled:
+ shelve: false
+ vnc_console: false
+ spice_console: true
+identity-feature-enabled:
+ api_v2: false
+ api_v2_admin: false
+image-feature-enabled:
+ api_v2: true
+ api_v1: false
+volume:
+ storage_protocol: ceph
+volume-feature-enabled:
+ backup: false
+EOF
+ ;;
+fuel)
+ cat << EOF > "${tempest_conf_yaml}"
+---
+compute-feature-enabled:
+ shelve: false
+ vnc_console: false
+ spice_console: true
+identity-feature-enabled:
+ api_v2: false
+ api_v2_admin: false
+image-feature-enabled:
+ api_v2: true
+ api_v1: false
+volume:
+ storage_protocol: iSCSI
+volume-feature-enabled:
+ backup: false
+EOF
+ ;;
+*)
+ cat << EOF > "${tempest_conf_yaml}"
+---
+compute-feature-enabled:
+ shelve: false
+ vnc_console: false
+identity-feature-enabled:
+ api_v2: false
+ api_v2_admin: false
+image-feature-enabled:
+ api_v2: true
+ api_v1: false
+volume:
+ storage_protocol: iSCSI
+volume-feature-enabled:
+ backup: false
+EOF
+ ;;
+esac
+echo "tempest_conf.yaml:" && cat "${tempest_conf_yaml}"
-volumes="${images_vol} ${results_vol} ${sshkey_vol} ${userconfig_vol} ${rc_file_vol} ${cacert_file_vol}"
+volumes="${images_vol} ${results_vol} ${sshkey_vol} ${libvirt_vol} \
+ ${userconfig_vol} ${rc_file_vol} ${cacert_file_vol} \
+ -v ${tempest_conf_yaml}:/usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml"
+
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
+echo 0 > ${ret_val_file}
set +e
@@ -172,10 +267,27 @@ elif [ ${FUNCTEST_MODE} == 'tier' ]; then
tiers=(${FUNCTEST_TIER})
run_tiers ${tiers}
else
+ tests=(tempest_full tempest_scenario)
+ skip_tests=0
if [ ${DEPLOY_TYPE} == 'baremetal' ] && [ "${HOST_ARCH}" != "aarch64" ]; then
- tiers=(healthcheck smoke features vnf parser)
+ if [[ ${BRANCH} == "stable/fraser" ]]; then
+ tiers=(healthcheck smoke features vnf parser)
+ tests=(tempest_full_parallel)
+ else
+ tiers=(healthcheck smoke benchmarking features vnf)
+ fi
else
- tiers=(healthcheck smoke features parser)
+ if [[ ${BRANCH} == "stable/fraser" ]]; then
+ tiers=(healthcheck smoke features parser)
+ tests=(tempest_full_parallel)
+ else
+ tiers=(healthcheck smoke benchmarking features)
+ fi
fi
run_tiers ${tiers}
+ if [ ${skip_tests} -eq 0 ]; then
+ for test in "${tests[@]}"; do
+ run_test "$test"
+ done
+ fi
fi
diff --git a/jjb/functest/functest-daily-jobs.yaml b/jjb/functest/functest-daily-jobs.yaml
index ae226b665..34aee8a9d 100644
--- a/jjb/functest/functest-daily-jobs.yaml
+++ b/jjb/functest/functest-daily-jobs.yaml
@@ -18,6 +18,14 @@
stream: fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ hunter: &hunter
+ stream: hunter
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
# -------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
# -------------------------------
@@ -39,6 +47,14 @@
- baremetal:
slave-label: fuel-baremetal
installer: fuel
+ <<: *gambia
+ - virtual:
+ slave-label: fuel-virtual
+ installer: fuel
+ <<: *gambia
+ - baremetal:
+ slave-label: fuel-baremetal
+ installer: fuel
<<: *fraser
- virtual:
slave-label: fuel-virtual
@@ -70,6 +86,10 @@
slave-label: compass-virtual
installer: compass
<<: *master
+ - arm-virtual:
+ slave-label: compass-arm-virtual
+ installer: compass
+ <<: *master
- baremetal:
slave-label: compass-baremetal
installer: compass
@@ -78,6 +98,22 @@
slave-label: compass-virtual
installer: compass
<<: *fraser
+ - arm-virtual:
+ slave-label: compass-arm-virtual
+ installer: compass
+ <<: *fraser
+ - baremetal:
+ slave-label: compass-baremetal
+ installer: compass
+ <<: *gambia
+ - virtual:
+ slave-label: compass-virtual
+ installer: compass
+ <<: *gambia
+ - arm-virtual:
+ slave-label: compass-arm-virtual
+ installer: compass
+ <<: *gambia
# apex CI PODs
- virtual:
slave-label: apex-virtual-master
@@ -88,6 +124,14 @@
installer: apex
<<: *master
- virtual:
+ slave-label: apex-virtual-master
+ installer: apex
+ <<: *gambia
+ - baremetal:
+ slave-label: apex-baremetal-master
+ installer: apex
+ <<: *gambia
+ - virtual:
slave-label: apex-virtual-fraser
installer: apex
<<: *fraser
@@ -107,6 +151,14 @@
- armband-baremetal:
slave-label: armband-baremetal
installer: fuel
+ <<: *gambia
+ - armband-virtual:
+ slave-label: armband-virtual
+ installer: fuel
+ <<: *gambia
+ - armband-baremetal:
+ slave-label: armband-baremetal
+ installer: fuel
<<: *fraser
- armband-virtual:
slave-label: armband-virtual
@@ -201,9 +253,7 @@
- 'suite':
job-timeout: 60
- 'daily':
- job-timeout: 360
- - 'arm-daily':
- job-timeout: 480
+ job-timeout: 600
jobs:
- 'functest-{installer}-{pod}-{testsuite}-{stream}'
@@ -221,6 +271,7 @@
- throttle:
enabled: true
max-per-node: 1
+ max-total: 10
option: 'project'
wrappers:
@@ -239,7 +290,10 @@
- 'functest-{testsuite}-parameter'
- string:
name: DEPLOY_SCENARIO
- default: 'os-odl_l2-nofeature-ha'
+ default: 'os-nosdn-nofeature-noha'
+ - string:
+ name: DOCKER_TAG
+ default: ''
- string:
name: CLEAN_DOCKER_IMAGES
default: 'false'
@@ -268,14 +322,6 @@
description: "Daily suite name to run"
- parameter:
- name: functest-arm-daily-parameter
- parameters:
- - string:
- name: FUNCTEST_MODE
- default: 'arm-daily'
- description: "Daily suite name (Aarch64) to run"
-
-- parameter:
name: functest-suite-parameter
parameters:
- choice:
@@ -291,34 +337,40 @@
- 'connection_check'
- 'api_check'
- 'snaps_health_check'
- - 'vping_userdata'
- 'vping_ssh'
- - 'tempest_smoke_serial'
+ - 'vping_userdata'
+ - 'cinder_test'
+ - 'tempest_smoke'
- 'rally_sanity'
+ - 'refstack_defcore'
+ - 'patrole'
- 'odl'
- - 'odl_netvirt'
- 'snaps_smoke'
- - 'refstack_defcore'
- - 'promise'
- - 'doctor'
+ - 'shaker'
+ - 'vmtp'
+ - 'neutron_trunk'
+ - 'doctor-notification'
- 'bgpvpn'
- - 'parser'
- - 'security_scan'
- - 'tempest_full_parallel'
+ - 'functest-odl-sfc'
+ - 'barometercollectd'
+ - 'fds'
+ - 'tempest_full'
- 'rally_full'
- 'cloudify_ims'
- - 'cloudify_vrouter'
- - 'orchestra_openims'
- - 'orchestra_clearwaterims'
+ - 'vyos_vrouter'
+ - 'juju_epc'
+ - 'parser'
default: 'connection_check'
- choice:
name: FUNCTEST_TIER
choices:
- 'healthcheck'
- 'smoke'
+ - 'benchmarking'
- 'features'
- 'components'
- 'vnf'
+ - 'parser'
default: 'healthcheck'
- string:
name: TESTCASE_OPTIONS
@@ -348,6 +400,10 @@
name: RC_FILE_PATH
default: ''
description: "Path to the OS credentials file if given"
+ - string:
+ name: REPO
+ default: "opnfv"
+ description: "Repository name for functest images"
########################
# trigger macros
########################
@@ -368,14 +424,6 @@
- 'functest-exit'
- builder:
- name: functest-arm-daily-builder
- builders:
- - 'functest-cleanup'
- - 'functest-arm-daily'
- - 'functest-store-results'
- - 'functest-exit'
-
-- builder:
name: functest-suite-builder
builders:
- 'functest-cleanup'
@@ -409,17 +457,6 @@
# yamllint enable rule:indentation
- builder:
- name: functest-arm-daily
- builders:
- # yamllint disable rule:indentation
- - shell:
- !include-raw:
- - ./functest-env-presetup.sh
- - ../../utils/fetch_os_creds.sh
- - ./functest-alpine.sh
-
-# yamllint enable rule:indentation
-- builder:
name: functest-store-results
builders:
- shell:
diff --git a/jjb/functest/functest-docker.yaml b/jjb/functest/functest-docker.yaml
index 50c7c3816..19967e9fd 100644
--- a/jjb/functest/functest-docker.yaml
+++ b/jjb/functest/functest-docker.yaml
@@ -12,6 +12,12 @@
- master:
branch: '{stream}'
disabled: false
+ - hunter:
+ branch: 'stable/{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
- fraser:
branch: 'stable/{stream}'
disabled: false
@@ -25,13 +31,27 @@
# yamllint disable rule:key-duplicates
image:
- 'core'
+ - 'tempest'
- 'healthcheck'
- 'features'
- 'components'
- 'parser'
- 'smoke'
+ - 'benchmarking'
- 'vnf'
+ exclude:
+ - stream: 'master'
+ image: 'parser'
+ - stream: 'hunter'
+ image: 'parser'
+ - stream: 'gambia'
+ image: 'parser'
+ - stream: 'fraser'
+ image: 'tempest'
+ - stream: 'fraser'
+ image: 'benchmarking'
+
# settings for jobs run in multijob phases
build-job-settings: &build-job-settings
current-parameters: false
@@ -107,6 +127,20 @@
- name: 'functest-core-docker-manifest-{stream}'
<<: *manifest-job-settings
- multijob:
+ name: 'build functest-tempest images'
+ execution-type: PARALLEL
+ projects:
+ - name: 'functest-tempest-docker-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-tempest-docker-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish functest-tempest manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'functest-tempest-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+ - multijob:
name: 'build all functest images'
condition: SUCCESSFUL
execution-type: PARALLEL
@@ -131,6 +165,10 @@
<<: *build-job-settings
- name: 'functest-smoke-docker-build-arm64-{stream}'
<<: *build-job-settings
+ - name: 'functest-benchmarking-docker-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-benchmarking-docker-build-arm64-{stream}'
+ <<: *build-job-settings
- name: 'functest-vnf-docker-build-amd64-{stream}'
<<: *build-job-settings
- name: 'functest-vnf-docker-build-arm64-{stream}'
@@ -150,6 +188,8 @@
<<: *manifest-job-settings
- name: 'functest-smoke-docker-manifest-{stream}'
<<: *manifest-job-settings
+ - name: 'functest-benchmarking-docker-manifest-{stream}'
+ <<: *manifest-job-settings
- name: 'functest-vnf-docker-manifest-{stream}'
<<: *manifest-job-settings
@@ -190,6 +230,8 @@
name: SLAVE_LABEL
default: 'opnfv-build-ubuntu'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: PROJECT
default: "{project}"
@@ -232,6 +274,8 @@
name: SLAVE_LABEL
default: '{slave_label}'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
diff --git a/jjb/functest/functest-env-presetup.sh b/jjb/functest/functest-env-presetup.sh
index 323b325b4..510670bc2 100755
--- a/jjb/functest/functest-env-presetup.sh
+++ b/jjb/functest/functest-env-presetup.sh
@@ -1,31 +1,34 @@
#!/usr/bin/env bash
set -o errexit
-set -o nounset
set -o pipefail
# Fetch INSTALLER_IP for APEX deployments
if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
- echo "Gathering IP information for Apex installer VM"
- ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
- if sudo virsh list | grep undercloud; then
- echo "Installer VM detected"
- undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
+ if [ -n "$RC_FILE_PATH" ]; then
+ echo "RC_FILE_PATH is set: ${RC_FILE_PATH}...skipping detecting UC IP"
+ else
+ echo "Gathering IP information for Apex installer VM"
+ ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+ if sudo virsh list | grep undercloud; then
+ echo "Installer VM detected"
+ undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \
grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+")
- export INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
- export sshkey_vol="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
- sudo scp $ssh_options root@${INSTALLER_IP}:/home/stack/stackrc ${HOME}/stackrc
- export stackrc_vol="-v ${HOME}/stackrc:/home/opnfv/functest/conf/stackrc"
-
- if sudo iptables -C FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
- sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
- fi
- if sudo iptables -C FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
- sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
+ export INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'})
+ export sshkey_vol="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa"
+ sudo scp $ssh_options root@${INSTALLER_IP}:/home/stack/stackrc ${HOME}/stackrc
+ export stackrc_vol="-v ${HOME}/stackrc:/home/opnfv/functest/conf/stackrc"
+
+ if sudo iptables -C FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
+ sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
+ fi
+ if sudo iptables -C FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then
+ sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
+ fi
+ echo "Installer ip is ${INSTALLER_IP}"
+ else
+ echo "No available installer VM exists and no credentials provided...exiting"
+ exit 1
fi
- echo "Installer ip is ${INSTALLER_IP}"
- else
- echo "No available installer VM exists and no credentials provided...exiting"
- exit 1
fi
elif [[ ${INSTALLER_TYPE} == 'daisy' ]]; then
diff --git a/jjb/functest/functest-kubernetes-docker.yaml b/jjb/functest/functest-kubernetes-docker.yaml
index 2085251c6..c328f5d86 100644
--- a/jjb/functest/functest-kubernetes-docker.yaml
+++ b/jjb/functest/functest-kubernetes-docker.yaml
@@ -12,6 +12,12 @@
- master:
branch: '{stream}'
disabled: false
+ - hunter:
+ branch: 'stable/{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
- fraser:
branch: 'stable/{stream}'
disabled: false
@@ -19,13 +25,15 @@
arch_tag:
- 'amd64':
slave_label: 'opnfv-build-ubuntu'
+ - 'arm64':
+ slave_label: 'opnfv-build-ubuntu-arm'
# yamllint disable rule:key-duplicates
image:
- 'core'
- 'healthcheck'
- - 'smoke'
- 'features'
+ - 'smoke'
# settings for jobs run in multijob phases
build-job-settings: &build-job-settings
@@ -53,6 +61,7 @@
jobs:
- "functest-kubernetes-docker-{stream}"
- "functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}"
+ - "functest-kubernetes-{image}-docker-manifest-{stream}"
########################
# job templates
@@ -92,23 +101,54 @@
projects:
- name: 'functest-kubernetes-core-docker-build-amd64-{stream}'
<<: *build-job-settings
+ - name: 'functest-kubernetes-core-docker-build-arm64-{stream}'
+ <<: *build-job-settings
- multijob:
- name: 'build functest-kubernetes-[healthcheck,features] image'
+ name: 'publish functest-kubernetes-core manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'functest-kubernetes-core-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+ - multijob:
+ name: 'build functest-kubernetes-healthcheck images'
execution-type: PARALLEL
projects:
- name: 'functest-kubernetes-healthcheck-docker-build-amd64-{stream}'
<<: *build-job-settings
- - name: 'functest-kubernetes-features-docker-build-amd64-{stream}'
+ - name: 'functest-kubernetes-healthcheck-docker-build-arm64-{stream}'
<<: *build-job-settings
- multijob:
- name: 'build functest-kubernetes-smoke image'
+ name: 'publish functest-kubernetes-healthcheck manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'functest-kubernetes-healthcheck-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+ - multijob:
+ name: 'build all functest-kubernetes images'
+ condition: SUCCESSFUL
execution-type: PARALLEL
projects:
+ - name: 'functest-kubernetes-features-docker-build-amd64-{stream}'
+ <<: *build-job-settings
+ - name: 'functest-kubernetes-features-docker-build-arm64-{stream}'
+ <<: *build-job-settings
- name: 'functest-kubernetes-smoke-docker-build-amd64-{stream}'
<<: *build-job-settings
+ - name: 'functest-kubernetes-smoke-docker-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish all manifests'
+ condition: SUCCESSFUL
+ execution-type: PARALLEL
+ projects:
+ - name: 'functest-kubernetes-features-docker-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'functest-kubernetes-smoke-docker-manifest-{stream}'
+ <<: *manifest-job-settings
publishers:
- 'functest-kubernetes-amd64-recipients'
+ - 'functest-kubernetes-arm64-recipients'
- job-template:
name: 'functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}'
@@ -124,7 +164,56 @@
builders:
- shell: |
#!/bin/bash -ex
- sudo amd64_dirs=docker/{image} bash ./build.sh
+ case "{arch_tag}" in
+ "arm64")
+ sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;;
+ *)
+ sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;;
+ esac
+ exit $?
+
+- job-template:
+ name: 'functest-kubernetes-{image}-docker-manifest-{stream}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - label:
+ name: SLAVE_LABEL
+ default: 'opnfv-build-ubuntu'
+ description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - 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-kubernetes 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/functest-kubernetes-{image}:ARCH-$tag \
+ --target $REPO/functest-kubernetes-{image}:$tag
exit $?
# parameter macro
@@ -138,6 +227,8 @@
name: SLAVE_LABEL
default: '{slave_label}'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -169,7 +260,17 @@
- string:
name: REPO
default: "opnfv"
- description: "Repository name for functest images"
+ description: "Repository name for functest-kubernetes images"
+
+# publisher macros
+- publisher:
+ name: 'functest-kubernetes-arm64-recipients'
+ publishers:
+ - email:
+ recipients: >
+ cristina.pauna@enea.com
+ alexandru.avadanii@enea.com
+ delia.popescu@enea.com
- publisher:
name: 'functest-kubernetes-amd64-recipients'
diff --git a/jjb/functest/functest-kubernetes-project-jobs.yaml b/jjb/functest/functest-kubernetes-project-jobs.yaml
index 7f8dd8d53..46b77ce68 100644
--- a/jjb/functest/functest-kubernetes-project-jobs.yaml
+++ b/jjb/functest/functest-kubernetes-project-jobs.yaml
@@ -18,6 +18,14 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
+ - hunter: &hunter
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
diff --git a/jjb/functest/functest-project-jobs.yaml b/jjb/functest/functest-project-jobs.yaml
index 9a123053f..e9a65b495 100644
--- a/jjb/functest/functest-project-jobs.yaml
+++ b/jjb/functest/functest-project-jobs.yaml
@@ -18,6 +18,14 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
+ - hunter:
+ branch: 'stable/{stream}'
+ gs-pathname: ''
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ gs-pathname: ''
+ disabled: false
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
@@ -106,7 +114,7 @@
wrappers:
- ssh-agent-wrapper
- build-timeout:
- timeout: 30
+ timeout: 60
parameters:
- project-parameter:
diff --git a/jjb/functest/functest-rtd-jobs.yaml b/jjb/functest/functest-rtd-jobs.yaml
new file mode 100644
index 000000000..785bd3543
--- /dev/null
+++ b/jjb/functest/functest-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: functest-rtd
+ project: functest
+ project-name: functest
+
+ gerrit-skip-vote: true
+ project-pattern: 'functest'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-functest/47369/'
+ rtd-token: '26f9131bd5c337928ba8b431a289f6850b330504'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/functest/functest-virtual.yaml b/jjb/functest/functest-virtual.yaml
new file mode 100644
index 000000000..c383d7c13
--- /dev/null
+++ b/jjb/functest/functest-virtual.yaml
@@ -0,0 +1,353 @@
+---
+- functest-defaultparameters: &functest-defaultparameters
+ name: 'functest-defaultparameters'
+ repo: opnfv
+ tag:
+ - gambia
+ - hunter
+ - latest
+
+- job-template:
+ name: '{repo}-functest-{container}-{tag}-pull'
+ parameters:
+ - functest-virtual-defaults
+ builders:
+ - shell: sudo docker pull {repo}/functest-{container}:{tag}
+
+- project:
+ name: repo-functest-container-tag-pull
+ <<: *functest-defaultparameters
+ container:
+ - healthcheck
+ - smoke
+ - benchmarking
+ - components
+ - vnf
+ - features
+ jobs:
+ - '{repo}-functest-{container}-{tag}-pull'
+
+- functest-pulljobs: &functest-pulljobs
+ name: 'functest-pulljobs'
+ projects:
+ - name: '{repo}-functest-healthcheck-{tag}-pull'
+ - name: '{repo}-functest-smoke-{tag}-pull'
+ - name: '{repo}-functest-benchmarking-{tag}-pull'
+ - name: '{repo}-functest-components-{tag}-pull'
+ - name: '{repo}-functest-vnf-{tag}-pull'
+ - name: '{repo}-functest-features-{tag}-pull'
+
+- functest-buildparameters: &functest-buildparameters
+ name: 'functest-buildparameters'
+ parameters:
+ - functest-virtual-defaults
+ - string:
+ name: branch
+ default: master
+
+- job-template:
+ name: '{repo}-functest-{container}-{test}-{tag}-run'
+ parameters:
+ - functest-virtual-defaults
+ builders:
+ - shell: |
+ sudo docker run --rm \
+ -e EXTERNAL_NETWORK=public1 \
+ -v /home/opnfv/functest/results/$JOB_NAME-$BUILD_ID:\
+ /home/opnfv/functest/results \
+ -v /home/opnfv/functest/openstack.creds:\
+ /home/opnfv/functest/conf/env_file \
+ -v /home/opnfv/functest/images:/home/opnfv/functest/images \
+ -v /home/opnfv/functest/tempest_blacklist.yaml:\
+ /usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/\
+ tempest/custom_tests/blacklist.yaml \
+ -v /home/opnfv/functest/rally_blacklist.yaml:\
+ /usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/\
+ rally/blacklist.yaml \
+ {repo}/functest-{container}:{tag} run_tests -t {test}
+
+- project:
+ name: repo-functest-healthcheck-test-tag-run
+ <<: *functest-defaultparameters
+ container: healthcheck
+ test:
+ - connection_check
+ - tenantnetwork1
+ - tenantnetwork2
+ - vmready1
+ - vmready2
+ - singlevm1
+ - singlevm2
+ - vping_ssh
+ - vping_userdata
+ - cinder_test
+ - odl
+ - api_check
+ - snaps_health_check
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-healthcheckjobs: &functest-healthcheckjobs
+ name: 'functest-healthcheckjobs'
+ projects:
+ - name: '{repo}-functest-healthcheck-connection_check-{tag}-run'
+ - name: '{repo}-functest-healthcheck-tenantnetwork1-{tag}-run'
+ - name: '{repo}-functest-healthcheck-tenantnetwork2-{tag}-run'
+ - name: '{repo}-functest-healthcheck-vmready1-{tag}-run'
+ - name: '{repo}-functest-healthcheck-vmready2-{tag}-run'
+ - name: '{repo}-functest-healthcheck-singlevm1-{tag}-run'
+ - name: '{repo}-functest-healthcheck-singlevm2-{tag}-run'
+ - name: '{repo}-functest-healthcheck-vping_ssh-{tag}-run'
+ - name: '{repo}-functest-healthcheck-vping_userdata-{tag}-run'
+ - name: '{repo}-functest-healthcheck-cinder_test-{tag}-run'
+ - name: '{repo}-functest-healthcheck-odl-{tag}-run'
+ - name: '{repo}-functest-healthcheck-api_check-{tag}-run'
+ - name: '{repo}-functest-healthcheck-snaps_health_check-{tag}-run'
+
+- project:
+ name: repo-functest-smoke-test-tag-run
+ <<: *functest-defaultparameters
+ container: smoke
+ test:
+ - tempest_smoke
+ - neutron-tempest-plugin-api
+ - rally_sanity
+ - rally_jobs
+ - refstack_defcore
+ - patrole
+ - snaps_smoke
+ - neutron_trunk
+ - networking-bgpvpn
+ - networking-sfc
+ - barbican
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-smokejobs: &functest-smokejobs
+ name: 'functest-smokejobs'
+ projects:
+ - name: '{repo}-functest-smoke-tempest_smoke-{tag}-run'
+ - name: '{repo}-functest-smoke-neutron-tempest-plugin-api-{tag}-run'
+ - name: '{repo}-functest-smoke-rally_sanity-{tag}-run'
+ - name: '{repo}-functest-smoke-rally_jobs-{tag}-run'
+ - name: '{repo}-functest-smoke-refstack_defcore-{tag}-run'
+ - name: '{repo}-functest-smoke-patrole-{tag}-run'
+ - name: '{repo}-functest-smoke-snaps_smoke-{tag}-run'
+ - name: '{repo}-functest-smoke-neutron_trunk-{tag}-run'
+ - name: '{repo}-functest-smoke-networking-bgpvpn-{tag}-run'
+ - name: '{repo}-functest-smoke-networking-sfc-{tag}-run'
+ - name: '{repo}-functest-smoke-barbican-{tag}-run'
+
+- project:
+ name: repo-functest-benchmarking-test-tag-run'
+ <<: *functest-defaultparameters
+ container: benchmarking
+ test:
+ - vmtp
+ - shaker
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-benchmarkingjobs: &functest-benchmarkingjobs
+ name: 'functest-benchmarkingjobs'
+ projects:
+ - name: '{repo}-functest-benchmarking-vmtp-{tag}-run'
+ - name: '{repo}-functest-benchmarking-shaker-{tag}-run'
+
+- project:
+ name: repo-functest-components-test-tag-run
+ <<: *functest-defaultparameters
+ container: components
+ test:
+ - tempest_full
+ - tempest_scenario
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-componentsjobs: &functest-componentsjobs
+ name: 'functest-componentsjobs'
+ projects:
+ - name: '{repo}-functest-components-tempest_full-{tag}-run'
+ - name: '{repo}-functest-components-tempest_scenario-{tag}-run'
+
+- project:
+ name: repo-functest-vnf-{test}-{tag}-run
+ <<: *functest-defaultparameters
+ container: vnf
+ test:
+ - cloudify
+ - cloudify_ims
+ - heat_ims
+ - vyos_vrouter
+ - juju_epc
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-vnfjobs: &functest-vnfjobs
+ name: 'functest-vnfjobs'
+ projects:
+ - name: '{repo}-functest-vnf-cloudify-{tag}-run'
+ - name: '{repo}-functest-vnf-cloudify_ims-{tag}-run'
+ - name: '{repo}-functest-vnf-heat_ims-{tag}-run'
+ - name: '{repo}-functest-vnf-vyos_vrouter-{tag}-run'
+ - name: '{repo}-functest-vnf-juju_epc-{tag}-run'
+
+- project:
+ name: repo-functest-features-test-tag-run
+ <<: *functest-defaultparameters
+ container: features
+ test:
+ - doctor-notification
+ - bgpvpn
+ - functest-odl-sfc
+ - barometercollectd
+ - vgpu
+ - stor4nfv_os
+ jobs:
+ - '{repo}-functest-{container}-{test}-{tag}-run'
+
+- functest-featuresjobs: &functest-featuresjobs
+ name: 'functest-featuresjobs'
+ projects:
+ - name: '{repo}-functest-features-doctor-notification-{tag}-run'
+ - name: '{repo}-functest-features-bgpvpn-{tag}-run'
+ - name: '{repo}-functest-features-functest-odl-sfc-{tag}-run'
+ - name: '{repo}-functest-features-barometercollectd-{tag}-run'
+ - name: '{repo}-functest-features-vgpu-{tag}-run'
+ - name: '{repo}-functest-features-stor4nfv_os-{tag}-run'
+
+- job-template:
+ name: '{repo}-functest-{tag}-daily'
+ <<: *functest-defaultparameters
+ project-type: multijob
+ parameters:
+ - functest-virtual-defaults
+ builders:
+ - multijob:
+ name: pull containers
+ <<: *functest-pulljobs
+ - multijob:
+ name: healthcheck
+ <<: *functest-healthcheckjobs
+ - multijob:
+ name: smoke
+ <<: *functest-smokejobs
+ - multijob:
+ name: benchmarking
+ <<: *functest-benchmarkingjobs
+ - multijob:
+ name: components
+ <<: *functest-componentsjobs
+ - multijob:
+ name: vnf
+ <<: *functest-vnfjobs
+ - multijob:
+ name: features
+ <<: *functest-featuresjobs
+
+- project:
+ name: repo-functest-tag-daily
+ <<: *functest-defaultparameters
+ jobs:
+ - '{repo}-functest-{tag}-daily'
+
+- scm:
+ name: functest-gerrit
+ scm:
+ - git:
+ url: https://gerrit.opnfv.org/gerrit/functest
+ refspec: '+refs/changes/*:refs/changes/*'
+ branches:
+ - ${branch}
+
+- job-template:
+ name: '{repo}-functest-{container}-{tag}-build'
+ <<: *functest-buildparameters
+ scm:
+ - functest-gerrit
+ builders:
+ - shell: |
+ case "{container}" in
+ "components")
+ args="" ;;
+ *)
+ args="--build-arg BRANCH=${{branch}}" ;;
+ esac
+ cd docker/$(echo {container} |cut -d\- -f 2)
+ sudo docker build \
+ ${{args}} --pull=false --no-cache --force-rm=true \
+ -t {repo}/functest-{container}:{tag} .
+
+- project:
+ name: repo-functest-container-tag-build
+ <<: *functest-defaultparameters
+ container:
+ - core
+ - tempest
+ - healthcheck
+ - smoke
+ - benchmarking
+ - components
+ - vnf
+ - features
+ jobs:
+ - '{repo}-functest-{container}-{tag}-build'
+
+- functest-projectparameters: &functest-projectparameters
+ name: 'functest-projectparameters'
+ current-parameters: true
+
+- job-template:
+ name: '{repo}-functest-{tag}-gate'
+ project-type: multijob
+ <<: *functest-buildparameters
+ builders:
+ - multijob:
+ name: build functest-core
+ projects:
+ - name: '{repo}-functest-core-{tag}-build'
+ <<: *functest-projectparameters
+ - multijob:
+ name: build functest-tempest
+ projects:
+ - name: '{repo}-functest-tempest-{tag}-build'
+ <<: *functest-projectparameters
+ - multijob:
+ name: build all remaining contrainers
+ projects:
+ - name: '{repo}-functest-healthcheck-{tag}-build'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-smoke-{tag}-build'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-benchmarking-{tag}-build'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-components-{tag}-build'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-vnf-{tag}-build'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-features-{tag}-build'
+ <<: *functest-projectparameters
+ - multijob:
+ name: healthcheck
+ <<: *functest-healthcheckjobs
+ - multijob:
+ name: smoke
+ <<: *functest-smokejobs
+ - multijob:
+ name: benchmarking
+ <<: *functest-benchmarkingjobs
+ - multijob:
+ name: components
+ <<: *functest-componentsjobs
+ - multijob:
+ name: vnf
+ <<: *functest-vnfjobs
+ - multijob:
+ name: features
+ <<: *functest-featuresjobs
+
+- project:
+ name: repo-functest-tag-gate
+ <<: *functest-defaultparameters
+ jobs:
+ - '{repo}-functest-{tag}-gate'
diff --git a/jjb/functest/xtesting-docker.yaml b/jjb/functest/xtesting-docker.yaml
index 251c3954e..88416bbf9 100644
--- a/jjb/functest/xtesting-docker.yaml
+++ b/jjb/functest/xtesting-docker.yaml
@@ -12,6 +12,12 @@
- master:
branch: '{stream}'
disabled: false
+ - hunter:
+ branch: 'stable/{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
- fraser:
branch: 'stable/{stream}'
disabled: false
@@ -129,6 +135,8 @@
name: SLAVE_LABEL
default: 'opnfv-build-ubuntu'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: PROJECT
default: "{project}"
@@ -170,6 +178,8 @@
name: SLAVE_LABEL
default: '{slave_label}'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
diff --git a/jjb/functest/xtesting-project-jobs.yaml b/jjb/functest/xtesting-project-jobs.yaml
index e109387c6..239ae9f9b 100644
--- a/jjb/functest/xtesting-project-jobs.yaml
+++ b/jjb/functest/xtesting-project-jobs.yaml
@@ -18,6 +18,14 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
+ - hunter: &hunter
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
diff --git a/jjb/global-jjb b/jjb/global-jjb
deleted file mode 160000
-Subproject 9b240453b91f3c4b0844ea1c593721a1c421caa
diff --git a/jjb/global-jjb/jjb b/jjb/global-jjb/jjb
new file mode 120000
index 000000000..23c884f04
--- /dev/null
+++ b/jjb/global-jjb/jjb
@@ -0,0 +1 @@
+../../global-jjb/jjb \ No newline at end of file
diff --git a/jjb/global-jjb/shell b/jjb/global-jjb/shell
new file mode 120000
index 000000000..d37c43f86
--- /dev/null
+++ b/jjb/global-jjb/shell
@@ -0,0 +1 @@
+../../global-jjb/shell \ No newline at end of file
diff --git a/jjb/global/basic-jobs.yaml b/jjb/global/basic-jobs.yaml
index a8b9cffbc..d2c271105 100644
--- a/jjb/global/basic-jobs.yaml
+++ b/jjb/global/basic-jobs.yaml
@@ -13,7 +13,7 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser:
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
diff --git a/jjb/global/releng-defaults.yaml b/jjb/global/releng-defaults.yaml
index 2e94767e8..e584107c8 100644
--- a/jjb/global/releng-defaults.yaml
+++ b/jjb/global/releng-defaults.yaml
@@ -11,6 +11,13 @@
node: master
+ # Defaults for global-jjb jobs
+ build-timeout: 60
+ build-node: 'opnfv-build'
+ gerrit-server-name: 'gerrit.opnfv.org'
+ jenkins-ssh-credential: 'd42411ac011ad6f3dd2e1fa34eaa5d87f910eb2e'
+ lftools-version: '<1.0.0'
+
properties:
- logrotate-default
diff --git a/jjb/global/releng-macros.yaml b/jjb/global/releng-macros.yaml
index b282cff4f..fe24ed56d 100644
--- a/jjb/global/releng-macros.yaml
+++ b/jjb/global/releng-macros.yaml
@@ -420,7 +420,7 @@
- shell: |
#!/bin/bash
# Install python package
- sudo pip install "flake8==2.6.2"
+ sudo -H pip install "flake8==2.6.2"
echo "Checking python code..."
for f in $(egrep '\.py$' modified_files)
@@ -438,7 +438,7 @@
- shell: |
#!/bin/bash
# sudo Install python packages
- sudo pip install "yamllint==1.8.2"
+ sudo -H pip install "yamllint==1.8.2"
echo "Checking yaml file..."
for f in $(egrep '\.ya?ml$' modified_files)
@@ -720,7 +720,7 @@
- email-ext:
<<: *email_ptl_defaults
recipients: >
- gelkinbard@mirantis.com
+ Alexandru.Avadanii@enea.com
- publisher:
name: 'email-functest-ptl'
@@ -883,7 +883,7 @@
- email-ext:
<<: *email_ptl_defaults
recipients: >
- fatih.degirmenci@ericsson.com
+ tbramwell@linuxfoundation.org
- publisher:
name: 'email-releng-anteater-ptl'
<<: *email_releng_ptl_defaults
@@ -900,7 +900,11 @@
<<: *email_releng_ptl_defaults
- publisher:
name: 'email-releng-xci-ptl'
- <<: *email_releng_ptl_defaults
+ publishers:
+ - email-ext:
+ <<: *email_ptl_defaults
+ recipients: >
+ fatih.degirmenci@ericsson.com
- publisher:
name: 'email-samplevnf-ptl'
diff --git a/jjb/global/slave-params.yaml b/jjb/global/slave-params.yaml
index 9d8bed45f..30ecd2a03 100644
--- a/jjb/global/slave-params.yaml
+++ b/jjb/global/slave-params.yaml
@@ -10,6 +10,25 @@
- label:
name: SLAVE_LABEL
default: 'apex-baremetal-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: SSH_KEY
+ default: /root/.ssh/id_rsa
+ description: 'SSH key to use for Apex'
+
+- parameter:
+ name: 'apex-baremetal-gambia-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'apex-baremetal-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -25,6 +44,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-baremetal-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -40,6 +61,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-baremetal-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -55,6 +78,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-baremetal-danube'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -71,6 +96,25 @@
- label:
name: SLAVE_LABEL
default: 'apex-virtual-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: SSH_KEY
+ default: /root/.ssh/id_rsa
+ description: 'SSH key to use for Apex'
+
+- parameter:
+ name: 'apex-virtual-gambia-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'apex-virtual-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -86,6 +130,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-virtual-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -101,6 +147,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-virtual-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -116,6 +164,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-virtual-danube'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -210,6 +260,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -224,6 +276,8 @@
- label:
name: SLAVE_LABEL
default: 'compass-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -235,6 +289,8 @@
- label:
name: SLAVE_LABEL
default: 'compass-baremetal-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -246,6 +302,8 @@
- label:
name: SLAVE_LABEL
default: 'compass-baremetal-branch'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -257,6 +315,8 @@
- label:
name: SLAVE_LABEL
default: 'fuel-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -268,14 +328,25 @@
- label:
name: SLAVE_LABEL
default: 'armband-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
+ name: 'auto-baremetal-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'auto-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
- name: LAB_CONFIG_URL
- default: ssh://jenkins-enea@gerrit.opnfv.org:29418/securedlab
- description: 'Base URI to the configuration directory'
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
- parameter:
name: 'joid-baremetal-defaults'
@@ -283,6 +354,8 @@
- label:
name: SLAVE_LABEL
default: 'joid-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -305,6 +378,8 @@
- label:
name: SLAVE_LABEL
default: 'daisy-baremetal'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: INSTALLER_IP
default: '10.20.7.3'
@@ -323,6 +398,8 @@
- label:
name: SLAVE_LABEL
default: 'apex-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -338,6 +415,21 @@
- label:
name: SLAVE_LABEL
default: 'compass-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+- parameter:
+ name: 'compass-arm-virtual-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'compass-arm-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -349,6 +441,8 @@
- label:
name: SLAVE_LABEL
default: 'compass-virtual-master'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -360,6 +454,8 @@
- label:
name: SLAVE_LABEL
default: 'compass-virtual-branch'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -371,6 +467,8 @@
- label:
name: SLAVE_LABEL
default: 'fuel-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -382,14 +480,12 @@
- label:
name: SLAVE_LABEL
default: 'armband-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
- - string:
- name: LAB_CONFIG_URL
- default: ssh://jenkins-enea@gerrit.opnfv.org:29418/securedlab
- description: 'Base URI to the configuration directory'
- parameter:
name: 'joid-virtual-defaults'
@@ -397,6 +493,8 @@
- label:
name: SLAVE_LABEL
default: 'joid-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -416,6 +514,8 @@
- label:
name: SLAVE_LABEL
default: 'daisy-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: INSTALLER_IP
default: '10.20.11.2'
@@ -429,6 +529,15 @@
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'functest-virtual-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'functest-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+
#####################################################
# Parameters for build slaves
#####################################################
@@ -438,6 +547,8 @@
- label:
name: SLAVE_LABEL
default: 'opnfv-build-centos'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -454,6 +565,8 @@
name: SLAVE_LABEL
default: 'opnfv-build-ubuntu'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -468,8 +581,10 @@
parameters:
- label:
name: SLAVE_LABEL
- default: 'pharos-dashboard'
+ default: 'pharos-dashboard2'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -486,6 +601,26 @@
name: SLAVE_LABEL
default: 'opnfv-build'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+
+- parameter:
+ name: 'lf-build2-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'lf-build2'
+ description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -502,12 +637,32 @@
name: SLAVE_LABEL
default: 'ericsson-build3'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
- parameter:
+ name: 'ericsson-build4-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'ericsson-build4'
+ description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+
+- parameter:
name: 'huawei-build-defaults'
parameters:
- node:
@@ -529,6 +684,8 @@
name: SLAVE_LABEL
default: 'opnfv-build-ubuntu-arm'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -648,6 +805,8 @@
- label:
name: SLAVE_LABEL
default: 'huawei-test'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -666,6 +825,8 @@
- label:
name: SLAVE_LABEL
default: 'huawei-test'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -705,6 +866,8 @@
- label:
name: SLAVE_LABEL
default: 'huawei-virtual5'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1020,6 +1183,8 @@
- label:
name: SLAVE_LABEL
default: 'ericsson-virtual5'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://git.opendaylight.org/gerrit/p/$PROJECT.git
@@ -1031,6 +1196,8 @@
- label:
name: SLAVE_LABEL
default: 'ericsson-virtual12'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1042,6 +1209,8 @@
- label:
name: SLAVE_LABEL
default: 'ericsson-virtual13'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1053,6 +1222,8 @@
- label:
name: SLAVE_LABEL
default: 'ericsson-virtual-pod1bl01'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1064,6 +1235,8 @@
- label:
name: SLAVE_LABEL
default: 'odl-netvirt-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1075,6 +1248,8 @@
- label:
name: SLAVE_LABEL
default: 'odl-netvirt-virtual-intel'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1105,6 +1280,8 @@
name: SLAVE_LABEL
default: 'sandbox-baremetal'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1121,6 +1298,8 @@
name: SLAVE_LABEL
default: 'sandbox-virtual'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -1137,6 +1316,8 @@
name: SLAVE_LABEL
default: 'dummy-pod1'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
diff --git a/jjb/ipv6/ipv6-rtd-jobs.yaml b/jjb/ipv6/ipv6-rtd-jobs.yaml
new file mode 100644
index 000000000..edaa1c389
--- /dev/null
+++ b/jjb/ipv6/ipv6-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: ipv6-rtd
+ project: ipv6
+ project-name: ipv6
+
+ project-pattern: 'ipv6'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-ipv6/47370/'
+ rtd-token: 'e7abb4e2c3f3f0dfc1a8feefe39b27f4a4f9b98a'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/joid/joid-daily-jobs.yaml b/jjb/joid/joid-daily-jobs.yaml
index 2719c7292..1766d61ac 100644
--- a/jjb/joid/joid-daily-jobs.yaml
+++ b/jjb/joid/joid-daily-jobs.yaml
@@ -16,12 +16,12 @@
fraser: &fraser
stream: fraser
branch: 'stable/{stream}'
- disabled: false
+ disabled: true
gs-pathname: '/{stream}'
master: &master
stream: master
branch: '{stream}'
- disabled: false
+ disabled: true
gs-pathname: ''
# -------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
@@ -97,7 +97,7 @@
use-build-blocker: true
blocking-jobs:
- 'joid-(os|k8)-.*?-{pod}-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
@@ -186,7 +186,7 @@
use-build-blocker: true
blocking-jobs:
- 'joid-deploy-{pod}-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
wrappers:
- build-name:
diff --git a/jjb/joid/joid-rtd-jobs.yaml b/jjb/joid/joid-rtd-jobs.yaml
new file mode 100644
index 000000000..14d171ca9
--- /dev/null
+++ b/jjb/joid/joid-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: joid-rtd
+ project: joid
+ project-name: joid
+
+ project-pattern: 'joid'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-joid/47371/'
+ rtd-token: '44a666161d99c9f53e7f69e56f1704694502015b'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/joid/joid-verify-jobs.yaml b/jjb/joid/joid-verify-jobs.yaml
index 2d1c7c9f3..d7cdec660 100644
--- a/jjb/joid/joid-verify-jobs.yaml
+++ b/jjb/joid/joid-verify-jobs.yaml
@@ -12,11 +12,11 @@
- master:
branch: '{stream}'
gs-pathname: ''
- disabled: false
+ disabled: true
- fraser: &fraser
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
- disabled: false
+ disabled: true
#####################################
# patch verification phases
#####################################
@@ -57,7 +57,7 @@
blocking-jobs:
- 'joid-verify-master'
- 'joid-verify-danube'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
@@ -163,7 +163,7 @@
blocking-jobs:
- 'joid-verify-deploy-.*'
- 'joid-verify-test-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
scm:
- git-scm-gerrit
diff --git a/jjb/kvmfornfv/kvmfornfv-rtd-jobs.yaml b/jjb/kvmfornfv/kvmfornfv-rtd-jobs.yaml
new file mode 100644
index 000000000..7d0b925a5
--- /dev/null
+++ b/jjb/kvmfornfv/kvmfornfv-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: kvmfornfv-rtd
+ project: kvmfornfv
+ project-name: kvmfornfv
+
+ gerrit-skip-vote: true
+ project-pattern: 'kvmfornfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-kvmfornfv/47372/'
+ rtd-token: '32ae6f0ad54181a27fd38d99821a021f5087554a'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/moon/moon-rtd-jobs.yaml b/jjb/moon/moon-rtd-jobs.yaml
new file mode 100644
index 000000000..9d5f3c345
--- /dev/null
+++ b/jjb/moon/moon-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: moon-rtd
+ project: moon
+ project-name: moon
+
+ gerrit-skip-vote: true
+ project-pattern: 'moon'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-moon/47373/'
+ rtd-token: 'f4dc698744431a8688a58746f84fc5d7bee694b2'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/multisite/multisite-rtd-jobs.yaml b/jjb/multisite/multisite-rtd-jobs.yaml
new file mode 100644
index 000000000..4e7f9e579
--- /dev/null
+++ b/jjb/multisite/multisite-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: multisite-rtd
+ project: multisite
+ project-name: multisite
+
+ project-pattern: 'multisite'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-multisite/47374/'
+ rtd-token: '5d5b5c20e10df51eec38593b76d96cd22d4f1a96'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/netready/netready-rtd-jobs.yaml b/jjb/netready/netready-rtd-jobs.yaml
new file mode 100644
index 000000000..ce46b33bc
--- /dev/null
+++ b/jjb/netready/netready-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: netready-rtd
+ project: netready
+ project-name: netready
+
+ gerrit-skip-vote: true
+ project-pattern: 'netready'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-netready/47375/'
+ rtd-token: '3defd5720db87d5fd6487702e2778053b9279c28'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/nfvbench/nfvbench-rtd-jobs.yaml b/jjb/nfvbench/nfvbench-rtd-jobs.yaml
new file mode 100644
index 000000000..5ff94834a
--- /dev/null
+++ b/jjb/nfvbench/nfvbench-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: nfvbench-rtd
+ project: nfvbench
+ project-name: nfvbench
+
+ project-pattern: 'nfvbench'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-nfvbench/47376/'
+ rtd-token: '7d77b15615ffe7906f1f20e245c80dc0a0f97e47'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/nfvbench/nfvbench.yaml b/jjb/nfvbench/nfvbench.yaml
index 44e85d2c8..ec6776f81 100644
--- a/jjb/nfvbench/nfvbench.yaml
+++ b/jjb/nfvbench/nfvbench.yaml
@@ -14,7 +14,7 @@
gs-pathname: ''
docker-tag: 'latest'
disabled: false
- - fraser: &fraser
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
docker-tag: 'stable'
diff --git a/jjb/octopus/octopus-rtd-jobs.yaml b/jjb/octopus/octopus-rtd-jobs.yaml
new file mode 100644
index 000000000..068ff3b57
--- /dev/null
+++ b/jjb/octopus/octopus-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: octopus-rtd
+ project: octopus
+ project-name: octopus
+
+ gerrit-skip-vote: true
+ project-pattern: 'octopus'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-octopus/47377/'
+ rtd-token: 'b3a1784dc55db91f38ea54cb181a0e4551221349'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/onosfw/onosfw-rtd-jobs.yaml b/jjb/onosfw/onosfw-rtd-jobs.yaml
new file mode 100644
index 000000000..a7a5e737a
--- /dev/null
+++ b/jjb/onosfw/onosfw-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: onosfw-rtd
+ project: onosfw
+ project-name: onosfw
+
+ gerrit-skip-vote: true
+ project-pattern: 'onosfw'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-onosfw/47378/'
+ rtd-token: '1ad406bcdf2d627e2e18fbcd6605f3456b05bb3d'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/openci/create-ane.sh b/jjb/openci/create-ane.sh
deleted file mode 100755
index 8a4da8f52..000000000
--- a/jjb/openci/create-ane.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018 Ericsson AB 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
-##############################################################################
-set -o errexit
-set -o nounset
-set -o pipefail
-
-# This script creates ArtifactPublishedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
-
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'artifactLocation': '$ARTIFACT_LOCATION', 'confidenceLevel': { $CONFIDENCE_LEVEL } }"
-EOF
-echo "Constructed $PUBLISH_EVENT_TYPE"
-echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
-echo "--------------------------------------------"
diff --git a/jjb/openci/create-ape.sh b/jjb/openci/create-ape.sh
new file mode 100755
index 000000000..7c9b46cc6
--- /dev/null
+++ b/jjb/openci/create-ape.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Ericsson AB 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
+##############################################################################
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# workaround for https://github.com/pypa/virtualenv/issues/1029
+export PS1=${PS1:-}
+
+# This script creates ArtifactPublishedEvent
+
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+ "type": "$PUBLISH_EVENT_TYPE",
+ "id": "$(uuidgen)",
+ "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+ "buildUrl": "$BUILD_URL",
+ "branch": "master",
+ "origin": "$PUBLISH_EVENT_ORIGIN",
+ "artifactLocation": "$ARTIFACT_LOCATION",
+ "confidenceLevel": "$CONFIDENCE_LEVEL"
+}
+EOF
+
+echo "Constructed $PUBLISH_EVENT_TYPE"
+echo "--------------------------------------------"
+cat ./json_body.txt
+echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
diff --git a/jjb/openci/create-cde.sh b/jjb/openci/create-cde.sh
index 410db50e6..9780119ce 100755
--- a/jjb/openci/create-cde.sh
+++ b/jjb/openci/create-cde.sh
@@ -11,17 +11,37 @@ set -o errexit
set -o nounset
set -o pipefail
+export PS1=${PS1:-}
+
# This script creates CompositionDefinedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-scenario=$DEPLOY_SCENARIO
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA_LOCATION' }"
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+ "type": "$PUBLISH_EVENT_TYPE",
+ "id": "$(uuidgen)",
+ "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+ "buildUrl": "$BUILD_URL",
+ "branch": "master",
+ "origin": "$PUBLISH_EVENT_ORIGIN",
+ "scenario": "$DEPLOY_SCENARIO",
+ "compositionName": "$DEPLOY_SCENARIO",
+ "compositionMetadataUrl": "$SCENARIO_METADATA_LOCATION"
+}
EOF
+
echo "Constructed $PUBLISH_EVENT_TYPE"
echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
+cat ./json_body.txt
echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
diff --git a/jjb/openci/create-clme.sh b/jjb/openci/create-clme.sh
index 5e8ee10c9..2ece019b0 100755
--- a/jjb/openci/create-clme.sh
+++ b/jjb/openci/create-clme.sh
@@ -11,17 +11,38 @@ set -o errexit
set -o nounset
set -o pipefail
+export PS1=${PS1:-}
+
# This script creates ConfidenceLevelModifiedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-scenario=$DEPLOY_SCENARIO
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA_LOCATION', 'confidenceLevel': { $CONFIDENCE_LEVEL } }"
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+ "type": "$PUBLISH_EVENT_TYPE",
+ "id": "$(uuidgen)",
+ "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+ "buildUrl": "$BUILD_URL",
+ "branch": "master",
+ "origin": "$PUBLISH_EVENT_ORIGIN",
+ "scenario": "$DEPLOY_SCENARIO",
+ "compositionName": "$DEPLOY_SCENARIO",
+ "compositionMetadataUrl": "$SCENARIO_METADATA_LOCATION",
+ "confidenceLevel": "$CONFIDENCE_LEVEL"
+}
EOF
+
echo "Constructed $PUBLISH_EVENT_TYPE"
echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
+cat ./json_body.txt
echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
diff --git a/jjb/openci/openci-odl-daily-jobs.yaml b/jjb/openci/openci-odl-daily-jobs.yaml
index d80feadf6..bdaca5742 100644
--- a/jjb/openci/openci-odl-daily-jobs.yaml
+++ b/jjb/openci/openci-odl-daily-jobs.yaml
@@ -46,19 +46,7 @@
builders:
- shell:
- !include-raw-escape: ./create-ane.sh
- - inject:
- properties-file: "$WORKSPACE/event.properties"
-
- publishers:
- - jms-messaging:
- provider-name: openci.activemq
- msg-type: Custom
- msg-props: |
- type=$type
- origin=$origin
- msg-content:
- $eventBody
+ !include-raw-escape: ./create-ape.sh
# This job gets triggered by a ConfidenceLevelModifiedEvent published
# by OPNFV jobs so ODL can promote the autorelease artifact even further.
@@ -78,14 +66,8 @@
triggers:
- jms-messaging:
provider-name: openci.activemq
- selector: CI_TYPE = 'custom'
- checks:
- - field: origin
- expected-value: 'OPNFV'
- - field: type
- expected-value: 'ConfidenceLevelModifiedEvent'
- - field: scenario
- expected-value: 'os-odl-nofeature'
+ selector: |
+ JMSType = 'ConfidenceLevelModifiedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = 'os-odl-nofeature-ha'
builders:
- shell: |
diff --git a/jjb/openci/openci-onap-daily-jobs.yaml b/jjb/openci/openci-onap-daily-jobs.yaml
index 28c3e6948..88589d8ac 100644
--- a/jjb/openci/openci-onap-daily-jobs.yaml
+++ b/jjb/openci/openci-onap-daily-jobs.yaml
@@ -46,19 +46,7 @@
builders:
- shell:
- !include-raw-escape: ./create-ane.sh
- - inject:
- properties-file: "$WORKSPACE/event.properties"
-
- publishers:
- - jms-messaging:
- provider-name: openci.activemq
- msg-type: Custom
- msg-props: |
- type=$type
- origin=$origin
- msg-content:
- $eventBody
+ !include-raw-escape: ./create-ape.sh
# This job gets triggered by a ConfidenceLevelModifiedEvent published
# by OPNFV jobs so ONAP can promote the autorelease artifact even further.
@@ -78,14 +66,8 @@
triggers:
- jms-messaging:
provider-name: openci.activemq
- selector: CI_TYPE = 'custom'
- checks:
- - field: origin
- expected-value: 'OPNFV'
- - field: type
- expected-value: 'ConfidenceLevelModifiedEvent'
- - field: scenario
- expected-value: 'k8-nosdn-onap'
+ selector: |
+ JMSType = 'ConfidenceLevelModifiedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = 'k8-nosdn-onap-ha'
builders:
- shell: |
diff --git a/jjb/openci/openci-opnfv-daily-jobs.yaml b/jjb/openci/openci-opnfv-daily-jobs.yaml
index cb150148b..020171bc2 100644
--- a/jjb/openci/openci-opnfv-daily-jobs.yaml
+++ b/jjb/openci/openci-opnfv-daily-jobs.yaml
@@ -44,17 +44,24 @@
name: SCENARIO_METADATA_LOCATION
default: https://url/to/scenario/metadata/on/opnfv/artifact/repo/$BUILD_NUMBER
description: 'The location of the scenario metadata'
- - 'opnfv-build-defaults'
+ - label:
+ name: SLAVE_LABEL
+ default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+
+ wrappers:
+ - credentials-binding:
+ - username-password-separated:
+ credential-id: openci-connect-activemq
+ username: ACTIVEMQ_USER
+ password: ACTIVEMQ_PASSWORD
+ - workspace-cleanup
triggers:
- jms-messaging:
provider-name: openci.activemq
- selector: CI_TYPE = 'custom'
- checks:
- - field: origin
- expected-value: '{origin}'
- - field: type
- expected-value: 'ArtifactPublishedEvent'
+ selector: JMSType = 'ArtifactPublishedEvent' and JMSOrigin = '{origin}'
builders:
- shell: |
@@ -67,19 +74,6 @@
echo "----------------------------------"
- shell:
!include-raw-escape: ./create-cde.sh
- - inject:
- properties-file: "$WORKSPACE/event.properties"
-
- publishers:
- - jms-messaging:
- provider-name: openci.activemq
- msg-type: Custom
- msg-props: |
- type=$type
- origin=$origin
- scenario=$scenario
- msg-content:
- $eventBody
- job-template:
name: 'openci-opnfv-{scenario}-test-daily-{stream}'
@@ -109,19 +103,24 @@
name: CONFIDENCE_LEVEL
default: "'opnfvdaily': 'SUCCESS'"
description: 'The confidence level the published artifact gained'
- - 'opnfv-build-defaults'
+ - label:
+ name: SLAVE_LABEL
+ default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+
+ wrappers:
+ - credentials-binding:
+ - username-password-separated:
+ credential-id: openci-connect-activemq
+ username: ACTIVEMQ_USER
+ password: ACTIVEMQ_PASSWORD
+ - workspace-cleanup
triggers:
- jms-messaging:
provider-name: openci.activemq
- selector: CI_TYPE = 'custom'
- checks:
- - field: origin
- expected-value: 'OPNFV'
- - field: type
- expected-value: 'CompositionDefinedEvent'
- - field: scenario
- expected-value: '{scenario}'
+ selector: JMSType = 'CompositionDefinedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = '{scenario}'
builders:
- shell: |
@@ -134,16 +133,3 @@
echo "----------------------------------"
- shell:
!include-raw-escape: ./create-clme.sh
- - inject:
- properties-file: "$WORKSPACE/event.properties"
-
- publishers:
- - jms-messaging:
- provider-name: openci.activemq
- msg-type: Custom
- msg-props: |
- type=$type
- origin=$origin
- scenario=$scenario
- msg-content:
- $eventBody
diff --git a/jjb/opera/opera-rtd-jobs.yaml b/jjb/opera/opera-rtd-jobs.yaml
new file mode 100644
index 000000000..b923c9f81
--- /dev/null
+++ b/jjb/opera/opera-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: opera-rtd
+ project: opera
+ project-name: opera
+
+ gerrit-skip-vote: true
+ project-pattern: 'opera'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-opera/47379/'
+ rtd-token: '4dc678d2d96adf6376b4f8f9aafdbbeb24dbb006'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/opnfvdocs/docs-rtd.yaml b/jjb/opnfvdocs/docs-rtd.yaml
index ece856903..a8d29e4b4 100644
--- a/jjb/opnfvdocs/docs-rtd.yaml
+++ b/jjb/opnfvdocs/docs-rtd.yaml
@@ -8,12 +8,12 @@
stream:
- master:
branch: 'master'
+ - gambia:
+ branch: 'stable/{stream}'
- fraser:
branch: 'stable/{stream}'
- danube:
branch: 'stable/{stream}'
- - euphrates:
- branch: 'stable/{stream}'
project: 'opnfvdocs'
rtdproject: 'opnfv'
@@ -29,6 +29,8 @@
name: SLAVE_LABEL
default: 'lf-build1'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -60,6 +62,8 @@
name: SLAVE_LABEL
default: 'lf-build2'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -75,20 +79,13 @@
triggers:
- gerrit-trigger-patchset-created:
server: 'gerrit.opnfv.org'
- project: '**'
+ project: 'opnfvdocs'
branch: '{branch}'
- files: 'docs/**/*.*'
+ files: 'docs/**'
builders:
- shell: |
- if [ "$GERRIT_PROJECT" != "opnfvdocs" ]; then
- cd docs/submodules/$GERRIT_PROJECT
- git fetch origin $GERRIT_REFSPEC && git checkout FETCH_HEAD
- else
- git fetch origin $GERRIT_REFSPEC && git checkout FETCH_HEAD
- fi
- - shell: |
- sudo pip install virtualenv
+ sudo -H pip install virtualenv
virtualenv $WORKSPACE/venv
. $WORKSPACE/venv/bin/activate
pip install --upgrade pip
diff --git a/jjb/opnfvdocs/opnfvdocs.yaml b/jjb/opnfvdocs/opnfvdocs.yaml
index 5f08f69a4..a97457353 100644
--- a/jjb/opnfvdocs/opnfvdocs.yaml
+++ b/jjb/opnfvdocs/opnfvdocs.yaml
@@ -17,11 +17,11 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
- - euphrates:
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
diff --git a/jjb/opnfvtsc/opnfvtsc-rtd-jobs.yaml b/jjb/opnfvtsc/opnfvtsc-rtd-jobs.yaml
new file mode 100644
index 000000000..b1923f458
--- /dev/null
+++ b/jjb/opnfvtsc/opnfvtsc-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: opnfvtsc-rtd
+ project: opnfvtsc
+ project-name: opnfvtsc
+
+ gerrit-skip-vote: true
+ project-pattern: 'opnfvtsc'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-opnfvtsc/47400/'
+ rtd-token: 'b8cbc26c46f1b1bd98adbf8c4488787a58d68fdd'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/orchestra/orchestra-daily-jobs.yaml b/jjb/orchestra/orchestra-daily-jobs.yaml
index 7c2deaec4..94f9d8b1c 100644
--- a/jjb/orchestra/orchestra-daily-jobs.yaml
+++ b/jjb/orchestra/orchestra-daily-jobs.yaml
@@ -14,7 +14,7 @@
stream: master
branch: '{stream}'
gs-pathname: ''
- disabled: false
+ disabled: true
# ------------------------------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
diff --git a/jjb/orchestra/orchestra-rtd-jobs.yaml b/jjb/orchestra/orchestra-rtd-jobs.yaml
new file mode 100644
index 000000000..d1279eba4
--- /dev/null
+++ b/jjb/orchestra/orchestra-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: orchestra-rtd
+ project: orchestra
+ project-name: orchestra
+
+ gerrit-skip-vote: true
+ project-pattern: 'orchestra'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-orchestra/47380/'
+ rtd-token: 'c7f8cb2949a592bf6040c648552b0afa61f7da15'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/ovn4nfv/golang-make-test.sh b/jjb/ovn4nfv/golang-make-test.sh
new file mode 100644
index 000000000..7ed463277
--- /dev/null
+++ b/jjb/ovn4nfv/golang-make-test.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Intel Corporation.
+# 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
+##############################################################################
+set -o errexit
+set -o pipefail
+
+source /etc/os-release || source /usr/lib/os-release
+case ${ID,,} in
+ ubuntu|debian)
+ sudo add-apt-repository -y ppa:longsleep/golang-backports
+ sudo apt-get update
+ sudo apt-get install -y build-essential golang-go
+ sudo apt-get -y clean && sudo apt-get -y autoremove
+ ;;
+esac
+
+echo "Running unit tests in Go ${golang_version} ..."
+cd $WORKSPACE
+make test
diff --git a/jjb/ovn4nfv/ovn4nfv-daily-jobs.yaml b/jjb/ovn4nfv/ovn4nfv-daily-jobs.yaml
index ca4cfeede..034d6d6a4 100644
--- a/jjb/ovn4nfv/ovn4nfv-daily-jobs.yaml
+++ b/jjb/ovn4nfv/ovn4nfv-daily-jobs.yaml
@@ -8,7 +8,7 @@
stream: master
branch: '{stream}'
gs-pathname: ''
- disabled: false
+ disabled: true
pod:
- virtual:
diff --git a/jjb/ovn4nfv/ovn4nfv-k8s-plugins-project-jobs.yaml b/jjb/ovn4nfv/ovn4nfv-k8s-plugins-project-jobs.yaml
new file mode 100644
index 000000000..cd8d7e0fb
--- /dev/null
+++ b/jjb/ovn4nfv/ovn4nfv-k8s-plugins-project-jobs.yaml
@@ -0,0 +1,109 @@
+---
+- project:
+ name: ovn4nfv-k8s-plugin-project-jobs
+
+ project: 'ovn4nfv-k8s-plugin'
+
+ jobs:
+ - 'ovn4nfv-k8s-plugin-verify-{stream}'
+ - 'ovn4nfv-k8s-plugin-merge-{stream}'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ gs-pathname: ''
+ disabled: false
+
+################################
+# job templates
+################################
+
+- job-template:
+ name: 'ovn4nfv-k8s-plugin-verify-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - opnfv-build-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}'
+
+ wrappers:
+ - ssh-agent-wrapper
+ - timeout:
+ timeout: 30
+ fail: true
+
+ builders:
+ - ovn4nfv-k8s-plugin-unit-tests-golang
+
+- job-template:
+ name: 'ovn4nfv-k8s-plugin-merge-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - opnfv-build-defaults
+
+ scm:
+ - git-scm
+
+ 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}'
+
+ wrappers:
+ - ssh-agent-wrapper
+ - timeout:
+ timeout: 30
+ fail: true
+
+ builders:
+ - ovn4nfv-k8s-plugin-unit-tests-golang
+
+################################
+# job builders
+################################
+
+- builder:
+ name: ovn4nfv-k8s-plugin-unit-tests-golang
+ builders:
+ - shell: |
+ !include-raw: ./golang-make-test.sh
diff --git a/jjb/ovn4nfv/ovn4nfv-project-jobs.yaml b/jjb/ovn4nfv/ovn4nfv-project-jobs.yaml
index 2ce4b6df9..8fbd75ba9 100644
--- a/jjb/ovn4nfv/ovn4nfv-project-jobs.yaml
+++ b/jjb/ovn4nfv/ovn4nfv-project-jobs.yaml
@@ -9,7 +9,11 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
diff --git a/jjb/ovn4nfv/ovn4nfv-rtd-jobs.yaml b/jjb/ovn4nfv/ovn4nfv-rtd-jobs.yaml
new file mode 100644
index 000000000..984ec4f6e
--- /dev/null
+++ b/jjb/ovn4nfv/ovn4nfv-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: ovn4nfv-rtd
+ project: ovn4nfv
+ project-name: ovn4nfv
+
+ project-pattern: 'ovn4nfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-ovn4nfv/47381/'
+ rtd-token: 'f131200fd878a5c443f18c134c3bfda122538bce'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/ovno/ovno-rtd-jobs.yaml b/jjb/ovno/ovno-rtd-jobs.yaml
new file mode 100644
index 000000000..c5d661dca
--- /dev/null
+++ b/jjb/ovno/ovno-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: ovno-rtd
+ project: ovno
+ project-name: ovno
+
+ gerrit-skip-vote: true
+ project-pattern: 'ovno'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-ovno/47382/'
+ rtd-token: 'd393a62c6ee0b06979d0bb28f0b43e88208ce2c1'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/ovsnfv/ovsnfv-rtd-jobs.yaml b/jjb/ovsnfv/ovsnfv-rtd-jobs.yaml
new file mode 100644
index 000000000..ecbcecae3
--- /dev/null
+++ b/jjb/ovsnfv/ovsnfv-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: ovsnfv-rtd
+ project: ovsnfv
+ project-name: ovsnfv
+
+ gerrit-skip-vote: true
+ project-pattern: 'ovsnfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-ovsnfv/47383/'
+ rtd-token: '1faa400aa3da4eca3c6018f8ed0e48a33fa66a00'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/parser/parser-rtd-jobs.yaml b/jjb/parser/parser-rtd-jobs.yaml
new file mode 100644
index 000000000..df880f22b
--- /dev/null
+++ b/jjb/parser/parser-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: parser-rtd
+ project: parser
+ project-name: parser
+
+ project-pattern: 'parser'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-parser/47384/'
+ rtd-token: '10223af1183fc8bdc191932045d82a0c1d7c874a'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/pharos/pharos-rtd-jobs.yaml b/jjb/pharos/pharos-rtd-jobs.yaml
new file mode 100644
index 000000000..60bcd8a00
--- /dev/null
+++ b/jjb/pharos/pharos-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: pharos-rtd
+ project: pharos
+ project-name: pharos
+
+ project-pattern: 'pharos'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-pharos/47385/'
+ rtd-token: '12cb789478d0c3577fb62c610232b3113d3a16ad'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/pharos/pharos-tools.yml b/jjb/pharos/pharos-tools.yml
new file mode 100644
index 000000000..ac5d1956e
--- /dev/null
+++ b/jjb/pharos/pharos-tools.yml
@@ -0,0 +1,51 @@
+---
+- project:
+ name: pharos-dashboard-jobs
+
+ project: 'pharos-tools'
+
+ disabled: false
+
+ jobs:
+ - '{project}-verify-basic'
+ - 'pharos-dashboard-backup'
+ - 'pharos-dashboard-deploy'
+
+- job-template:
+ name: 'pharos-dashboard-backup'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - 'pharos-dashboard-defaults'
+
+ triggers:
+ - timed: '@daily'
+
+ builders:
+ - shell:
+ !include-raw: shell/backup-dashboard.sh
+
+- job-template:
+ name: 'pharos-dashboard-deploy'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: 'master'
+ - 'pharos-dashboard-defaults'
+
+ scm:
+ - git-scm-gerrit
+
+ triggers:
+ - gerrit-trigger-change-merged:
+ branch: 'master'
+ project: '{project}'
+ files: 'dashboard/docker-compose.yml'
+
+ builders:
+ - shell:
+ !include-raw: shell/deploy-dashboard.sh
diff --git a/jjb/pharos/pharos.yaml b/jjb/pharos/pharos.yaml
index c1bb1ba0e..0b5119657 100644
--- a/jjb/pharos/pharos.yaml
+++ b/jjb/pharos/pharos.yaml
@@ -4,85 +4,8 @@
project:
- '{name}'
- - '{name}-tools'
disabled: false
jobs:
- '{project}-verify-basic'
- - 'backup-pharos-dashboard'
- - 'deploy-pharos-dashboard':
- disabled: true
-
-- job-template:
- name: 'backup-pharos-dashboard'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - 'pharos-dashboard-defaults'
-
- triggers:
- - timed: '@daily'
-
- builders:
- - shell: |
- BACKUP_DIR=$HOME/backups/
- TMP_DIR=$HOME/tmp/
- mkdir -p $BACKUP_DIR
- echo "-- $(date +%Y%m%d) --"
- echo "Backing up Pharos Dashboard data..."
- sudo docker run --rm \
- -v pharos-data:/pharos-data:ro \
- -v $TMP_DIR:/backup \
- alpine \
- tar -czf /backup/pharos-dashboard-db-$(date +%Y%m%d).tar.gz -C /pharos-data ./
- sudo mv $TMP_DIR/pharos-dashboard-db-$(date +%Y%m%d).tar.gz $BACKUP_DIR
- sudo chown $USER:$USER $BACKUP_DIR/pharos-dashboard-db-$(date +%Y%m%d).tar.gz
- echo "...complete"
-
-- job-template:
- name: 'deploy-pharos-dashboard'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: 'pharos-tools'
- branch: 'master'
- - 'pharos-dashboard-defaults'
-
- scm:
- - git:
- choosing-strategy: 'gerrit'
- refspec: '$GERRIT_REFSPEC'
- branches:
- - 'origin/$BRANCH'
- timeout: 15
- credentials-id: '$SSH_CREDENTIAL_ID'
- url: '$GIT_BASE'
- skip-tag: true
- wipe-workspace: false
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - ref-updated-event
- - comment-added-contains-event:
- comment-contains-value: '^redeploy$'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: 'pharos-tools'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/master'
-
- builders:
- - shell: |
- cp $HOME/config.env $WORKSPACE/dashboard
- cp $HOME/rsa.pub $WORKSPACE/dashboard
- cp $HOME/rsa.pem $WORKSPACE/dashboard
- cd $WORKSPACE/dashboard
- sudo docker-compose build
- sudo docker-compose up -d
diff --git a/jjb/pharos/shell/backup-dashboard.sh b/jjb/pharos/shell/backup-dashboard.sh
new file mode 100644
index 000000000..4c1c01500
--- /dev/null
+++ b/jjb/pharos/shell/backup-dashboard.sh
@@ -0,0 +1,28 @@
+#!/bin/bash -eux
+##############################################################################
+# Copyright (c) 2018 Linux Foundation 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
+##############################################################################
+
+BACKUP_DIR=$HOME/backups
+DATE=$(date +%Y%m%d)
+TAR_FILE=pharos-dashboard-db-$DATE.tar.tz
+
+mkdir -p $BACKUP_DIR
+echo "-- $DATE --"
+echo "--> Backing up Pharos Dashboard"
+
+docker run --rm \
+ -v pharos-data:/pharos-data:ro \
+ -v $BACKUP_DIR:/backup \
+ alpine \
+ tar -czf /backup/$TAR_FILE -C /pharos-data ./
+
+/usr/local/bin/gsutil cp $BACKUP_DIR/$TAR_FILE \
+ gs://opnfv-backups/pharos-dashboard/ && rm $BACKUP_DIR/$TAR_FILE
+
+echo "--> Pharos dashboard backup complete"
diff --git a/jjb/pharos/shell/deploy-dashboard.sh b/jjb/pharos/shell/deploy-dashboard.sh
new file mode 100644
index 000000000..46a79c326
--- /dev/null
+++ b/jjb/pharos/shell/deploy-dashboard.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -eux
+##############################################################################
+# Copyright (c) 2018 Linux Foundation 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
+##############################################################################
+cp $HOME/config.env $WORKSPACE/dashboard
+cd $WORKSPACE/dashboard
+
+docker-compose pull
+docker-compose up -d
+
+# Copy JIRA keys into web container
+WEB_CONTAINER="$(docker ps --filter 'name=dg01' -q)"
+docker cp $HOME/rsa.pub $WEB_CONTAINER:/pharos_dashboard/account/
+docker cp $HOME/rsa.pem $WEB_CONTAINER:/pharos_dashboard/account/
diff --git a/jjb/promise/promise-rtd-jobs.yaml b/jjb/promise/promise-rtd-jobs.yaml
new file mode 100644
index 000000000..d627326ff
--- /dev/null
+++ b/jjb/promise/promise-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: promise-rtd
+ project: promise
+ project-name: promise
+
+ project-pattern: 'promise'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-promise/47386/'
+ rtd-token: 'e689330ddc9401d83dd26efbe26a55a6ecd33a0d'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/qtip/qtip-experimental-jobs.yaml b/jjb/qtip/qtip-experimental-jobs.yaml
index 4e79c0553..9f72954a2 100644
--- a/jjb/qtip/qtip-experimental-jobs.yaml
+++ b/jjb/qtip/qtip-experimental-jobs.yaml
@@ -12,7 +12,7 @@
- master:
branch: '{stream}'
gs-pathname: ''
- disabled: false
+ disabled: true
pod:
- zte-virtual5:
diff --git a/jjb/qtip/qtip-rtd-jobs.yaml b/jjb/qtip/qtip-rtd-jobs.yaml
new file mode 100644
index 000000000..4af5997ba
--- /dev/null
+++ b/jjb/qtip/qtip-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: qtip-rtd
+ project: qtip
+ project-name: qtip
+
+ gerrit-skip-vote: true
+ project-pattern: 'qtip'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-qtip/47387/'
+ rtd-token: 'eb407b024fbe12c416d012f48db866caf5fbab7c'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/qtip/qtip-validate-jobs.yaml b/jjb/qtip/qtip-validate-jobs.yaml
index 0fc623c74..f7d66dfdd 100644
--- a/jjb/qtip/qtip-validate-jobs.yaml
+++ b/jjb/qtip/qtip-validate-jobs.yaml
@@ -14,11 +14,13 @@
branch: '{stream}'
gs-pathname: ''
docker-tag: latest
+ disabled: false
fraser: &fraser
stream: fraser
branch: 'stable/{stream}'
gs-pathname: '{stream}'
docker-tag: 'stable'
+ disabled: false
# -------------------------------
# JOB VARIABLES
@@ -27,16 +29,19 @@
- compute:
installer: apex
pod: zte-virtual5
+ disabled: true
sut: node
<<: *master
- storage:
installer: apex
pod: zte-virtual5
+ disabled: true
sut: ''
<<: *master
- network:
installer: apex
pod: zte-virtual5
+ disabled: true
sut: ''
<<: *master
- compute:
@@ -47,11 +52,13 @@
- compute:
installer: apex
pod: zte-virtual5
+ disabled: true
sut: node
<<: *fraser
- storage:
installer: apex
pod: zte-virtual5
+ disabled: true
sut: ''
<<: *fraser
- compute:
@@ -72,7 +79,7 @@
################################
- job-template:
name: 'qtip-{qpi}-{installer}-{pod}-{stream}'
- disabled: false
+ disabled: '{obj:disabled}'
parameters:
- project-parameter:
diff --git a/jjb/releng/compass4nfv-docker.yaml b/jjb/releng/compass4nfv-docker.yaml
index 5fbb37ca2..2eb2a207c 100644
--- a/jjb/releng/compass4nfv-docker.yaml
+++ b/jjb/releng/compass4nfv-docker.yaml
@@ -15,10 +15,17 @@
- euphrates:
branch: 'stable/{stream}'
disabled: true
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
arch_tag:
- 'amd64':
slave_label: 'opnfv-build-ubuntu'
+ docker_file: 'Dockerfile'
+ - 'arm64':
+ slave_label: 'opnfv-build-ubuntu-arm'
+ docker_file: 'Dockerfile-arm64'
# yamllint disable rule:key-duplicates
image:
@@ -39,7 +46,15 @@
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
@@ -47,6 +62,7 @@
jobs:
- "compass-docker-{stream}"
- "compass-{image}-build-{arch_tag}-{stream}"
+ - "compass-{image}-manifest-{stream}"
########################
# job templates
@@ -63,6 +79,7 @@
project: '{project}'
branch: '{branch}'
slave_label: 'opnfv-build-ubuntu'
+ docker_file: 'Dockerfile'
arch_tag: 'amd64'
properties:
@@ -84,6 +101,14 @@
projects:
- name: 'compass-tasks-base-build-amd64-{stream}'
<<: *build-job-settings
+ - name: 'compass-tasks-base-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish compass-tasks-base manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'compass-tasks-base-manifest-{stream}'
+ <<: *manifest-job-settings
- multijob:
name: 'build all compass images'
condition: SUCCESSFUL
@@ -101,9 +126,38 @@
<<: *build-job-settings
- name: 'compass-tasks-osa-build-amd64-{stream}'
<<: *build-job-settings
+ - name: 'compass-cobbler-build-arm64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-db-build-arm64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-deck-build-arm64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-tasks-build-arm64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-tasks-k8s-build-arm64-{stream}'
+ <<: *build-job-settings
+ - name: 'compass-tasks-osa-build-arm64-{stream}'
+ <<: *build-job-settings
+ - multijob:
+ name: 'publish all manifests'
+ execution-type: PARALLEL
+ projects:
+ - name: 'compass-cobbler-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'compass-db-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'compass-deck-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'compass-tasks-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'compass-tasks-k8s-manifest-{stream}'
+ <<: *manifest-job-settings
+ - name: 'compass-tasks-osa-manifest-{stream}'
+ <<: *manifest-job-settings
publishers:
- 'compass-amd64-recipients'
+ - 'compass-arm64-recipients'
- job-template:
name: 'compass-{image}-build-{arch_tag}-{stream}'
@@ -113,6 +167,7 @@
project: '{project}'
branch: '{branch}'
slave_label: '{slave_label}'
+ docker_file: '{docker_file}'
arch_tag: '{arch_tag}'
- string:
name: DOCKER_REPO_NAME
@@ -128,6 +183,33 @@
- shell:
!include-raw-escape: ./opnfv-docker.sh
+- job-template:
+ name: 'compass-{image}-manifest-{stream}'
+ disabled: '{obj:disabled}'
+ parameters:
+ - compass-job-parameters:
+ project: '{project}'
+ branch: '{branch}'
+ slave_label: 'opnfv-build-ubuntu'
+ docker_file: 'Dockerfile'
+ arch_tag: 'amd64'
+ builders:
+ - shell: |
+ #!/bin/bash -ex
+ case "{stream}" in
+ "master")
+ sudo manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template opnfv/compass-{image}:ARCH-latest \
+ --target opnfv/compass-{image}:latest ;;
+ *)
+ sudo manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template opnfv/compass-{image}:ARCH-stable \
+ --target opnfv/compass-{image}:{stream} ;;
+ esac
+ exit $?
+
# parameter macro
- parameter:
name: compass-job-parameters
@@ -139,6 +221,8 @@
name: SLAVE_LABEL
default: '{slave_label}'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
@@ -157,11 +241,11 @@
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"
+ default: '{docker_file}'
description: "Dockerfile to use for creating the image."
- string:
name: ARCH_TAG
- default: ""
+ default: "{arch_tag}"
description: "If set, this value will be added to the docker image tag as a prefix"
- string:
name: PROJECT
@@ -174,7 +258,12 @@
publishers:
- email:
recipients: >
- chigang@huawei.com
- huangxiangyui5@huawei.com
- xueyifei@huawei.com
+ huangxiangyu5@huawei.com
wutianwei1@huawei.com
+
+- publisher:
+ name: 'compass-arm64-recipients'
+ publishers:
+ - email:
+ recipients: >
+ yibo.cai@arm.com
diff --git a/jjb/releng/opnfv-docker-arm.yaml b/jjb/releng/opnfv-docker-arm.yaml
index 9066b419e..7e87c5f0d 100644
--- a/jjb/releng/opnfv-docker-arm.yaml
+++ b/jjb/releng/opnfv-docker-arm.yaml
@@ -19,6 +19,10 @@
stream: fraser
branch: 'stable/{stream}'
disabled: false
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
+ disabled: false
dovetail-arm-receivers: &dovetail-arm-receivers
receivers: >
cristina.pauna@enea.com
@@ -97,39 +101,39 @@
dockerdir: 'docker/storperf-master'
docker_repo_name: 'opnfv/storperf-master'
arch_tag: 'aarch64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-arm-receivers
- 'storperf-graphite':
project: 'storperf'
dockerdir: 'docker/storperf-graphite'
docker_repo_name: 'opnfv/storperf-graphite'
arch_tag: 'aarch64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-arm-receivers
- 'storperf-httpfrontend':
project: 'storperf'
dockerdir: 'docker/storperf-httpfrontend'
docker_repo_name: 'opnfv/storperf-httpfrontend'
arch_tag: 'aarch64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-arm-receivers
- 'storperf-reporting':
project: 'storperf'
dockerdir: 'docker/storperf-reporting'
docker_repo_name: 'opnfv/storperf-reporting'
arch_tag: 'aarch64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-arm-receivers
- 'storperf-swaggerui':
project: 'storperf'
dockerdir: 'docker/storperf-swaggerui'
docker_repo_name: 'opnfv/storperf-swaggerui'
arch_tag: 'aarch64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-arm-receivers
- 'yardstick':
project: 'yardstick'
- <<: *fraser
+ <<: *gambia
<<: *yardstick-arm-receivers
# yamllint enable rule:key-duplicates
diff --git a/jjb/releng/opnfv-docker.sh b/jjb/releng/opnfv-docker.sh
index 70baf16d9..e64764128 100644
--- a/jjb/releng/opnfv-docker.sh
+++ b/jjb/releng/opnfv-docker.sh
@@ -20,12 +20,20 @@ echo
function remove_containers_images()
{
# Remove previous running containers if exist
- if [[ -n "$(docker ps -a | grep $DOCKER_REPO_NAME)" ]]; then
+ #
+ # $ docker ps -a
+ # CONTAINER ID IMAGE COMMAND ...
+ # 6a796ed40b8e opnfv/compass-tasks:latest "/bin/bash" ...
+ # 99fcb59f4787 opnfv/compass-tasks-base:latest "/bin/bash" ...
+ # cc5eee16b995 opnfv/compass-tasks-k8s "/bin/bash" ...
+ #
+ # Cut image name by leading space and ending space or colon(tag)
+ if [[ -n "$(docker ps -a | grep " $DOCKER_REPO_NAME[ :]")" ]]; then
echo "Removing existing $DOCKER_REPO_NAME containers..."
- docker ps -a | grep $DOCKER_REPO_NAME | awk '{print $1}' | xargs docker rm -f
+ docker ps -a | grep " $DOCKER_REPO_NAME[ :]" | awk '{print $1}' | xargs docker rm -f
t=60
# Wait max 60 sec for containers to be removed
- while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep $DOCKER_REPO_NAME)" ]]; do
+ while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep " $DOCKER_REPO_NAME[ :]")" ]]; do
sleep 1
let t=t-1
done
@@ -33,12 +41,20 @@ function remove_containers_images()
# Remove existing images if exist
- if [[ -n "$(docker images | grep $DOCKER_REPO_NAME)" ]]; then
+ #
+ # $ docker images
+ # REPOSITORY TAG IMAGE ID ...
+ # opnfv/compass-tasks latest 6501569fd328 ...
+ # opnfv/compass-tasks-base latest 8764fe29c434 ...
+ # opnfv/compass-tasks-k8s latest 61094cac9e65 ...
+ #
+ # Cut image name by start of line and ending space
+ if [[ -n "$(docker images | grep "^$DOCKER_REPO_NAME ")" ]]; then
echo "Docker images to remove:"
- docker images | head -1 && docker images | grep $DOCKER_REPO_NAME
- image_ids=($(docker images | grep $DOCKER_REPO_NAME | awk '{print $3}'))
+ docker images | head -1 && docker images | grep "^$DOCKER_REPO_NAME "
+ image_ids=($(docker images | grep "^$DOCKER_REPO_NAME " | awk '{print $3}'))
for id in "${image_ids[@]}"; do
- if [[ -n "$(docker images|grep $DOCKER_REPO_NAME|grep $id)" ]]; then
+ if [[ -n "$(docker images|grep "^$DOCKER_REPO_NAME "|grep $id)" ]]; then
echo "Removing docker image $DOCKER_REPO_NAME:$id..."
docker rmi -f $id
fi
diff --git a/jjb/releng/opnfv-docker.yaml b/jjb/releng/opnfv-docker.yaml
index b7d1ce66f..17235b37d 100644
--- a/jjb/releng/opnfv-docker.yaml
+++ b/jjb/releng/opnfv-docker.yaml
@@ -23,9 +23,22 @@
stream: fraser
branch: 'stable/{stream}'
disabled: false
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
+ disabled: false
+ pharos-tools-receivers: &pharos_tools_receivers
+ receivers: >
+ pberberian@iol.unh.edu
+ sbergeron@iol.unh.edu
storperf-receivers: &storperf-receivers
receivers: >
mark.beierl@emc.com
+ yardstick-receivers: &yardstick-receivers
+ receivers: >
+ limingjiang@huawei.com
+ rexlee8776@gmail.com
+ emma.l.foley@intel.com
other-receivers: &other-receivers
receivers: ''
@@ -48,6 +61,11 @@
dockerdir: 'docker/barometer-collectd'
<<: *master
<<: *other-receivers
+ - 'barometer-dma':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-dma'
+ <<: *master
+ <<: *other-receivers
- 'barometer-grafana':
project: 'barometer'
dockerdir: 'docker/barometer-grafana'
@@ -107,6 +125,60 @@
dockerfile: 'Dockerfile'
<<: *master
<<: *other-receivers
+ - 'clover-controller':
+ project: 'clover'
+ dockerdir: 'clover/controller'
+ dockerfile: 'docker/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-collector':
+ project: 'clover'
+ dockerdir: 'clover/collector'
+ dockerfile: 'docker/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-jmeter-master':
+ project: 'clover'
+ dockerdir: 'clover/tools/jmeter'
+ dockerfile: 'jmeter-master/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-jmeter-slave':
+ project: 'clover'
+ dockerdir: 'clover/tools/jmeter'
+ dockerfile: 'jmeter-slave/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-sample-app':
+ project: 'clover'
+ dockerdir: 'samples/scenarios/sample_app'
+ dockerfile: 'Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-ns-modsecurity-crs':
+ project: 'clover'
+ dockerdir: 'samples/services/modsecurity/docker'
+ dockerfile: 'Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-spark':
+ project: 'clover'
+ dockerdir: 'clover/spark/docker/clover-spark'
+ dockerfile: 'Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-spark-submit':
+ project: 'clover'
+ dockerdir: 'clover/spark/docker/spark-submit'
+ dockerfile: 'Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'clover-clovisor':
+ project: 'clover'
+ dockerdir: 'clover/clovisor'
+ dockerfile: 'Dockerfile'
+ <<: *master
+ <<: *other-receivers
- 'cperf':
project: 'cperf'
<<: *master
@@ -115,10 +187,32 @@
project: 'dovetail'
<<: *master
<<: *other-receivers
+ - 'dovetail-webportal-api':
+ project: 'dovetail-webportal'
+ dockerfile: 'Dockerfile.api'
+ <<: *master
+ <<: *other-receivers
+ - 'dovetail-webportal-web':
+ project: 'dovetail-webportal'
+ dockerfile: 'Dockerfile.web'
+ <<: *master
+ <<: *other-receivers
- 'nfvbench':
project: 'nfvbench'
<<: *master
<<: *other-receivers
+ - 'pharos-tools-laas-dashboard':
+ project: 'pharos-tools'
+ dockerdir: 'dashboard'
+ dockerfile: 'web/Dockerfile'
+ <<: *master
+ <<: *pharos_tools_receivers
+ - 'pharos-tools-laas-celery':
+ project: 'pharos-tools'
+ dockerdir: 'dashboard'
+ dockerfile: 'worker/Dockerfile'
+ <<: *master
+ <<: *pharos_tools_receivers
- 'qtip':
project: 'qtip'
dockerdir: '.'
@@ -163,8 +257,49 @@
- 'yardstick':
project: 'yardstick'
<<: *master
- <<: *other-receivers
+ <<: *yardstick-receivers
+ - 'yardstick-image-k8s':
+ project: 'yardstick'
+ dockerdir: 'docker/k8s'
+ <<: *master
+ <<: *yardstick-receivers
+
# projects with jobs for euphrates
+ - 'barometer-dma':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-dma'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-collectd':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-collectd'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-grafana':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-grafana'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-influxdb':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-influxdb'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-kafka':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-kafka'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-ves':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-ves'
+ <<: *gambia
+ <<: *other-receivers
+ - 'barometer-snmp':
+ project: 'barometer'
+ dockerdir: 'docker/barometer-snmp'
+ <<: *gambia
+ <<: *other-receivers
- 'bottlenecks':
project: 'bottlenecks'
<<: *euphrates
@@ -183,41 +318,36 @@
project: 'storperf'
dockerdir: 'docker/storperf-master'
arch_tag: 'x86_64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-receivers
- 'storperf-graphite':
project: 'storperf'
dockerdir: 'docker/storperf-graphite'
arch_tag: 'x86_64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-receivers
- 'storperf-httpfrontend':
project: 'storperf'
dockerdir: 'docker/storperf-httpfrontend'
arch_tag: 'x86_64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-receivers
- 'storperf-reporting':
project: 'storperf'
dockerdir: 'docker/storperf-reporting'
arch_tag: 'x86_64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-receivers
- 'storperf-swaggerui':
project: 'storperf'
dockerdir: 'docker/storperf-swaggerui'
arch_tag: 'x86_64'
- <<: *fraser
+ <<: *gambia
<<: *storperf-receivers
- 'yardstick':
project: 'yardstick'
- <<: *fraser
- <<: *other-receivers
- # projects with jobs for danube
- - 'dovetail':
- project: 'dovetail'
- <<: *danube
- <<: *other-receivers
+ <<: *gambia
+ <<: *yardstick-receivers
# projects with jobs for fraser
- 'bottlenecks':
project: 'bottlenecks'
@@ -253,6 +383,10 @@
dockerfile: 'Dockerfile'
<<: *fraser
<<: *other-receivers
+ - 'dovetail':
+ project: 'dovetail'
+ <<: *fraser
+ <<: *other-receivers
# yamllint enable rule:key-duplicates
jobs:
- "{dockerrepo}-docker-build-push-{stream}"
diff --git a/jjb/releng/opnfv-repo-archiver.sh b/jjb/releng/opnfv-repo-archiver.sh
index 6fa0aef50..b7ff3baa0 100644
--- a/jjb/releng/opnfv-repo-archiver.sh
+++ b/jjb/releng/opnfv-repo-archiver.sh
@@ -29,7 +29,7 @@ for PROJECT in "${PROJECT_LIST[@]}"; do
git clone "https://gerrit.opnfv.org/gerrit/$PROJECT.git" $CLONE_PATH/$PROJECT
else
pushd "$CLONE_PATH/$PROJECT" &>/dev/null
- git pull -f
+ git pull -f origin master
popd &> /dev/null
fi
diff --git a/jjb/releng/opnfv-utils.yaml b/jjb/releng/opnfv-utils.yaml
index 19fb4b5af..05ffd51d9 100644
--- a/jjb/releng/opnfv-utils.yaml
+++ b/jjb/releng/opnfv-utils.yaml
@@ -28,7 +28,6 @@
- arm-build3
- arm-build4
- arm-build5
- - arm-build6
- ericsson-build3
- ericsson-build4
- lf-build2
@@ -41,6 +40,7 @@
# yamllint disable rule:line-length
- shell: |
#!/bin/bash
+ sudo systemctl restart docker
(docker ps -q; docker ps -aq) | sort | uniq -u | xargs --no-run-if-empty docker rm
docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi
@@ -61,7 +61,7 @@
name: SLAVE_NAME
description: Where to create the archive
default-slaves:
- - master
+ - lf-build2
allowed-multiselect: false
ignore-offline-nodes: true
@@ -82,6 +82,7 @@
reply-to: >
helpdesk@opnfv.org
recipients: >
+ tbramwell@linuxfoundation.org
swinslow@linuxfoundation.org
@@ -129,6 +130,8 @@
default-slaves:
- lf-build1
- lf-build2
+ - lf-build3
+ - ericsson-build3
- ericsson-build4
allowed-multiselect: true
ignore-offline-nodes: true
@@ -143,6 +146,8 @@
- timed: '@midnight'
builders:
+ - description-setter:
+ description: '$NODE_NAME'
- install-ansible
- run-ansible-build-server-playbook
@@ -163,6 +168,7 @@
sudo apt-get -y install ansible
fi
+
- builder:
name: run-ansible-build-server-playbook
builders:
diff --git a/jjb/releng/releng-ci-jobs.yaml b/jjb/releng/releng-ci-jobs.yaml
deleted file mode 100644
index f9a2bc232..000000000
--- a/jjb/releng/releng-ci-jobs.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- project:
- name: releng-builder-jobs
- project: 'releng'
- project-name: 'releng'
-
- build-timeout: 60
- build-node: 'lf-build1'
- gerrit-server-name: 'gerrit.opnfv.org'
- jenkins-ssh-credential: 'd42411ac011ad6f3dd2e1fa34eaa5d87f910eb2e'
- jjb-version: '2.0.3'
- lftools-version: '<1.0.0'
-
- jobs:
- - '{project-name}-ci-jobs'
diff --git a/jjb/releng/releng-release-create-branch.sh b/jjb/releng/releng-release-create-branch.sh
index 92be0e637..663ff19e7 100644
--- a/jjb/releng/releng-release-create-branch.sh
+++ b/jjb/releng/releng-release-create-branch.sh
@@ -26,7 +26,20 @@ STREAM=${STREAM:-'nostream'}
RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
for release_file in $RELEASE_FILES; do
- python releases/scripts/create_branch.py -f $release_file
+
+ while read -r repo branch ref; do
+
+ echo "$repo" "$branch" "$ref"
+ branches="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/heads/$branch")"
+
+ if ! [ -z "$branches" ]; then
+ echo "refs/heads/$branch already exists at $ref ($branches)"
+ else
+ ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+ fi
+
+ done < <(python releases/scripts/repos.py -b -f "$release_file")
+
python releases/scripts/create_jobs.py -f $release_file
NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
if [ -n "$NEW_FILES" ]; then
diff --git a/jjb/releng/releng-release-verify.sh b/jjb/releng/releng-release-create-venv.sh
index c1262e2c9..de585fdb3 100644
--- a/jjb/releng/releng-release-verify.sh
+++ b/jjb/releng/releng-release-create-venv.sh
@@ -7,21 +7,12 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-set -xe
+set -e -o pipefail
+echo "---> Create virtualenv"
-# Activate virtualenv, supressing shellcheck warning
-# shellcheck source=/dev/null
-. $WORKSPACE/venv/bin/activate
+sudo -H pip install virtualenv
+virtualenv $WORKSPACE/venv
+# shellcheck source=$WORKSPACE/venv/bin/activate disable=SC1091
+source $WORKSPACE/venv/bin/activate
+pip install --upgrade pip
pip install -r releases/scripts/requirements.txt
-
-STREAM=${STREAM:-'nostream'}
-RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
-
-# TODO: The create_branch.py should be refactored so it can be used here
-# to verify the commit exists that is being added, along with
-# jjb/<project>
-for release_file in $RELEASE_FILES; do
- python releases/scripts/verify_schema.py \
- -s releases/schema.yaml \
- -y $release_file
-done
diff --git a/jjb/releng/releng-release-jobs.yaml b/jjb/releng/releng-release-jobs.yaml
index e31320b81..3136d7855 100644
--- a/jjb/releng/releng-release-jobs.yaml
+++ b/jjb/releng/releng-release-jobs.yaml
@@ -10,8 +10,12 @@
- project:
name: releng-release-jobs
+ build-node: 'opnfv-build'
+
stream:
- fraser
+ - gambia
+ - hunter
jobs:
- 'releng-release-{stream}-verify'
@@ -23,6 +27,7 @@
name: 'releng-release-{stream}-verify'
parameters:
+ - '{build-node}-defaults'
- stream-parameter:
stream: '{stream}'
- project-parameter:
@@ -59,9 +64,9 @@
pattern: 'releases/scripts/verify_schema.py'
builders:
- - create-virtualenv
- - shell:
- !include-raw-escape: releng-release-verify.sh
+ - shell: !include-raw-escape:
+ - releng-release-create-venv.sh
+ - releng-release-tagging.sh
publishers:
- email-jenkins-admins-on-failure
@@ -82,6 +87,12 @@
- project-parameter:
project: '{project}'
branch: 'master'
+ # Override GIT_URL so we can send patches back to Gerrit and
+ # modify repos
+ - string:
+ name: GIT_URL
+ default: ssh://$USER@gerrit.opnfv.org:29418/
+ description: 'Git URL to use on this Jenkins Slave'
scm:
- git-scm-gerrit
@@ -93,9 +104,10 @@
files: 'releases/{stream}/*'
builders:
- - create-virtualenv
- - shell:
- !include-raw-escape: releng-release-create-branch.sh
+ - shell: !include-raw-escape:
+ - releng-release-create-venv.sh
+ - releng-release-tagging.sh
+ - releng-release-create-branch.sh
publishers:
- email-jenkins-admins-on-failure
@@ -107,13 +119,3 @@
name: STREAM
default: '{stream}'
description: "OPNFV Stable Stream"
-
-- builder:
- name: create-virtualenv
- builders:
- - shell: |
- #!/bin/bash
- sudo pip install virtualenv
- virtualenv $WORKSPACE/venv
- . $WORKSPACE/venv/bin/activate
- pip install --upgrade pip
diff --git a/jjb/releng/releng-release-tagging.sh b/jjb/releng/releng-release-tagging.sh
new file mode 100644
index 000000000..f8cf9c8ea
--- /dev/null
+++ b/jjb/releng/releng-release-tagging.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+set -e -o pipefail
+
+GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit}
+STREAM=${STREAM:-'nostream'}
+RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+
+echo "--> Verifying $RELEASE_FILES."
+for release_file in $RELEASE_FILES; do
+ # Verify the release file schema
+ python releases/scripts/verify_schema.py \
+ -s releases/schema.yaml \
+ -y $release_file
+
+ # Verify tag for each repo exist and are attached to commits on stable-branch
+ while read -r repo tag ref
+ do
+ echo "--> Cloning $repo"
+ if [ ! -d $repo ]; then
+ git clone $GIT_URL/$repo.git $repo
+ fi
+ pushd $repo &> /dev/null
+
+ echo "--> Checking for tag: $tag"
+ if ! (git tag -l | grep $tag &> /dev/null); then
+ echo "$tag does not exist"
+ TAG_EXISTS=false
+ else
+ git cat-file commit $tag
+ TAG_EXISTS=true
+ fi
+
+ echo "--> Checking if $ref is on stable/$STREAM"
+ if ! (git branch -a --contains $ref | grep "stable/$STREAM"); then
+ echo "--> ERROR: $ref for $repo is not on stable/$STREAM!"
+ # If the tag exists but is on the wrong ref, there's nothing
+ # we can do. But if the tag neither exists nor is on the
+ # correct branch we need to fail the verification.
+ if [ $TAG_EXISTS = false ]; then
+ exit 1
+ fi
+ else
+ if [[ $TAG_EXISTS = false && "$JOB_NAME" =~ "merge" ]]; then
+ # If the tag doesn't exist and we're in a merge job,
+ # everything has been verified up to this point and we
+ # are ready to create the tag.
+ git config --global user.name "jenkins-ci"
+ git config --global user.email "jenkins-opnfv-ci@opnfv.org"
+ echo "--> Creating $tag tag for $repo at $ref"
+ git tag -am "$tag" $tag $ref
+ echo "--> Pushing tag"
+ git push origin $tag
+ else
+ # For non-merge jobs just output the ref info.
+ git show -s --format="%h %s %d" $ref
+ fi
+ fi
+
+ popd &> /dev/null
+ echo "--> Done verifing $repo"
+ done < <(python releases/scripts/repos.py -f $release_file)
+done
diff --git a/jjb/releng/releng-rtd-jobs.yaml b/jjb/releng/releng-rtd-jobs.yaml
new file mode 100644
index 000000000..f7c960335
--- /dev/null
+++ b/jjb/releng/releng-rtd-jobs.yaml
@@ -0,0 +1,16 @@
+---
+- project:
+ name: releng-builder-jobs
+ project: 'releng'
+ project-name: 'releng'
+ jjb-version: '2.5.0'
+
+ build-timeout: 60
+
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-releng/38594/'
+ rtd-token: '291c6a0109493b4457e566d06141212452c65784'
+ project-pattern: 'releng'
+
+ jobs:
+ - '{project-name}-ci-jobs'
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/releng/testresults-automate.yaml b/jjb/releng/testresults-automate.yaml
index 01fbe0c6d..3a9beadfe 100644
--- a/jjb/releng/testresults-automate.yaml
+++ b/jjb/releng/testresults-automate.yaml
@@ -28,6 +28,8 @@
name: SLAVE_LABEL
default: 'testresults'
description: 'Slave label on Jenkins'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- project-parameter:
project: 'releng-testresults'
branch: 'master'
diff --git a/jjb/samplevnf/samplevnf-rtd-jobs.yaml b/jjb/samplevnf/samplevnf-rtd-jobs.yaml
new file mode 100644
index 000000000..9c09c827e
--- /dev/null
+++ b/jjb/samplevnf/samplevnf-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: samplevnf-rtd
+ project: samplevnf
+ project-name: samplevnf
+
+ gerrit-skip-vote: true
+ project-pattern: 'samplevnf'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-samplevnf/47390/'
+ rtd-token: '133bd533bd10428c549c17967469b25e847f42f4'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/sdnvpn/sdnvpn-rtd-jobs.yaml b/jjb/sdnvpn/sdnvpn-rtd-jobs.yaml
new file mode 100644
index 000000000..a01544fbd
--- /dev/null
+++ b/jjb/sdnvpn/sdnvpn-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: sdnvpn-rtd
+ project: sdnvpn
+ project-name: sdnvpn
+
+ project-pattern: 'sdnvpn'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-sdnvpn/47391/'
+ rtd-token: '1efdc48a9819be55a28137937674f1f744d02fe0'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/securedlab/check-jinja2.yaml b/jjb/securedlab/check-jinja2.yaml
deleted file mode 100644
index f7a7941dc..000000000
--- a/jjb/securedlab/check-jinja2.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-########################
-# Job configuration to validate jinja2 files
-########################
-- project:
-
- name: validate-templates
-
- project: 'securedlab'
-
- jobs:
- - 'validate-jinja2-templates-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- disabled: false
- - fraser:
- branch: 'stable/{stream}'
- disabled: false
-
-########################
-# job templates
-########################
-
-- job-template:
- name: 'validate-jinja2-templates-{stream}'
-
- disabled: '{obj:disabled}'
-
- concurrent: true
-
- parameters:
- - project-parameter:
- project: $GERRIT_PROJECT
- branch: '{branch}'
- - node:
- name: SLAVE_NAME
- description: Slave to execute jnija template test
- default-slaves:
- - lf-build1
- allowed-multiselect: true
- ignore-offline-nodes: true
-
- 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: 'REG_EXP'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- file-paths:
- - compare-type: ANT
- pattern: '**/*.yaml'
- - compare-type: ANT
- pattern: 'check-jinja2.sh'
- skip-vote:
- successful: true
- failed: true
- unstable: true
- notbuilt: true
-
- builders:
- - check-jinja
-
-- builder:
- name: check-jinja
- builders:
- - shell: |
- $WORKSPACE/check-jinja2.sh
diff --git a/jjb/sfc/sfc-project-jobs.yaml b/jjb/sfc/sfc-project-jobs.yaml
index fea792467..31f7aa6f5 100644
--- a/jjb/sfc/sfc-project-jobs.yaml
+++ b/jjb/sfc/sfc-project-jobs.yaml
@@ -16,10 +16,14 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
+ - fraser:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: true
- job-template:
name: 'sfc-verify-{stream}'
@@ -60,14 +64,47 @@
pattern: 'docs/**|.gitignore'
builders:
- - sfc-unit-tests
+ - sfc-unit-tests-and-docs
+
+ publishers:
+ - sfc-unit-tests-and-docs-publisher
################################
# job builders
################################
- builder:
- name: sfc-unit-tests
+ name: sfc-unit-tests-and-docs
builders:
- shell: |
- cd $WORKSPACE && yamllint $(git ls-tree -r HEAD --name-only | egrep 'yml$|yaml$' | egrep -v 'scenarios')
+ #!/bin/bash
+ virtualenv /var/tmp/sfc
+ source /var/tmp/sfc/bin/activate
+ pip install tox
+ cd $WORKSPACE && tox
+
+################################
+# job publishers
+################################
+- publisher:
+ name: 'sfc-unit-tests-and-docs-publisher'
+ publishers:
+ - junit:
+ results: nosetests.xml
+ - cobertura:
+ report-file: "coverage.xml"
+ only-stable: "true"
+ fail-no-reports: "true"
+ health-auto-update: "true"
+ stability-auto-update: "true"
+ zoom-coverage-chart: "true"
+ targets:
+ - files:
+ healthy: 0
+ unhealthy: 0
+ failing: 0
+ - method:
+ healthy: 0
+ unhealthy: 0
+ failing: 0
+ - email-jenkins-admins-on-failure
diff --git a/jjb/sfc/sfc-rtd-jobs.yaml b/jjb/sfc/sfc-rtd-jobs.yaml
new file mode 100644
index 000000000..f7d4c9b08
--- /dev/null
+++ b/jjb/sfc/sfc-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: sfc-rtd
+ project: sfc
+ project-name: sfc
+
+ project-pattern: 'sfc'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-sfc/47392/'
+ rtd-token: 'bc4419f4dded5c816071b042ac32c03ac6108700'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/snaps/snaps-rtd-jobs.yaml b/jjb/snaps/snaps-rtd-jobs.yaml
new file mode 100644
index 000000000..2159c1a8a
--- /dev/null
+++ b/jjb/snaps/snaps-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: snaps-rtd
+ project: snaps
+ project-name: snaps
+
+ project-pattern: 'snaps'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-snaps/47393/'
+ rtd-token: '8fa2d732997534df1e91a87d6dc3ee60bb56508b'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/stor4nfv/stor4nfv-rtd-jobs.yaml b/jjb/stor4nfv/stor4nfv-rtd-jobs.yaml
new file mode 100644
index 000000000..0e03e7b5f
--- /dev/null
+++ b/jjb/stor4nfv/stor4nfv-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: stor4nfv-rtd
+ project: stor4nfv
+ project-name: stor4nfv
+
+ project-pattern: 'stor4nfv'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-stor4nfv/47394/'
+ rtd-token: '9c189b44cf08de75dc06253558cc86ed93982cbb'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/storperf/storperf-daily-jobs.yaml b/jjb/storperf/storperf-daily-jobs.yaml
index fe6aebb11..65e1d3232 100644
--- a/jjb/storperf/storperf-daily-jobs.yaml
+++ b/jjb/storperf/storperf-daily-jobs.yaml
@@ -15,8 +15,8 @@
branch: '{stream}'
gs-pathname: ''
docker-tag: 'latest'
- fraser: &fraser
- stream: fraser
+ gambia: &gambia
+ stream: gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -69,7 +69,7 @@
- baremetal:
slave-label: apex-baremetal-master
installer: apex
- <<: *fraser
+ <<: *gambia
## armband CI PODs
# - armband-baremetal:
# slave-label: armband-baremetal
diff --git a/jjb/storperf/storperf-rtd-jobs.yaml b/jjb/storperf/storperf-rtd-jobs.yaml
new file mode 100644
index 000000000..e8ee7b985
--- /dev/null
+++ b/jjb/storperf/storperf-rtd-jobs.yaml
@@ -0,0 +1,12 @@
+---
+- project:
+ name: storperf-rtd
+ project: storperf
+ project-name: storperf
+
+ project-pattern: 'storperf'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-storperf/47395/'
+ rtd-token: '8a5c04ef90e5f32edc4e805a5018763cd25e9afc'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/storperf/storperf-verify-jobs.yaml b/jjb/storperf/storperf-verify-jobs.yaml
index 4d6b1740a..2acedd7d4 100644
--- a/jjb/storperf/storperf-verify-jobs.yaml
+++ b/jjb/storperf/storperf-verify-jobs.yaml
@@ -13,7 +13,7 @@
gs-pathname: ''
disabled: false
docker-tag: 'latest'
- - fraser: &fraser
+ - gambia: &gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
diff --git a/jjb/storperf/storperf.yaml b/jjb/storperf/storperf.yaml
index fe5784777..993094c87 100644
--- a/jjb/storperf/storperf.yaml
+++ b/jjb/storperf/storperf.yaml
@@ -13,7 +13,7 @@
gs-pathname: ''
disabled: false
docker-tag: 'latest'
- - fraser: &fraser
+ - gambia: &gambia
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
diff --git a/jjb/ves/ves-rtd-jobs.yaml b/jjb/ves/ves-rtd-jobs.yaml
new file mode 100644
index 000000000..67b611baa
--- /dev/null
+++ b/jjb/ves/ves-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: ves-rtd
+ project: ves
+ project-name: ves
+
+ gerrit-skip-vote: true
+ project-pattern: 'ves'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-ves/47396/'
+ rtd-token: 'ea5026fc44841e7721529b95a9ebc1b29950e2ce'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/vnf_forwarding_graph/vnf-forwarding-graph-rtd-jobs.yaml b/jjb/vnf_forwarding_graph/vnf-forwarding-graph-rtd-jobs.yaml
new file mode 100644
index 000000000..69895d101
--- /dev/null
+++ b/jjb/vnf_forwarding_graph/vnf-forwarding-graph-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: vnf-forwarding-graph-rtd
+ project: vnf-forwarding-graph
+ project-name: vnf-forwarding-graph
+
+ gerrit-skip-vote: true
+ project-pattern: 'vnf-forwarding-graph'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-vnf-forwarding-graph/47397/'
+ rtd-token: '5c6fd3d0f49fb88ea4230d6666d94b59fef86e7f'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/vswitchperf/vswitchperf-rtd-jobs.yaml b/jjb/vswitchperf/vswitchperf-rtd-jobs.yaml
new file mode 100644
index 000000000..998124066
--- /dev/null
+++ b/jjb/vswitchperf/vswitchperf-rtd-jobs.yaml
@@ -0,0 +1,21 @@
+---
+- project:
+ name: vswitchperf-rtd
+ project: vswitchperf
+ project-name: vswitchperf
+
+ gerrit-skip-vote: true
+ project-pattern: 'vswitchperf'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-vswitchperf/47398/'
+ rtd-token: '47bbe5675e6cc5a6207fcc9b4db8dac03c27d9de'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/vswitchperf/vswitchperf.yaml b/jjb/vswitchperf/vswitchperf.yaml
index ba0742f3b..9e987fe2e 100644
--- a/jjb/vswitchperf/vswitchperf.yaml
+++ b/jjb/vswitchperf/vswitchperf.yaml
@@ -15,7 +15,11 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -34,7 +38,7 @@
- 'vswitchperf-verify-.*'
- 'vswitchperf-merge-.*'
- 'vswitchperf-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
@@ -75,7 +79,7 @@
- 'vswitchperf-verify-.*'
- 'vswitchperf-merge-.*'
- 'vswitchperf-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
@@ -148,7 +152,7 @@
- 'vswitchperf-verify-.*'
- 'vswitchperf-merge-.*'
- 'vswitchperf-daily-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
diff --git a/jjb/xci/bifrost-periodic-jobs.yaml b/jjb/xci/bifrost-periodic-jobs.yaml
index fbe2e205a..4c61be193 100644
--- a/jjb/xci/bifrost-periodic-jobs.yaml
+++ b/jjb/xci/bifrost-periodic-jobs.yaml
@@ -82,7 +82,7 @@
- '^xci-functest.*'
- '^bifrost-.*periodic.*'
- '^osa-.*periodic.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- logrotate-default
parameters:
@@ -122,6 +122,8 @@
- label:
name: SLAVE_LABEL
default: '{slave-label}'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: CI_LOOP
default: 'periodic'
diff --git a/jjb/xci/bifrost-verify-jobs.yaml b/jjb/xci/bifrost-verify-jobs.yaml
index 4ca783524..f895cf672 100644
--- a/jjb/xci/bifrost-verify-jobs.yaml
+++ b/jjb/xci/bifrost-verify-jobs.yaml
@@ -80,7 +80,7 @@
- xci-verify-virtual
option: category
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- string:
@@ -128,6 +128,8 @@
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: CI_LOOP
default: 'verify'
diff --git a/jjb/xci/osa-periodic-jobs.yaml b/jjb/xci/osa-periodic-jobs.yaml
index 6c2d165a4..b731bf52b 100644
--- a/jjb/xci/osa-periodic-jobs.yaml
+++ b/jjb/xci/osa-periodic-jobs.yaml
@@ -58,7 +58,7 @@
- 'bifrost-periodic-{distro}-.*'
- 'xci-osa-verify-{distro}-.*'
- 'xci-osa-periodic-{distro}-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- throttle:
max-per-node: 2
max-total: 10
@@ -82,6 +82,8 @@
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: OPENSTACK_OSA_VERSION
default: 'master'
@@ -144,7 +146,7 @@
blocking-jobs:
- '.*-bifrost-verify-.*'
- '.*-bifrost-periodic-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- project-parameter:
diff --git a/jjb/xci/xci-daily-jobs.yaml b/jjb/xci/xci-daily-jobs.yaml
index c1132ab85..66cbb834f 100644
--- a/jjb/xci/xci-daily-jobs.yaml
+++ b/jjb/xci/xci-daily-jobs.yaml
@@ -1,15 +1,9 @@
---
-# -------------------------------
-# These jobs run on a daily basis and deploy OpenStack
-# using the pinned versions of opnfv/releng, openstack/bifrost
-# and openstack/openstack-ansible. Due to this, there is no
-# version/branch is set/passed to jobs and instead the versions
-# are checked out based on what is configured.
-# -------------------------------
- project:
project: 'releng-xci'
name: 'xci-daily'
+
# -------------------------------
# Branch Anchors
# -------------------------------
@@ -17,55 +11,76 @@
stream: master
opnfv-releng-version: master
gs-pathname: ''
+
# -------------------------------
# Scenarios
# -------------------------------
scenario:
- - 'os-nosdn-nofeature-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'ha'
- 'os-nosdn-nofeature-noha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'noha'
- - 'os-odl-sfc-ha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'ha'
+ deploy-scenario: 'os-nosdn-nofeature'
+ installer-type: 'osa'
+ xci-flavor: 'mini'
+ - 'os-nosdn-osm-noha':
+ deploy-scenario: 'os-nosdn-osm'
+ installer-type: 'osa'
+ xci-flavor: 'mini'
+ - 'os-odl-nofeature-noha':
+ deploy-scenario: 'os-odl-nofeature'
+ installer-type: 'osa'
+ xci-flavor: 'mini'
+ - 'os-odl-bgpvpn-noha':
+ deploy-scenario: 'os-odl-bgpvpn'
+ installer-type: 'osa'
+ xci-flavor: 'mini'
- 'os-odl-sfc-noha':
- auto-trigger-name: 'daily-trigger-disabled'
- xci-flavor: 'noha'
+ deploy-scenario: 'os-odl-sfc'
+ installer-type: 'osa'
+ xci-flavor: 'mini'
+ - 'k8-nosdn-nofeature-noha':
+ deploy-scenario: 'k8-nosdn-nofeature'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+ - 'k8-canal-nofeature-noha':
+ deploy-scenario: 'k8-canal-nofeature'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+ - 'k8-calico-nofeature-noha':
+ deploy-scenario: 'k8-calico-nofeature'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+ - 'k8-contiv-nofeature-noha':
+ deploy-scenario: 'k8-contiv-nofeature'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+ - 'k8-flannel-nofeature-noha':
+ deploy-scenario: 'k8-flannel-nofeature'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+ - 'k8-nosdn-istio-noha':
+ deploy-scenario: 'k8-nosdn-istio'
+ installer-type: 'kubespray'
+ xci-flavor: 'mini'
+
# -------------------------------
# XCI PODs
# -------------------------------
pod:
- virtual:
<<: *master
+
# -------------------------------
# Supported Distros
# -------------------------------
distro:
- - 'xenial':
+ - 'ubuntu':
disabled: false
- slave-label: xci-xenial-virtual
- dib-os-release: 'xenial'
- dib-os-element: 'ubuntu-minimal'
- # yamllint disable rule:line-length
- dib-os-packages: 'vlan,vim,less,bridge-utils,sudo,language-pack-en,iputils-ping,rsyslog,curl,python,debootstrap,ifenslave,ifenslave-2.6,lsof,lvm2,tcpdump,nfs-kernel-server,chrony,iptabls'
- # yamllint enable rule:line-length
- extra-dib-elements: 'openssh-server'
- - 'centos7':
- disabled: true
- slave-label: xci-centos7-virtual
- dib-os-release: '7'
- dib-os-element: 'centos7'
- dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
- extra-dib-elements: 'openssh-server'
- - 'suse':
+ slave-label: xci-virtual
+ - 'centos':
disabled: true
- slave-label: xci-suse-virtual
- dib-os-release: '42.3'
- dib-os-element: 'opensuse-minimal'
- dib-os-packages: 'vim,less,bridge-utils,iputils,rsyslog,curl'
- extra-dib-elements: 'openssh-server'
+ slave-label: xci-virtual
+ - 'opensuse':
+ disabled: false
+ slave-label: xci-virtual
# -------------------------------
# Phases
@@ -73,6 +88,8 @@
phase:
- 'deploy'
- 'functest'
+ - 'yardstick'
+
# -------------------------------
# jobs
# -------------------------------
@@ -94,44 +111,76 @@
- build-blocker:
use-build-blocker: true
blocking-jobs:
+ - '^xci-verify.*'
+ - '^xci-merge.*'
- '^xci-os.*'
+ - '^xci-k8.*'
- '^xci-deploy.*'
- '^xci-functest.*'
- '^bifrost-.*periodic.*'
- '^osa-.*periodic.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- logrotate-default
+ triggers:
+ - timed: '@midnight'
+
parameters:
- string:
name: DEPLOY_SCENARIO
- default: '{scenario}'
+ default: '{deploy-scenario}'
+ - string:
+ name: INSTALLER_TYPE
+ default: '{installer-type}'
- string:
name: XCI_FLAVOR
default: '{xci-flavor}'
- label:
name: SLAVE_LABEL
default: '{slave-label}'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
+ - string:
+ name: XCI_DISTRO
+ default: '{distro}'
+ - string:
+ name: FUNCTEST_VERSION
+ default: 'hunter'
+ - string:
+ name: FUNCTEST_MODE
+ default: 'tier'
+ - string:
+ name: FUNCTEST_SUITE_NAME
+ default: 'smoke'
- string:
name: CI_LOOP
default: 'daily'
-
- triggers:
- - '{auto-trigger-name}'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
wrappers:
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 240
- fix-workspace-permissions
builders:
- description-setter:
- description: "Built on $NODE_NAME"
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
- trigger-builds:
- project: 'xci-deploy-{pod}-{distro}-daily-{stream}'
current-parameters: false
predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ INSTALLER_TYPE=$INSTALLER_TYPE
XCI_FLAVOR=$XCI_FLAVOR
CI_LOOP=$CI_LOOP
+ XCI_DISTRO=$XCI_DISTRO
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
same-node: true
block: true
- trigger-builds:
@@ -139,8 +188,28 @@
current-parameters: false
predefined-parameters: |
DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ INSTALLER_TYPE=$INSTALLER_TYPE
+ XCI_FLAVOR=$XCI_FLAVOR
+ CI_LOOP=$CI_LOOP
+ XCI_DISTRO=$XCI_DISTRO
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+ same-node: true
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: 'never'
+ failure-threshold: 'never'
+ unstable-threshold: 'FAILURE'
+ - trigger-builds:
+ - project: 'xci-yardstick-{pod}-{distro}-daily-{stream}'
+ current-parameters: false
+ predefined-parameters: |
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+ INSTALLER_TYPE=$INSTALLER_TYPE
XCI_FLAVOR=$XCI_FLAVOR
CI_LOOP=$CI_LOOP
+ XCI_DISTRO=$XCI_DISTRO
same-node: true
block: true
block-thresholds:
@@ -150,42 +219,37 @@
publishers:
# yamllint disable rule:line-length
- - email:
- 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:
- builders:
- - role: BOTH
- build-on:
- - ABORTED
- - FAILURE
- - NOT_BUILT
- - SUCCESS
- - UNSTABLE
- build-steps:
- - shell: !include-raw: ./xci-cleanup.sh
- mark-unstable-if-failed: true
- job-template:
name: 'xci-{phase}-{pod}-{distro}-daily-{stream}'
- disabled: '{obj:disabled}'
+ disabled: false
- concurrent: false
+ concurrent: true
properties:
- build-blocker:
use-build-blocker: true
blocking-jobs:
+ - '^xci-verify.*'
+ - '^xci-merge.*'
- '^xci-deploy.*'
- '^xci-functest.*'
- '^bifrost-.*periodic.*'
- '^osa-.*periodic.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
- logrotate-default
wrappers:
+ - ssh-agent-wrapper
+ - build-timeout:
+ timeout: 240
- fix-workspace-permissions
scm:
@@ -196,76 +260,125 @@
project: '{project}'
branch: '{opnfv-releng-version}'
- string:
- name: GIT_BASE
- default: https://gerrit.opnfv.org/gerrit/$PROJECT
- - string:
name: DEPLOY_SCENARIO
- default: 'os-nosdn-nofeature-ha'
- - string:
- name: XCI_FLAVOR
- default: 'ha'
- - string:
- name: DISTRO
- default: '{distro}'
+ default: 'os-nosdn-nofeature-noha'
- string:
- name: DIB_OS_RELEASE
- default: '{dib-os-release}'
- - string:
- name: DIB_OS_ELEMENT
- default: '{dib-os-element}'
- - string:
- name: DIB_OS_PACKAGES
- default: '{dib-os-packages}'
+ name: INSTALLER_TYPE
+ default: 'osa'
- string:
- name: EXTRA_DIB_ELEMENTS
- default: '{extra-dib-elements}'
+ name: XCI_FLAVOR
+ default: 'mini'
- string:
- name: CLEAN_DIB_IMAGES
- default: 'true'
+ name: XCI_DISTRO
+ default: 'ubuntu'
- label:
name: SLAVE_LABEL
default: '{slave-label}'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
- name: CI_LOOP
- default: 'daily'
- - string:
- name: INSTALLER_TYPE
- default: 'osa'
+ name: FUNCTEST_VERSION
+ default: 'hunter'
- string:
name: FUNCTEST_MODE
- default: 'daily'
+ default: 'tier'
- string:
name: FUNCTEST_SUITE_NAME
+ default: 'smoke'
+ - string:
+ name: CI_LOOP
default: 'daily'
- description: "Daily suite name to run"
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
builders:
- description-setter:
- description: "Built on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
- - 'xci-{phase}-builder'
+ description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
+ - 'xci-daily-{phase}-macro'
# --------------------------
# builder macros
# --------------------------
+# These need to be properly fixed once the basic deployment, functest, and
+# yardstick jobs are working outside of clean vm.
+# One of the ugly fixes is moving test preparation step into the
+# deployment job itself since test preparation requires some of the
+# things from deployment job. With clean VM, this wasn't an issue
+# since everything was on clean VM. When we move things out of clean
+# VM, things are done in workspaces of the jobs that are different.
+#
+# Apart from these things, we will need to go through the scripts
+# used for verify jobs and make them updated in order to be able to
+# use them for jobs that don't use clean VM.
- builder:
- name: xci-deploy-builder
+ name: 'xci-daily-deploy-macro'
builders:
- - shell:
- !include-raw: ./xci-deploy.sh
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+
+ echo "Cleaning the leftovers from the earlier run"
+ echo "---------------------------------------------------------------------------------"
+ for vm in $(sudo virsh list --all --name | grep -v xci_vm); do
+ echo "Removing $vm"
+ sudo virsh destroy $vm > /dev/null 2>&1 || true
+ sudo virsh undefine $vm > /dev/null 2>&1 || true
+ sudo killall -r vbmc > /dev/null 2>&1 || true
+ sudo rm -rf /root/.vbmc > /dev/null 2>&1 || true
+ done
+ echo "---------------------------------------------------------------------------------"
+
+ cd $WORKSPACE/xci && ./xci-deploy.sh
+
+ echo "Prepare OPNFV VM for Tests"
+ echo "---------------------------------------------------------------------------------"
+ export XCI_PATH=$WORKSPACE
+ export XCI_VENV=${XCI_PATH}/venv
+ source $XCI_VENV/bin/activate
+ while read var; do
+ declare -x "\${var}" 2>/dev/null
+ echo $var
+ done < ${XCI_PATH}/.cache/xci.env && cd ${XCI_PATH}/xci && \
+ ansible-playbook -i playbooks/dynamic_inventory.py playbooks/prepare-tests.yml
+ ssh root@192.168.122.2 "/root/prepare-tests.sh"
+ echo "---------------------------------------------------------------------------------"
- builder:
- name: xci-functest-builder
+ name: 'xci-daily-functest-macro'
builders:
- shell: |
#!/bin/bash
+ set -o pipefail
+
+ ssh root@192.168.122.2 "/root/run-functest.sh"
+ functest_exit=$?
+
+ case ${DEPLOY_SCENARIO[0]} in
+ os-*)
+ FUNCTEST_LOG=/root/functest-results/functest.log
+ ;;
+ k8-*)
+ FUNCTEST_LOG=/root/functest-results/functest-kubernetes.log
+ ;;
+ *)
+ echo "Unable to determine the installer. Exiting!"
+ exit $functest_exit
+ ;;
+ esac
- echo "Hello World!"
+ echo "Functest log"
+ echo "---------------------------------------------------------------------------------"
+ ssh root@192.168.122.2 "cat $FUNCTEST_LOG"
+ echo "---------------------------------------------------------------------------------"
+ exit ${functest_exit}
+- builder:
+ name: 'xci-daily-yardstick-macro'
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
-# this will be enabled once the xci is prepared
-# - builder:
-# name: xci-functest-builder
-# builders:
-# - shell:
-# !include-raw:
-# - ../../utils/fetch_os_creds.sh
-# - ../functest/functest-alpine.sh
+ ssh root@192.168.122.2 "/root/run-yardstick.sh"
diff --git a/jjb/xci/xci-merge-jobs.yaml b/jjb/xci/xci-merge-jobs.yaml
index cb438ad5d..c468be6d1 100644
--- a/jjb/xci/xci-merge-jobs.yaml
+++ b/jjb/xci/xci-merge-jobs.yaml
@@ -108,6 +108,8 @@
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: CI_LOOP
default: 'merge'
@@ -223,10 +225,12 @@
blocking-jobs:
- 'xci-verify-{distro}-.*'
- 'xci-merge-{distro}-.*'
+ - 'xci-os.*'
+ - 'xci-k8.*'
- 'openstack-bifrost-verify-{distro}-.*'
- 'xci-osa-verify-{distro}-.*'
- 'xci-osa-periodic-{distro}-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- throttle:
max-per-node: 1
max-total: 3
@@ -250,10 +254,15 @@
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: CI_LOOP
default: 'merge'
- string:
+ name: FUNCTEST_VERSION
+ default: 'hunter'
+ - string:
name: FUNCTEST_MODE
default: 'tier'
- string:
@@ -290,6 +299,9 @@
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
kill-phase-on: '{kill-phase-on}'
abort-all-job: '{abort-all-job}'
@@ -308,6 +320,7 @@
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
CI_LOOP=$CI_LOOP
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
FUNCTEST_MODE=$FUNCTEST_MODE
FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
@@ -344,7 +357,7 @@
- '.*-bifrost-periodic-.*'
- 'osa-verify-.*'
- 'osa-periodic-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- string:
@@ -357,6 +370,9 @@
name: CI_LOOP
default: 'merge'
- string:
+ name: FUNCTEST_VERSION
+ default: 'hunter'
+ - string:
name: FUNCTEST_MODE
default: 'tier'
- string:
diff --git a/jjb/xci/xci-rtd-jobs.yaml b/jjb/xci/xci-rtd-jobs.yaml
new file mode 100644
index 000000000..d21aad5a0
--- /dev/null
+++ b/jjb/xci/xci-rtd-jobs.yaml
@@ -0,0 +1,13 @@
+---
+- project:
+ name: releng-xci-rtd
+ project: releng-xci
+ project-name: releng-xci
+
+ gerrit-skip-vote: true
+ project-pattern: 'releng-xci'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-releng-xci/47389/'
+ rtd-token: '7dbc774ea9a625296d2e973aff3e79af26b15d4d'
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/jjb/xci/xci-run-functest.sh b/jjb/xci/xci-run-functest.sh
index f46abe043..992194ca3 100755
--- a/jjb/xci/xci-run-functest.sh
+++ b/jjb/xci/xci-run-functest.sh
@@ -47,18 +47,22 @@ fi
export XCI_PATH=/home/devuser/releng-xci
export XCI_VENV=${XCI_PATH}/venv
-ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "source $XCI_VENV/bin/activate; while read var; do declare -x \"\${var}\" 2>/dev/null; done < ${XCI_PATH}/.cache/xci.env && cd releng-xci/xci && ansible-playbook -i playbooks/dynamic_inventory.py playbooks/prepare-functest.yml"
-echo "Running functest"
+ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm "source $XCI_VENV/bin/activate; \
+ while read var; do declare -x \"\${var}\" 2>/dev/null; done < ${XCI_PATH}/.cache/xci.env && \
+ cd releng-xci/xci && ansible-playbook -i playbooks/dynamic_inventory.py playbooks/prepare-tests.yml"
+echo "Prepare OPNFV VM for Tests"
+ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "/root/prepare-tests.sh"
+echo "Running Functest"
ssh -F $HOME/.ssh/${DISTRO}-xci-vm-config ${DISTRO}_xci_vm_opnfv "/root/run-functest.sh"
# Record exit code
functest_exit=$?
case ${DEPLOY_SCENARIO[0]} in
os-*)
- FUNCTEST_LOG=/root/results/functest.log
+ FUNCTEST_LOG=/root/functest-results/functest.log
;;
k8-*)
- FUNCTEST_LOG=/root/results/functest-kubernetes.log
+ FUNCTEST_LOG=/root/functest-results/functest-kubernetes.log
;;
*)
echo "Unable to determine the installer. Exiting!"
diff --git a/jjb/xci/xci-set-scenario.sh b/jjb/xci/xci-set-scenario.sh
index 7bc45f1c2..59c1ebf6e 100755
--- a/jjb/xci/xci-set-scenario.sh
+++ b/jjb/xci/xci-set-scenario.sh
@@ -8,6 +8,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
set -o pipefail
+set -x
#----------------------------------------------------------------------
# This script is used by CI and executed by Jenkins jobs.
@@ -166,9 +167,10 @@ WORK_DIRECTORY=/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO
if [[ $GERRIT_PROJECT == "releng-xci" ]]; then
determine_default_scenario
+else
+ determine_scenario
fi
override_scenario
-determine_scenario
# ensure single scenario is impacted
if [[ $(IFS=$'\n' echo ${DEPLOY_SCENARIO[@]} | wc -w) != 1 ]]; then
diff --git a/jjb/xci/xci-verify-jobs.yaml b/jjb/xci/xci-verify-jobs.yaml
index 2230cd56d..9edf55597 100644
--- a/jjb/xci/xci-verify-jobs.yaml
+++ b/jjb/xci/xci-verify-jobs.yaml
@@ -20,7 +20,7 @@
unstable: false
notbuilt: false
- centos:
- disabled: false
+ disabled: true
successful: true
failed: true
unstable: true
@@ -67,10 +67,12 @@
blocking-jobs:
- 'xci-verify-{distro}-.*'
- 'xci-merge-{distro}-.*'
+ - 'xci-os-.*'
+ - 'xci-k8-.*'
- 'openstack-bifrost-verify-{distro}-.*'
- 'xci-osa-verify-{distro}-.*'
- 'xci-osa-periodic-{distro}-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
- throttle:
max-per-node: 2
max-total: 10
@@ -138,6 +140,8 @@
- label:
name: SLAVE_LABEL
default: 'xci-virtual'
+ all-nodes: false
+ node-eligibility: 'ignore-offline'
- string:
name: DISTRO
default: '{distro}'
@@ -148,6 +152,9 @@
name: CI_LOOP
default: 'verify'
- string:
+ name: FUNCTEST_VERSION
+ default: 'hunter'
+ - string:
name: FUNCTEST_MODE
default: 'tier'
- string:
@@ -159,6 +166,7 @@
description: 'Git URL to use on this Jenkins Slave'
builders:
+ - 'xci-verify-clean-vm-macro'
- 'xci-verify-set-scenario-macro'
- inject:
properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
@@ -179,6 +187,9 @@
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
CI_LOOP=$CI_LOOP
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
+ FUNCTEST_MODE=$FUNCTEST_MODE
+ FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
@@ -197,6 +208,7 @@
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
CI_LOOP=$CI_LOOP
+ FUNCTEST_VERSION=$FUNCTEST_VERSION
FUNCTEST_MODE=$FUNCTEST_MODE
FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
node-parameters: true
@@ -209,7 +221,6 @@
- role: BOTH
build-on:
- ABORTED
- - FAILURE
- NOT_BUILT
- SUCCESS
- UNSTABLE
@@ -234,7 +245,7 @@
- '.*-bifrost-periodic-.*'
- 'osa-verify-.*'
- 'osa-periodic-.*'
- block-level: 'NODE'
+ blocking-level: 'NODE'
parameters:
- string:
@@ -247,6 +258,9 @@
name: CI_LOOP
default: 'verify'
- string:
+ name: FUNCTEST_VERSION
+ default: 'hunter'
+ - string:
name: FUNCTEST_MODE
default: 'tier'
- string:
@@ -286,6 +300,12 @@
# builder macros
# -------------------------------
- builder:
+ name: 'xci-verify-clean-vm-macro'
+ builders:
+ - shell:
+ !include-raw: ./xci-cleanup.sh
+
+- builder:
name: 'xci-verify-set-scenario-macro'
builders:
- shell:
diff --git a/jjb/yardstick/yardstick-daily-jobs.yaml b/jjb/yardstick/yardstick-daily-jobs.yaml
index 4df3f520d..1c622acf2 100644
--- a/jjb/yardstick/yardstick-daily-jobs.yaml
+++ b/jjb/yardstick/yardstick-daily-jobs.yaml
@@ -15,11 +15,28 @@
branch: '{stream}'
gs-pathname: ''
docker-tag: 'latest'
+ gambia: &gambia
+ stream: gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '{stream}'
+ docker-tag: 'stable'
+ # Temporary fraser entry, until all fraser-tied PODs below migrate to gambia
fraser: &fraser
stream: fraser
branch: 'stable/{stream}'
gs-pathname: '{stream}'
- docker-tag: 'stable'
+ # In the meantime, docker image 'stable' will carry gambia contents, and
+ # there is no implemented way to build a docker image with 'fraser' tag.
+ # Available docker image tag options, as of 2018-10-03:
+ # - 'opnfv-6.2.1', built on 2018-07-02, is rather old.
+ # - 'ovp-2.0.0', built on 2018-09-21, is a good fit despite its name: it
+ # was built using SHA1 6c10a2d9cc3fe10e0bdd73a0985ab767b9479afc, which
+ # is the same as used for the most recent 'stable' docker image carrying
+ # fraser contents, built on 2018-09-13 and used so far by the fraser-
+ # tied PODs below.
+ # The alternative would be to create a new 'opnfv-6.2.2' git tag, but that
+ # would just build another image using the same SHA1 as for 'ovp-2.0.0'.
+ docker-tag: 'ovp-2.0.0'
# -------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
# -------------------------------
@@ -41,6 +58,16 @@
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- virtual:
+ slave-label: apex-virtual-master
+ installer: apex
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - baremetal:
+ slave-label: apex-baremetal-master
+ installer: apex
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - virtual:
slave-label: apex-virtual-fraser
installer: apex
auto-trigger-name: 'daily-trigger-disabled'
@@ -65,12 +92,12 @@
slave-label: fuel-baremetal
installer: fuel
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
- virtual:
slave-label: fuel-virtual
installer: fuel
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
# armband CI PODs
- armband-baremetal:
slave-label: armband-baremetal
@@ -86,12 +113,12 @@
slave-label: armband-baremetal
installer: fuel
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
- armband-virtual:
slave-label: armband-virtual
installer: fuel
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
# joid CI PODs
- baremetal:
slave-label: joid-baremetal
@@ -134,6 +161,16 @@
installer: compass
auto-trigger-name: 'daily-trigger-disabled'
<<: *fraser
+ - baremetal:
+ slave-label: compass-baremetal
+ installer: compass
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
+ - virtual:
+ slave-label: compass-virtual
+ installer: compass
+ auto-trigger-name: 'daily-trigger-disabled'
+ <<: *gambia
# daisy CI PODs
- baremetal:
slave-label: daisy-baremetal
@@ -167,7 +204,7 @@
slave-label: '{pod}'
installer: fuel
auto-trigger-name: 'daily-trigger-disabled'
- <<: *fraser
+ <<: *gambia
- zte-pod2:
slave-label: '{pod}'
installer: daisy
@@ -288,7 +325,7 @@
publishers:
- email:
- recipients: jean.gaoliang@huawei.com limingjiang@huawei.com ross.b.brattain@intel.com
+ recipients: jean.gaoliang@huawei.com limingjiang@huawei.com
- email-jenkins-admins-on-failure
########################
diff --git a/jjb/yardstick/yardstick-daily.sh b/jjb/yardstick/yardstick-daily.sh
index 783c64ee1..58d590c27 100755
--- a/jjb/yardstick/yardstick-daily.sh
+++ b/jjb/yardstick/yardstick-daily.sh
@@ -41,10 +41,6 @@ elif [[ ${INSTALLER_TYPE} == 'fuel' ]]; then
cacert_file_vol="-v ${HOME}/os_cacert:/etc/ssl/certs/mcp_os_cacert"
sshkey="-v ${SSH_KEY}:/root/.ssh/mcp.rsa"
fi
-# 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
opts="--privileged=true --rm"
envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
diff --git a/jjb/yardstick/yardstick-project-jobs.yaml b/jjb/yardstick/yardstick-project-jobs.yaml
index 56e825e19..ace2e0265 100644
--- a/jjb/yardstick/yardstick-project-jobs.yaml
+++ b/jjb/yardstick/yardstick-project-jobs.yaml
@@ -17,7 +17,11 @@
branch: '{stream}'
gs-pathname: ''
disabled: false
- - fraser: &fraser
+ - gambia: &gambia
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+ - fraser:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
@@ -35,7 +39,7 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
+ - 'ericsson-build4-defaults'
scm:
- git-scm-gerrit
@@ -83,7 +87,7 @@
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
+ - 'ericsson-build4-defaults'
- string:
name: GS_URL
default: '$GS_BASE{gs-pathname}'
diff --git a/jjb/yardstick/yardstick-rtd-jobs.yaml b/jjb/yardstick/yardstick-rtd-jobs.yaml
new file mode 100644
index 000000000..a18a6550b
--- /dev/null
+++ b/jjb/yardstick/yardstick-rtd-jobs.yaml
@@ -0,0 +1,20 @@
+---
+- project:
+ name: yardstick-rtd
+ project: yardstick
+ project-name: yardstick
+
+ project-pattern: 'yardstick'
+ rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-yardstick/47399/'
+ rtd-token: '6aa883824f3917c7db5ffa1fe9168817fb5feb68'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ disabled: false
+ - gambia:
+ branch: 'stable/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project-name}-rtd-jobs'
diff --git a/modules/opnfv/deployment/example.py b/modules/opnfv/deployment/example.py
index 52d9b5630..1e54321c7 100644
--- a/modules/opnfv/deployment/example.py
+++ b/modules/opnfv/deployment/example.py
@@ -23,15 +23,17 @@ print(handler.get_deployment_info())
print("########## FUEL ##########")
+# NOTE: If you get traces containing <paramiko.ecdsakey.ECDSAKey object [...]>
+# make sure 10.20.0.2 is not already in ~/.ssh/known_hosts with another sig
handler = factory.Factory.get_handler('fuel',
'10.20.0.2',
- 'root',
- installer_pwd='r00tme')
+ 'ubuntu',
+ pkey_file='/var/lib/opnfv/mcp.rsa')
print(handler.get_deployment_info())
-print("List of nodes in cluster 4:")
-nodes = handler.get_nodes({'cluster': '4'})
+print("List of nodes in cluster")
+nodes = handler.get_nodes()
for node in nodes:
print(node)
diff --git a/modules/opnfv/deployment/factory.py b/modules/opnfv/deployment/factory.py
index 1fd8d447b..cd2fc3645 100644
--- a/modules/opnfv/deployment/factory.py
+++ b/modules/opnfv/deployment/factory.py
@@ -42,7 +42,7 @@ class Factory(object):
elif installer.lower() == "fuel":
return fuel_adapter.FuelAdapter(installer_ip=installer_ip,
installer_user=installer_user,
- installer_pwd=installer_pwd)
+ pkey_file=pkey_file)
elif installer.lower() == "compass":
return compass_adapter.ContainerizedCompassAdapter(
installer_ip=installer_ip,
diff --git a/modules/opnfv/deployment/fuel/adapter.py b/modules/opnfv/deployment/fuel/adapter.py
index a217767ba..a57168d0e 100644
--- a/modules/opnfv/deployment/fuel/adapter.py
+++ b/modules/opnfv/deployment/fuel/adapter.py
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2017 Ericsson AB and others.
+# Copyright (c) 2018 Ericsson AB and others.
# Author: Jose Lausuch (jose.lausuch@ericsson.com)
# George Paraskevopoulos (geopar@intracom-telecom.com)
# All rights reserved. This program and the accompanying materials
@@ -7,193 +7,129 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+'''
+ This modules implements the Fuel@OPNFV adapter
+ - host executing this module needs network connectivity to a cluster via:
+ * mcpcontrol network (usually 10.20.0.0/24, created by installer);
+ * PXE/admin network;
+ The above are always true for an OPNFV Pharos jumpserver.
+ - key-based SSH auth is used throughout the cluster, without proxy-ing
+ cluster node access via Salt master (old Fuel@OPNFV used to);
+'''
+
+from yaml import safe_load, YAMLError
from opnfv.deployment import manager
from opnfv.utils import opnfv_logger as logger
from opnfv.utils import ssh_utils
-logger = logger.Logger(__name__).getLogger()
+LOGGER = logger.Logger(__name__).getLogger()
class FuelAdapter(manager.DeploymentHandler):
+ '''
+ This class extends the generic handler with Fuel@OPNFV specifics
+ '''
- def __init__(self, installer_ip, installer_user, installer_pwd):
+ def __init__(self, installer_ip, installer_user, pkey_file):
super(FuelAdapter, self).__init__(installer='fuel',
installer_ip=installer_ip,
installer_user=installer_user,
- installer_pwd=installer_pwd,
- pkey_file=None)
-
- def _get_clusters(self):
- environments = []
- output = self.runcmd_fuel_env()
- lines = output.rsplit('\n')
- if len(lines) < 2:
- logger.info("No environments found in the deployment.")
- return None
- else:
- fields = lines[0].rsplit(' | ')
-
- index_id = -1
- index_status = -1
- index_name = -1
- index_release_id = -1
-
- for i in range(len(fields)):
- if "id" in fields[i]:
- index_id = i
- elif "status" in fields[i]:
- index_status = i
- elif "name" in fields[i]:
- index_name = i
- elif "release_id" in fields[i]:
- index_release_id = i
-
- # order env info
- for i in range(2, len(lines)):
- fields = lines[i].rsplit(' | ')
- dict = {"id": fields[index_id].strip(),
- "status": fields[index_status].strip(),
- "name": fields[index_name].strip(),
- "release_id": fields[index_release_id].strip()}
- environments.append(dict)
-
- return environments
+ installer_pwd=None,
+ pkey_file=pkey_file)
def get_nodes(self, options=None):
-
- if options and options['cluster'] and len(self.nodes) > 0:
- n = []
- for node in self.nodes:
- if str(node.info['cluster']) == str(options['cluster']):
- n.append(node)
- return n
-
+ '''
+ Generates a list of all the nodes in the deployment
+ '''
+ # Unlike old Fuel@Openstack, we don't keep track of different clusters
+ # explicitly, but through domain names.
+ # For simplicity, we will assume a single cluster per Salt master node.
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
+ # pylint: disable=bare-except
except:
pass
+ # Manager roles to reclass properties mapping
+ _map = {
+ 'salt:master:enabled': manager.Role.INSTALLER,
+ 'maas:region:enabled': manager.Role.INSTALLER,
+ 'nova:controller:enabled': manager.Role.CONTROLLER,
+ 'nova:compute:enabled': manager.Role.COMPUTE,
+ 'opendaylight:server:enabled': manager.Role.ODL,
+ }
nodes = []
- cmd = 'fuel node'
+ cmd = ("sudo salt '*' pillar.item {} --out yaml --static 2>/dev/null"
+ .format(' '.join(_map.keys() + ['_param:pxe_admin_address'])))
+ # Sample output (for one node):
+ # cmp001.mcp-ovs-noha.local:
+ # _param:pxe_admin_address: 192.168.11.34
+ # maas:region:enabled: ''
+ # nova:compute:enabled: true
+ # nova:controller:enabled: ''
+ # opendaylight:server:enabled: ''
+ # retcode: 0
+ # salt:master:enabled: ''
output = self.installer_node.run_cmd(cmd)
- lines = output.rsplit('\n')
- if len(lines) < 2:
- logger.info("No nodes found in the deployment.")
+ if output.startswith('No minions matched the target'):
+ LOGGER.info('No nodes found in the deployment.')
return nodes
- # get fields indexes
- fields = lines[0].rsplit(' | ')
-
- index_id = -1
- index_status = -1
- index_name = -1
- index_cluster = -1
- index_ip = -1
- index_mac = -1
- index_roles = -1
- index_online = -1
-
- for i in range(len(fields)):
- if "group_id" in fields[i]:
- break
- elif "id" in fields[i]:
- index_id = i
- elif "status" in fields[i]:
- index_status = i
- elif "name" in fields[i]:
- index_name = i
- elif "cluster" in fields[i]:
- index_cluster = i
- elif "ip" in fields[i]:
- index_ip = i
- elif "mac" in fields[i]:
- index_mac = i
- elif "roles " in fields[i] and "pending_roles" not in fields[i]:
- index_roles = i
- elif "online" in fields[i]:
- index_online = i
-
- # order nodes info
- for i in range(2, len(lines)):
- fields = lines[i].rsplit(' | ')
- id = fields[index_id].strip().encode()
- ip = fields[index_ip].strip().encode()
- status_node = fields[index_status].strip().encode().lower()
- name = fields[index_name].strip().encode()
- roles_all = fields[index_roles].strip().encode().lower()
-
- roles = [x for x in [manager.Role.CONTROLLER,
- manager.Role.COMPUTE,
- manager.Role.ODL] if x in roles_all]
-
- dict = {"cluster": fields[index_cluster].strip().encode(),
- "mac": fields[index_mac].strip().encode(),
- "status_node": status_node,
- "online": fields[index_online].strip().encode()}
-
- ssh_client = None
- if status_node == 'ready':
- status = manager.NodeStatus.STATUS_OK
- proxy = {'ip': self.installer_ip,
- 'username': self.installer_user,
- 'password': self.installer_pwd}
- ssh_client = ssh_utils.get_ssh_client(hostname=ip,
- username='root',
- proxy=proxy)
- elif 'error' in status_node:
- status = manager.NodeStatus.STATUS_ERROR
- elif 'off' in status_node:
- status = manager.NodeStatus.STATUS_OFFLINE
- elif 'discover' in status_node:
- status = manager.NodeStatus.STATUS_UNUSED
- else:
- status = manager.NodeStatus.STATUS_INACTIVE
-
+ try:
+ yaml_output = safe_load(output)
+ except YAMLError as exc:
+ LOGGER.error(exc)
+ for node_name in yaml_output.keys():
+ ip_addr = yaml_output[node_name]['_param:pxe_admin_address']
+ ssh_client = ssh_utils.get_ssh_client(hostname=ip_addr,
+ username='ubuntu',
+ pkey_file=self.pkey_file)
node = manager.Node(
- id, ip, name, status, roles, ssh_client, dict)
- if options and options['cluster']:
- if fields[index_cluster].strip() == options['cluster']:
- nodes.append(node)
- else:
- nodes.append(node)
+ id=node_name,
+ ip=ip_addr,
+ name=node_name,
+ status=manager.NodeStatus.STATUS_OK,
+ roles=[_map[x] for x in _map if yaml_output[node_name][x]],
+ ssh_client=ssh_client)
+ nodes.append(node)
- self.get_nodes_called = True
return nodes
def get_openstack_version(self):
- cmd = 'source openrc;nova-manage version 2>/dev/null'
- version = None
- for node in self.nodes:
- if node.is_controller() and node.is_active():
- version = node.run_cmd(cmd)
- break
- return version
+ '''
+ Returns a string of the openstack version (nova-compute)
+ '''
+ cmd = ("sudo salt -C 'I@nova:controller and *01*' "
+ "cmd.run 'nova-manage version 2>/dev/null' --out yaml --static")
+ nova_version = self.installer_node.run_cmd(cmd)
+ if nova_version:
+ return nova_version.split(' ')[-1]
+ return None
def get_sdn_version(self):
- cmd = "apt-cache policy opendaylight|grep Installed"
+ '''
+ Returns a string of the sdn controller and its version, if exists
+ '''
+ cmd = ("sudo salt -C 'I@opendaylight:server and *01*'"
+ "pkg.version opendaylight --out yaml --static")
version = None
for node in self.nodes:
if manager.Role.ODL in node.roles and node.is_active():
- odl_version = node.run_cmd(cmd)
+ odl_version = self.installer_node.run_cmd(cmd)
if odl_version:
version = 'OpenDaylight ' + odl_version.split(' ')[-1]
break
return version
def get_deployment_status(self):
- cmd = "fuel env|tail -1|awk '{print $3}'"
- result = self.installer_node.run_cmd(cmd)
- if result is None or len(result) == 0:
- return 'unknown'
- elif 'operational' in result:
- return 'active'
- elif 'deploy' in result:
- return 'deploying'
- else:
- return 'active'
+ '''
+ Returns a string of the status of the deployment
+ '''
+ # NOTE: Requires Fuel-side signaling of deployment status, stub it
+ return 'active'
diff --git a/modules/opnfv/deployment/manager.py b/modules/opnfv/deployment/manager.py
index 694df7755..2b5aedbc7 100644
--- a/modules/opnfv/deployment/manager.py
+++ b/modules/opnfv/deployment/manager.py
@@ -241,13 +241,13 @@ class Node(object):
Returns the ovs version installed
'''
if self.is_active():
- cmd = "ovs-vsctl --version|head -1| sed 's/^.*) //'"
- return self.run_cmd(cmd)
+ cmd = "ovs-vsctl --version 2>/dev/null|head -1| sed 's/^.*) //'"
+ return self.run_cmd(cmd) or None
return None
def get_system_info(self):
'''
- Returns the ovs version installed
+ Returns system information
'''
cmd = 'grep MemTotal /proc/meminfo'
memory = self.run_cmd(cmd).partition('MemTotal:')[-1].strip().encode()
diff --git a/modules/opnfv/utils/Credentials.py b/modules/opnfv/utils/Credentials.py
index 141ecbd93..193a10aac 100644
--- a/modules/opnfv/utils/Credentials.py
+++ b/modules/opnfv/utils/Credentials.py
@@ -7,9 +7,9 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
#
-# Usage example:
+# Usage example (note: Fuel actually uses key-based auth, not user/pass):
# from opnfv.utils.Credentials import Credentials as credentials
-# credentials("fuel", "10.20.0.2", "root", "r00tme").fetch('./openrc')
+# credentials("fuel", "10.20.0.2", "user", "password").fetch('./openrc')
#
import os
@@ -74,12 +74,7 @@ class Credentials(object):
pass
def __fetch_creds_fuel(self, target_path):
- creds_file = '/root/openrc'
- try:
- self.handler.get_file_from_controller(creds_file, target_path)
- except Exception as e:
- self.logger.error(
- "Cannot get %s from controller. %e" % (creds_file, e))
+ # TODO
pass
def __fetch_creds_joid(self, target_path):
diff --git a/modules/opnfv/utils/ssh_utils.py b/modules/opnfv/utils/ssh_utils.py
index 175a38078..22727170b 100644
--- a/modules/opnfv/utils/ssh_utils.py
+++ b/modules/opnfv/utils/ssh_utils.py
@@ -49,10 +49,11 @@ def get_ssh_client(hostname,
client = paramiko.SSHClient()
else:
client = ProxyHopClient()
+ proxy_password = proxy.get('password', None)
proxy_pkey_file = proxy.get('pkey_file', '/root/.ssh/id_rsa')
client.configure_jump_host(proxy['ip'],
proxy['username'],
- proxy['password'],
+ proxy_password,
proxy_pkey_file)
if client is None:
raise Exception('Could not connect to client')
diff --git a/modules/requirements.txt b/modules/requirements.txt
index 0718fa3b0..2c51daaea 100644
--- a/modules/requirements.txt
+++ b/modules/requirements.txt
@@ -1,3 +1,4 @@
paramiko>=2.0 # LGPLv2.1+
mock>=2.0 # BSD
requests>=2.14.2 # Apache-2.0
+pyyaml>=3.11 # MIT
diff --git a/releases/fraser/apex.yaml b/releases/fraser/apex.yaml
index c097d064a..1613f2efd 100644
--- a/releases/fraser/apex.yaml
+++ b/releases/fraser/apex.yaml
@@ -25,6 +25,30 @@ releases:
- version: opnfv-6.0.0
location:
apex-os-net-config: e09d110d7b58d26424c28a128cdfd8c766636461
+ - version: opnfv-6.1.0
+ location:
+ apex: a1f2e922d18430e064c9c8311f01ac2a0df19414
+ - version: opnfv-6.1.0
+ location:
+ apex-tripleo-heat-templates: 7f1cc97bcd6f267b11a251de3204edf0e8ec79c0
+ - version: opnfv-6.1.0
+ location:
+ apex-puppet-tripleo: bebd15efe40498c272577c563bc113ec3849dcc6
+ - version: opnfv-6.1.0
+ location:
+ apex-os-net-config: e09d110d7b58d26424c28a128cdfd8c766636461
+ - version: opnfv-6.2.0
+ location:
+ apex: 86826823c9a8cf0f10a6a903c8256bcc7222f5d7
+ - version: opnfv-6.2.0
+ location:
+ apex-tripleo-heat-templates: 7f1cc97bcd6f267b11a251de3204edf0e8ec79c0
+ - version: opnfv-6.2.0
+ location:
+ apex-puppet-tripleo: bebd15efe40498c272577c563bc113ec3849dcc6
+ - version: opnfv-6.2.0
+ location:
+ apex-os-net-config: e09d110d7b58d26424c28a128cdfd8c766636461
branches:
- name: stable/fraser
diff --git a/releases/fraser/armband.yml b/releases/fraser/armband.yaml
index 66afd10da..c0d0e4fd6 100644
--- a/releases/fraser/armband.yml
+++ b/releases/fraser/armband.yaml
@@ -15,6 +15,15 @@ releases:
- version: opnfv-6.0.0
location:
armband: 2b0ac4026a3acf3b10ab2f4c416636d80ab559f0
+ - version: opnfv-6.1.0
+ location:
+ armband: 0de669e26d14794ab117e915abaa6bf6b1dd878d
+ - version: opnfv-6.2.0
+ location:
+ armband: f776d862ce62f66e09a3c695b67b1905f9ecfae7
+ - version: opnfv-6.2.1
+ location:
+ armband: 1262ea206b51abdfd3101123173a64fca8e89bfa
branches:
- name: stable/fraser
diff --git a/releases/fraser/auto.yaml b/releases/fraser/auto.yaml
index a86fabbb3..542550757 100644
--- a/releases/fraser/auto.yaml
+++ b/releases/fraser/auto.yaml
@@ -8,6 +8,18 @@ releases:
location:
auto: 3a957a75f99686767d13f45d74b5ca8463559b7b
+ - version: opnfv-6.1.0
+ location:
+ auto: b718a43380376d2b19222c4203c97a95ca849ae8
+
+ - version: opnfv-6.1.1
+ location:
+ auto: 0f43563624832c5908e6fc00eb0a4bbc6cc82c33
+
+ - version: opnfv-6.2.0
+ location:
+ auto: d8634fc5ceef5e87484186c7305637f260ccb28f
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/availability.yaml b/releases/fraser/availability.yaml
index 91163b5a2..beda6253b 100644
--- a/releases/fraser/availability.yaml
+++ b/releases/fraser/availability.yaml
@@ -8,6 +8,10 @@ releases:
location:
availability: c1ee3631b59009ff61450808e2bd33fe1d4b17f2
+ - version: opnfv-6.1.0
+ location:
+ availability: c1ee3631b59009ff61450808e2bd33fe1d4b17f2
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/barometer.yaml b/releases/fraser/barometer.yaml
index 4ad1e9d63..e8d88f1bb 100644
--- a/releases/fraser/barometer.yaml
+++ b/releases/fraser/barometer.yaml
@@ -8,6 +8,10 @@ releases:
location:
barometer: 70a568ed8eed6f1a336f1fbe9bbc6900422e0c11
+ - version: opnfv-6.1.0
+ location:
+ barometer: 70a568ed8eed6f1a336f1fbe9bbc6900422e0c11
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/bottlenecks.yaml b/releases/fraser/bottlenecks.yaml
index e72d0f652..722bb7a7d 100644
--- a/releases/fraser/bottlenecks.yaml
+++ b/releases/fraser/bottlenecks.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
bottlenecks: d76736440f852baed2e10a9b92c0557aabc041a6
+ - version: opnfv-6.1.0
+ location:
+ bottlenecks: d76736440f852baed2e10a9b92c0557aabc041a6
+ - version: opnfv-6.2.0
+ location:
+ bottlenecks: 3bf15446777a60510824e4b73da358934df03b98
branches:
- name: stable/fraser
diff --git a/releases/fraser/calipso.yaml b/releases/fraser/calipso.yaml
index e334910a9..8e3db3c7a 100644
--- a/releases/fraser/calipso.yaml
+++ b/releases/fraser/calipso.yaml
@@ -3,6 +3,11 @@ project: calipso
project-type: tools
release-model: stable
+releases:
+ - version: opnfv-6.1.0
+ location:
+ calipso: 5c821a4d1462f3b0131f37995f40fc77a53468e6
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/clover.yaml b/releases/fraser/clover.yaml
index c731d2a30..d7a87f811 100644
--- a/releases/fraser/clover.yaml
+++ b/releases/fraser/clover.yaml
@@ -10,6 +10,13 @@ releases:
- version: opnfv-6.0.1
location:
clover: be5f20bbe91f1ae3138a1e338eea5b45e89bda82
+ - version: opnfv-6.1.0
+ location:
+ clover: 596a3573b2622a5d314349592088b6b737f5e126
+ - version: opnfv-6.2.0
+ location:
+ clover: 596a3573b2622a5d314349592088b6b737f5e126
+
branches:
- name: stable/fraser
diff --git a/releases/fraser/compass4nfv.yaml b/releases/fraser/compass4nfv.yaml
index 5c443361c..99f796230 100644
--- a/releases/fraser/compass4nfv.yaml
+++ b/releases/fraser/compass4nfv.yaml
@@ -4,6 +4,20 @@ project-type: installer
release-model: stable
releases:
+ - version: opnfv-6.2.0
+ location:
+ compass4nfv: c51e937d7a121f8a267f0522fb787adbfb1a7eb9
+ - version: opnfv-6.2.0
+ location:
+ compass-containers: 067a72e250f9eea8deed84348aef6681d305a160
+
+ - version: opnfv-6.1.0
+ location:
+ compass4nfv: 499d95cdea092ea9eb76a939b6ea832601d41b7f
+ - version: opnfv-6.1.0
+ location:
+ compass-containers: 15a7cbc925bed896c3c09a5635454c33dbffbadc
+
- version: opnfv-6.0.0
location:
compass4nfv: ab73374e424a679cc42b9812e6bd39a49fcea07d
diff --git a/releases/fraser/container4nfv.yaml b/releases/fraser/container4nfv.yaml
index ed42ff0f7..c95007f3c 100644
--- a/releases/fraser/container4nfv.yaml
+++ b/releases/fraser/container4nfv.yaml
@@ -7,6 +7,9 @@ releases:
- version: opnfv-6.0.0
location:
container4nfv: 38d0ffe507a137167ffdbac860de5c1a738e81a8
+ - version: opnfv-6.1.0
+ location:
+ container4nfv: 38d0ffe507a137167ffdbac860de5c1a738e81a8
branches:
- name: stable/fraser
diff --git a/releases/fraser/doctor.yaml b/releases/fraser/doctor.yaml
index 28cfe7b19..ee1026123 100644
--- a/releases/fraser/doctor.yaml
+++ b/releases/fraser/doctor.yaml
@@ -16,6 +16,14 @@ releases:
location:
doctor: cd500723c3b2de3655b2dc56ea9647f358183264
+ - version: opnfv-6.1.0
+ location:
+ doctor: c91aa72e7df34ec3416be3c9f73f7484a91312fb
+
+ - version: opnfv-6.2.0
+ location:
+ doctor: 7fda374ace0122200146a60c422019399884d9b7
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/fds.yaml b/releases/fraser/fds.yaml
index 9d08cbf46..5544585c5 100644
--- a/releases/fraser/fds.yaml
+++ b/releases/fraser/fds.yaml
@@ -3,6 +3,14 @@ project: fds
project-type: feature
release-model: stable
+releases:
+ - version: opnfv-6.1.0
+ location:
+ fds: 6eb4ed8ce9be7135ec65318b7b833f3c487498be
+ - version: opnfv-6.2.0
+ location:
+ fds: 0a8efd332d57324b1dd8b41884730f1d1cdfc2b2
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/fuel.yaml b/releases/fraser/fuel.yaml
index 226ba5834..f139c672c 100644
--- a/releases/fraser/fuel.yaml
+++ b/releases/fraser/fuel.yaml
@@ -15,6 +15,15 @@ releases:
- version: opnfv-6.0.0
location:
fuel: d45841926790df8313912697d31753c120e2c4aa
+ - version: opnfv-6.1.0
+ location:
+ fuel: e29220a401a5ad0607453d6a82de9b61d1c02aca
+ - version: opnfv-6.2.0
+ location:
+ fuel: 93c3c3acd269016b63e72cfdda16c8652e0b2f00
+ - version: opnfv-6.2.1
+ location:
+ fuel: 56cfed1a8981a16f2671754d8aa29f7c850a0ee0
branches:
- name: stable/fraser
diff --git a/releases/fraser/functest.yaml b/releases/fraser/functest.yaml
index d1837b8b8..0466e6e86 100644
--- a/releases/fraser/functest.yaml
+++ b/releases/fraser/functest.yaml
@@ -10,6 +10,18 @@ releases:
- version: opnfv-6.0.0
location:
functest-kubernetes: 770bd295031af2e12da3472b9ed2763bfdc4deaf
+ - version: opnfv-6.1.0
+ location:
+ functest: 7be15936ba4fd0f624200ae6b587081ab292077c
+ - version: opnfv-6.1.0
+ location:
+ functest-kubernetes: c3e48ccef64acc6ba31823e1c8d6138eebbffb8c
+ - version: opnfv-6.2.0
+ location:
+ functest: f7948517b7cfabf8405e64eb4c2057c0105b852f
+ - version: opnfv-6.2.0
+ location:
+ functest-kubernetes: d1a1e7e92053d767e8322d17370a8700562b44a0
branches:
- name: stable/fraser
diff --git a/releases/fraser/ipv6.yaml b/releases/fraser/ipv6.yaml
index 2e92199c4..64dd74a83 100644
--- a/releases/fraser/ipv6.yaml
+++ b/releases/fraser/ipv6.yaml
@@ -15,8 +15,16 @@ releases:
- version: opnfv-6.0.0
location:
ipv6: 5b914695088b39aee3886bd60be4707b7a11a1e8
+ - version: opnfv-6.1.0
+ location:
+ ipv6: 5c8ce8ff16e9dee430357cb60d1eba5a8d1961b7
+ - version: opnfv-6.2.0
+ location:
+ ipv6: e24312ba6ba61f70e9dd815fb03f7bf22dbe311d
branches:
- name: stable/fraser
location:
ipv6: 809dba7f52ff1571a760a01376530de23c5d97c9
+
+release-notes: http://docs.opnfv.org/en/stable-fraser/submodules/ipv6/docs/release/release-notes/release-notes.html
diff --git a/releases/fraser/joid.yaml b/releases/fraser/joid.yaml
index 6c230c3ae..fcb6d3771 100644
--- a/releases/fraser/joid.yaml
+++ b/releases/fraser/joid.yaml
@@ -16,6 +16,10 @@ releases:
location:
joid: 266a4fd08bef19fca930cbbb1d45f5639b87d3c0
+ - version: opnfv-6.1.0
+ location:
+ joid: ff656d6b0fa60241c76709a41c023b76ba4def8f
+
branches:
- name: stable/fraser
location:
diff --git a/releases/fraser/nfvbench.yaml b/releases/fraser/nfvbench.yaml
index 9df164283..ba423d351 100644
--- a/releases/fraser/nfvbench.yaml
+++ b/releases/fraser/nfvbench.yaml
@@ -7,6 +7,9 @@ releases:
- version: opnfv-6.0.0
location:
nfvbench: c8402089ad8686a16ad08ce6c6e16a14c3144d64
+ - version: opnfv-6.1.0
+ location:
+ nfvbench: c8402089ad8686a16ad08ce6c6e16a14c3144d64
branches:
- name: stable/fraser
diff --git a/releases/fraser/opnfvdocs.yaml b/releases/fraser/opnfvdocs.yaml
index 6e2232897..a206f114b 100644
--- a/releases/fraser/opnfvdocs.yaml
+++ b/releases/fraser/opnfvdocs.yaml
@@ -7,6 +7,9 @@ releases:
- version: opnfv-6.0.0
location:
opnfvdocs: 49538d56771c45d8d437ab00abaa1b52f97ac931
+ - version: opnfv-6.1.0
+ location:
+ opnfvdocs: 98570eb59bb4abda67cea7a22feec45eebc4bec2
branches:
- name: stable/fraser
diff --git a/releases/fraser/ovn4nfv.yaml b/releases/fraser/ovn4nfv.yaml
index 40eac0c2c..3b88d7910 100644
--- a/releases/fraser/ovn4nfv.yaml
+++ b/releases/fraser/ovn4nfv.yaml
@@ -8,6 +8,9 @@ releases:
- version: opnfv-6.0.0
location:
ovn4nfv: 651acb603c2f4523905e4fe5134fd8a7940e1f3d
+ - version: opnfv-6.1.0
+ location:
+ ovn4nfv: 651acb603c2f4523905e4fe5134fd8a7940e1f3d
branches:
- name: stable/fraser
diff --git a/releases/fraser/samplevnf.yaml b/releases/fraser/samplevnf.yaml
index 3c30f7223..11728a736 100644
--- a/releases/fraser/samplevnf.yaml
+++ b/releases/fraser/samplevnf.yaml
@@ -7,6 +7,13 @@ releases:
- version: opnfv-6.0.0
location:
samplevnf: 4685c59ec97927af559b4bf10001d0e07de34702
+ - version: opnfv-6.1.0
+ location:
+ samplevnf: 95e9ab89f6d8f9911a9fdb625e8721f3d2e20b1a
+ - version: opnfv-6.2.0
+ location:
+ samplevnf: 692702c10772e13b533c908ed3f95a430ad476ce
+
branches:
- name: stable/fraser
diff --git a/releases/fraser/sdnvpn.yaml b/releases/fraser/sdnvpn.yaml
index 6fa8fa546..77e3390fb 100644
--- a/releases/fraser/sdnvpn.yaml
+++ b/releases/fraser/sdnvpn.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
sdnvpn: be6cce375c0363f93fa6b1a099eb34fee75a6161
+ - version: opnfv-6.1.0
+ location:
+ sdnvpn: be6cce375c0363f93fa6b1a099eb34fee75a6161
+ - version: opnfv-6.2.0
+ location:
+ sdnvpn: 8e60d220cbe67c9274b32dfe8d73e1c16351a80f
branches:
- name: stable/fraser
diff --git a/releases/fraser/sfc.yaml b/releases/fraser/sfc.yaml
index 83850d76f..b1648a72b 100644
--- a/releases/fraser/sfc.yaml
+++ b/releases/fraser/sfc.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
sfc: 084446656bf2794a11de56b782f589af1f703487
+ - version: opnfv-6.1.0
+ location:
+ sfc: 7f8a775dec72e03d6cae2400b7a49d7a097c8957
+ - version: opnfv-6.2.0
+ location:
+ sfc: 297052a5aa6dd596443930e8ad0d2754b70f79ba
branches:
- name: stable/fraser
diff --git a/releases/fraser/snaps.yaml b/releases/fraser/snaps.yaml
index c6c316c2a..953f5f3dd 100644
--- a/releases/fraser/snaps.yaml
+++ b/releases/fraser/snaps.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
snaps: 4edc3d87392cf78c3f046217543fb76380413306
+ - version: opnfv-6.1.0
+ location:
+ snaps: 4edc3d87392cf78c3f046217543fb76380413306
+ - version: opnfv-6.2.0
+ location:
+ snaps: 7f8eee2885899f949eda99281818020301c3c841
branches:
- name: stable/fraser
diff --git a/releases/fraser/stor4nfv.yaml b/releases/fraser/stor4nfv.yaml
index b4fd8454a..3259b30d9 100644
--- a/releases/fraser/stor4nfv.yaml
+++ b/releases/fraser/stor4nfv.yaml
@@ -7,6 +7,9 @@ releases:
- version: opnfv-6.0.0
location:
stor4nfv: fcedde93eb366867ed428d362e2cb8a6b7f28b3c
+ - version: opnfv-6.1.0
+ location:
+ stor4nfv: 3f654aa9b1e19eb9d84b0632a5bc1e7bde96c281
branches:
- name: stable/fraser
diff --git a/releases/fraser/storperf.yaml b/releases/fraser/storperf.yaml
index 1389c7aa2..b0ef484fc 100644
--- a/releases/fraser/storperf.yaml
+++ b/releases/fraser/storperf.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
storperf: 2f8c1546ee5d79f9b4c46e960a74930cfe0fe50e
+ - version: opnfv-6.1.0
+ location:
+ storperf: 8962423227e13f45ef9f7dfbf48ed4847d3f3865
+ - version: opnfv-6.2.0
+ location:
+ storperf: c3707ede35cb59d1ea3139dca6d76de1b76345af
branches:
- name: stable/fraser
diff --git a/releases/fraser/vswitchperf.yaml b/releases/fraser/vswitchperf.yaml
index 95d8db6af..f86df4037 100644
--- a/releases/fraser/vswitchperf.yaml
+++ b/releases/fraser/vswitchperf.yaml
@@ -7,6 +7,12 @@ releases:
- version: opnfv-6.0.0
location:
vswitchperf: 998842df061caf3f90adf756c78667262525a6e0
+ - version: opnfv-6.1.0
+ location:
+ vswitchperf: 998842df061caf3f90adf756c78667262525a6e0
+ - version: opnfv-6.2.0
+ location:
+ vswitchperf: 998842df061caf3f90adf756c78667262525a6e0
branches:
- name: stable/fraser
diff --git a/releases/fraser/yardstick.yaml b/releases/fraser/yardstick.yaml
index 59f6c10aa..cd87e97ff 100644
--- a/releases/fraser/yardstick.yaml
+++ b/releases/fraser/yardstick.yaml
@@ -7,6 +7,15 @@ releases:
- version: opnfv-6.0.0
location:
yardstick: a4c8f2a99f56dd4c9fbac4021706aa9186d23ed8
+ - version: opnfv-6.1.0
+ location:
+ yardstick: 7dc30d54a77249d95d2a89770393cee98ff63c8c
+ - version: opnfv-6.2.0
+ location:
+ yardstick: b07610535fc00ff02693942fca8b0a55995dc67e
+ - version: opnfv-6.2.1
+ location:
+ yardstick: a99613376daa0656bcd0b24d9c56661ff15c8916
branches:
- name: stable/fraser
diff --git a/releases/gambia/apex.yaml b/releases/gambia/apex.yaml
new file mode 100644
index 000000000..fada4cbb1
--- /dev/null
+++ b/releases/gambia/apex.yaml
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+---
+project: apex
+project-type: installer
+release-model: stable
+upstream: https://wiki.openstack.org/wiki/TripleO
+
+branches:
+ - name: stable/gambia
+ location:
+ apex: 82bf9da27ea0c973068720d440e3391084e8a9d9
diff --git a/releases/gambia/armband.yaml b/releases/gambia/armband.yaml
new file mode 100644
index 000000000..2e5f65af5
--- /dev/null
+++ b/releases/gambia/armband.yaml
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+---
+project: armband
+project-type: installer
+release-model: stable
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ armband: 30027365166c204bc03043234bbc6b0dfc2506fb
+
+branches:
+ - name: stable/gambia
+ location:
+ armband: a880b5c0fe55397b73f0fcf8f8c87d523327099d
+
+release-notes: https://opnfv-armband.readthedocs.io/en/latest/release/release-notes/release-notes.html
diff --git a/releases/gambia/auto.yaml b/releases/gambia/auto.yaml
new file mode 100644
index 000000000..f53a41131
--- /dev/null
+++ b/releases/gambia/auto.yaml
@@ -0,0 +1,9 @@
+---
+project: auto
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ auto: 1a2260efe5d15f95b8fa778a9ee8023121facd7e
diff --git a/releases/gambia/availability.yaml b/releases/gambia/availability.yaml
new file mode 100644
index 000000000..ee28fec30
--- /dev/null
+++ b/releases/gambia/availability.yaml
@@ -0,0 +1,9 @@
+---
+project: availability
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ availability: 053a75d02fe1842ba3e2bc0d6b019e1cdc6a6123
diff --git a/releases/gambia/barometer.yaml b/releases/gambia/barometer.yaml
new file mode 100644
index 000000000..e5c9842bf
--- /dev/null
+++ b/releases/gambia/barometer.yaml
@@ -0,0 +1,9 @@
+---
+project: barometer
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ barometer: 9ac248a08de1f197bafbabbf43175b30ab19ec32
diff --git a/releases/gambia/bottlenecks.yaml b/releases/gambia/bottlenecks.yaml
new file mode 100644
index 000000000..d32d2073f
--- /dev/null
+++ b/releases/gambia/bottlenecks.yaml
@@ -0,0 +1,9 @@
+---
+project: bottlenecks
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ bottlenecks: 399ec2f328f56c1f81c454ecedfb6b99eaf93c42
diff --git a/releases/gambia/clover.yaml b/releases/gambia/clover.yaml
new file mode 100644
index 000000000..260d56c21
--- /dev/null
+++ b/releases/gambia/clover.yaml
@@ -0,0 +1,16 @@
+---
+project: clover
+project-type: feature
+release-model: stable
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ clover: b0231105e304d21f454bec58c4c2905f8d8b8e5f
+
+branches:
+ - name: stable/gambia
+ location:
+ clover: ee2169ee4b8fb3539ad173fbc1557b54b2f2216f
+
+release-notes: https://opnfv-clover.readthedocs.io/en/stable-gambia/release/release-notes/release-notes.html
diff --git a/releases/gambia/compass4nfv.yaml b/releases/gambia/compass4nfv.yaml
new file mode 100644
index 000000000..e0523889c
--- /dev/null
+++ b/releases/gambia/compass4nfv.yaml
@@ -0,0 +1,12 @@
+---
+project: compass4nfv
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ compass4nfv: 33f94b43639dbe37b7e8e2b5eeb4c65064207c6b
+ - name: stable/gambia
+ location:
+ compass-containers: 20e229822b31b03e1120c3e5efd4ba131261617e
diff --git a/releases/gambia/container4nfv.yaml b/releases/gambia/container4nfv.yaml
new file mode 100644
index 000000000..6522cfa7a
--- /dev/null
+++ b/releases/gambia/container4nfv.yaml
@@ -0,0 +1,9 @@
+---
+project: container4nfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ container4nfv: 1fa07ef952a6b0e12487901919cec52b9d9b9739
diff --git a/releases/gambia/doctor.yaml b/releases/gambia/doctor.yaml
new file mode 100644
index 000000000..3bf86a494
--- /dev/null
+++ b/releases/gambia/doctor.yaml
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Nokia Corporation 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
+##############################################################################
+---
+project: doctor
+project-type: feature
+release-model: stable
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ doctor: 3ddc2392b0ed364eede49ff006d64df3ea456350
+ - version: opnfv-7.0.1
+ location:
+ doctor: 9250be9b9f3e3fff0c5aa827daf89f0212ce964f
+
+branches:
+ - name: stable/gambia
+ location:
+ doctor: 3ddc2392b0ed364eede49ff006d64df3ea456350
diff --git a/releases/gambia/edgecloud.yaml b/releases/gambia/edgecloud.yaml
new file mode 100644
index 000000000..db8038340
--- /dev/null
+++ b/releases/gambia/edgecloud.yaml
@@ -0,0 +1,9 @@
+---
+project: edgecloud
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ edgecloud: 3708debe3f7ff9edd0f0a52998ebf7a799bb712f
diff --git a/releases/gambia/fuel.yaml b/releases/gambia/fuel.yaml
new file mode 100644
index 000000000..a958209b0
--- /dev/null
+++ b/releases/gambia/fuel.yaml
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+---
+project: fuel
+project-type: installer
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ fuel: 90a442136b0aff8380388ac0a94831d0904e3cb8
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ fuel: 326c26b9b89c23e9775ba287d9da3bea35cfc437
+
+release-notes: https://opnfv-fuel.readthedocs.io/en/latest/release/release-notes/release-notes.html
diff --git a/releases/gambia/functest.yaml b/releases/gambia/functest.yaml
new file mode 100644
index 000000000..722a35e70
--- /dev/null
+++ b/releases/gambia/functest.yaml
@@ -0,0 +1,23 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ functest: b7f9b53a34cd8ffcc9df4d2f286e55e13adb4a58
+ - version: opnfv-7.0.0
+ location:
+ functest-kubernetes: fd5c939094244458aea31ead8c6519da95266c2a
+
+branches:
+ - name: stable/gambia
+ location:
+ functest: d5fce8c12bc73c1b1547df2750563c271a3ab3f6
+ - name: stable/gambia
+ location:
+ functest-kubernetes: ca3c9cf6f57c87aee8c6f0b93f70d84e3df736de
+ - name: stable/gambia
+ location:
+ functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca
diff --git a/releases/gambia/ipv6.yaml b/releases/gambia/ipv6.yaml
new file mode 100644
index 000000000..a566e547c
--- /dev/null
+++ b/releases/gambia/ipv6.yaml
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+---
+project: ipv6
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ ipv6: e36f753cf6e9ab0c02a400b6bac5c79b48268d44
diff --git a/releases/gambia/nfvbench.yaml b/releases/gambia/nfvbench.yaml
new file mode 100644
index 000000000..796ec4de4
--- /dev/null
+++ b/releases/gambia/nfvbench.yaml
@@ -0,0 +1,9 @@
+---
+project: nfvbench
+project-type: tools
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ nfvbench: 3dfb5268ebfada08c1a2316708564e627f86da42
diff --git a/releases/gambia/opnfvdocs.yaml b/releases/gambia/opnfvdocs.yaml
new file mode 100644
index 000000000..b9cd04f4b
--- /dev/null
+++ b/releases/gambia/opnfvdocs.yaml
@@ -0,0 +1,9 @@
+---
+project: opnfvdocs
+project-type: infra
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ opnfvdocs: c89a5b35e81cf085bba892b230ca4516a92ffd57
diff --git a/releases/gambia/ovn4nfv.yaml b/releases/gambia/ovn4nfv.yaml
new file mode 100644
index 000000000..b5c8ad3c2
--- /dev/null
+++ b/releases/gambia/ovn4nfv.yaml
@@ -0,0 +1,9 @@
+---
+project: ovn4nfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ ovn4nfv: 9301afc8b3d9314ba19b464b8a7eb3cb7fa3bd7e
diff --git a/releases/gambia/samplevnf.yaml b/releases/gambia/samplevnf.yaml
new file mode 100644
index 000000000..6efd2d49b
--- /dev/null
+++ b/releases/gambia/samplevnf.yaml
@@ -0,0 +1,16 @@
+---
+project: samplevnf
+project-type: feature
+release-model: stable
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ samplevnf: 66ee98f3427439a4cdd56c9f67a25aec140a5c9c
+
+branches:
+ - name: stable/gambia
+ location:
+ samplevnf: 4d59d3530d1c41734f15423142e64eb9c929c717
+
+release-notes: https://opnfv-samplevnf.readthedocs.io/en/latest/release/release-notes/release-notes.html
diff --git a/releases/gambia/sandbox.yaml b/releases/gambia/sandbox.yaml
new file mode 100644
index 000000000..16f2df24e
--- /dev/null
+++ b/releases/gambia/sandbox.yaml
@@ -0,0 +1,9 @@
+---
+project: sandbox
+project-type: infra
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ sandbox: c2012f5b642f17e6024db631b833414114a329d5
diff --git a/releases/gambia/sdnvpn.yaml b/releases/gambia/sdnvpn.yaml
new file mode 100644
index 000000000..c3ee8cad3
--- /dev/null
+++ b/releases/gambia/sdnvpn.yaml
@@ -0,0 +1,9 @@
+---
+project: sdnvpn
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ sdnvpn: c05105a4f9f51f7bb31cad791e65d664e5a3bc4b
diff --git a/releases/gambia/sfc.yaml b/releases/gambia/sfc.yaml
new file mode 100644
index 000000000..c32b9c8c5
--- /dev/null
+++ b/releases/gambia/sfc.yaml
@@ -0,0 +1,11 @@
+---
+project: sfc
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ sfc: 77bdb6a79a506f91959070dc8ff28949f2dff825
+
+release-notes: https://opnfv-sfc.readthedocs.io/en/stable-gambia/release/release-notes/
diff --git a/releases/gambia/stor4nfv.yaml b/releases/gambia/stor4nfv.yaml
new file mode 100644
index 000000000..65c327fe1
--- /dev/null
+++ b/releases/gambia/stor4nfv.yaml
@@ -0,0 +1,9 @@
+---
+project: stor4nfv
+project-type: feature
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ stor4nfv: cefd1d0854ee948acc7147834146914983a11556
diff --git a/releases/gambia/storperf.yaml b/releases/gambia/storperf.yaml
new file mode 100644
index 000000000..088f73821
--- /dev/null
+++ b/releases/gambia/storperf.yaml
@@ -0,0 +1,9 @@
+---
+project: storperf
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ storperf: 4aba838a07f5cd7dbd6d606c34f688e647a5d890
diff --git a/releases/gambia/vswitchperf.yaml b/releases/gambia/vswitchperf.yaml
new file mode 100644
index 000000000..8daa55e73
--- /dev/null
+++ b/releases/gambia/vswitchperf.yaml
@@ -0,0 +1,9 @@
+---
+project: vswitchperf
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ vswitchperf: 96de8654952a606d28d56c057ba871b5553e4176
diff --git a/releases/gambia/yardstick.yaml b/releases/gambia/yardstick.yaml
new file mode 100644
index 000000000..2dc5ad6f4
--- /dev/null
+++ b/releases/gambia/yardstick.yaml
@@ -0,0 +1,16 @@
+---
+project: yardstick
+project-type: testing
+release-model: stable
+
+branches:
+ - name: stable/gambia
+ location:
+ yardstick: 497292013ef0d7e1e014d76803d4f284618b4986
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ yardstick: b9fa3eac6caf65a371f339fcbc3abc7cbe5b41cc
+
+release-notes: https://opnfv-yardstick.readthedocs.io/en/stable-gambia/release/release-notes/
diff --git a/releases/hunter/functest.yaml b/releases/hunter/functest.yaml
new file mode 100644
index 000000000..064ae056e
--- /dev/null
+++ b/releases/hunter/functest.yaml
@@ -0,0 +1,23 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+releases:
+ - version: opnfv-8.0.0
+ location:
+ functest: a3355e22585c66823c430d6adcdef8dddacb33a1
+ - version: opnfv-8.0.0
+ location:
+ functest-kubernetes: ec2bf0e8bd1b4d3b2c4e2894820d2cbb454e36e7
+
+branches:
+ - name: stable/hunter
+ location:
+ functest: d5fce8c12bc73c1b1547df2750563c271a3ab3f6
+ - name: stable/hunter
+ location:
+ functest-kubernetes: ca3c9cf6f57c87aee8c6f0b93f70d84e3df736de
+ - name: stable/hunter
+ location:
+ functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca
diff --git a/releases/scripts/create_branch.py b/releases/scripts/create_branch.py
deleted file mode 100644
index fa3c92def..000000000
--- a/releases/scripts/create_branch.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python2
-# SPDX-License-Identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018 The Linux Foundation 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
-##############################################################################
-"""
-Create Gerrit Branchs
-"""
-
-import argparse
-
-try:
- import ConfigParser
-except ImportError:
- import configparser as ConfigParser
-
-import logging
-import os
-import yaml
-
-from requests.compat import quote
-from requests.exceptions import RequestException
-
-from pygerrit2.rest import GerritRestAPI
-from pygerrit2.rest.auth import HTTPDigestAuthFromNetrc, HTTPBasicAuthFromNetrc
-
-
-logging.basicConfig(level=logging.INFO)
-
-
-def quote_branch(arguments):
- """
- Quote is used here to escape the '/' in branch name. By
- default '/' is listed in 'safe' characters which aren't escaped.
- quote is not used in the data of the PUT request, as quoting for
- arguments is handled by the request library
- """
- new_args = arguments.copy()
- new_args['branch'] = quote(new_args['branch'], '')
- return new_args
-
-
-def create_branch(api, arguments):
- """
- Create a branch using the Gerrit REST API
- """
- logger = logging.getLogger(__file__)
-
- branch_data = """
- {
- "ref": "%(branch)s"
- "revision": "%(commit)s"
- }""" % arguments
-
- # First verify the commit exists, otherwise the branch will be
- # created at HEAD
- try:
- request = api.get("/projects/%(project)s/commits/%(commit)s" %
- arguments)
- logger.debug(request)
- logger.debug("Commit exists: %(commit)s", arguments)
- except RequestException as err:
- if hasattr(err, 'response') and err.response.status_code in [404]:
- logger.warn("Commit %(commit)s for %(project)s does"
- " not exist. Not creating branch.", arguments)
- logger.warn(err)
- else:
- logger.error("Error: %s", str(err))
- # Skip trying to create the branch
- return
-
- # Try to create the branch and let us know if it already exist.
- try:
- request = api.put("/projects/%(project)s/branches/%(branch)s" %
- quote_branch(arguments), branch_data)
- logger.info("Branch %(branch)s for %(project)s successfully created",
- arguments)
- except RequestException as err:
- if hasattr(err, 'response') and err.response.status_code in [412, 409]:
- logger.info("Branch %(branch)s already created for %(project)s",
- arguments)
- logger.info(err)
- else:
- logger.error("Error: %s", str(err))
-
-
-def main():
- """Given a yamlfile that follows the release syntax, create branches
- in Gerrit listed under branches"""
-
- config = ConfigParser.ConfigParser()
- config.read(os.path.join(os.path.abspath(os.path.dirname(__file__)),
- 'defaults.cfg'))
- config.read([os.path.expanduser('~/releases.cfg'), 'releases.cfg'])
-
- gerrit_url = config.get('gerrit', 'url')
-
- parser = argparse.ArgumentParser()
- parser.add_argument('--file', '-f',
- type=argparse.FileType('r'),
- required=True)
- parser.add_argument('--basicauth', '-b', action='store_true')
- args = parser.parse_args()
-
- GerritAuth = HTTPDigestAuthFromNetrc
- if args.basicauth:
- GerritAuth = HTTPBasicAuthFromNetrc
-
- try:
- auth = GerritAuth(url=gerrit_url)
- except ValueError as err:
- logging.error("%s for %s", err, gerrit_url)
- quit(1)
- restapi = GerritRestAPI(url=gerrit_url, auth=auth)
-
- project = yaml.safe_load(args.file)
-
- create_branches(restapi, project)
-
-
-def create_branches(restapi, project):
- """Create branches for a specific project defined in the release
- file"""
-
- branches = []
- for branch in project['branches']:
- repo, ref = next(iter(branch['location'].items()))
- branches.append({
- 'project': repo,
- 'branch': branch['name'],
- 'commit': ref
- })
-
- for branch in branches:
- create_branch(restapi, branch)
-
-
-if __name__ == "__main__":
- main()
diff --git a/releases/scripts/release-status.sh b/releases/scripts/release-status.sh
new file mode 100755
index 000000000..6790100a7
--- /dev/null
+++ b/releases/scripts/release-status.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+set -o pipefail
+
+TAG="${TAG:-opnfv-6.0.0}"
+RELEASE="${RELEASE:-fraser}"
+
+[ -a repos.txt ] && rm repos.txt
+
+for project in releases/$RELEASE/*; do
+ python releases/scripts/repos.py -n -f $project >> repos.txt
+done
+
+while read -r repo
+do
+ tag="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/tags/$TAG")"
+ echo "$repo $tag"
+done < repos.txt
diff --git a/releases/scripts/repos.py b/releases/scripts/repos.py
new file mode 100644
index 000000000..91c4e9300
--- /dev/null
+++ b/releases/scripts/repos.py
@@ -0,0 +1,121 @@
+#!/usr/bin/env python2
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation 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
+##############################################################################
+"""
+List Release Repos
+"""
+
+import argparse
+import yaml
+
+
+class Repo(object):
+ """Object representing a repo listed in the release file.
+
+ Includes eq, hash, and ne methods so set comparisons work
+ """
+
+ def __init__(self, repo=None, ref=None, version=None):
+ self.repo = repo
+ self.ref = ref
+ self.version = version
+
+ def __repr__(self):
+ if self.version:
+ return "%s %s %s" % (self.repo, self.ref, self.version)
+ elif self.ref:
+ return "%s %s" % (self.repo, self.ref)
+ return "%s" % self.repo
+
+ def __eq__(self, obj):
+ if isinstance(obj, Repo):
+ return ((self.repo == obj.repo) and
+ (self.ref == obj.ref) and
+ (self.version == obj.version))
+ return False
+
+ def __ne__(self, obj):
+ return (not self.__eq__(obj))
+
+ def __hash__(self):
+ return hash(self.__repr__())
+
+
+def main():
+ """Given a release yamlfile list the repos it contains"""
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--file', '-f',
+ type=argparse.FileType('r'),
+ required=True)
+ parser.add_argument('--names', '-n',
+ action='store_true',
+ default=False,
+ help="Only print the names of repos, "
+ "not their SHAs")
+ parser.add_argument('--release', '-r',
+ type=str,
+ help="Only print"
+ "SHAs for the specified release")
+ parser.add_argument('--branches', '-b',
+ action='store_true',
+ default=False,
+ help="Print Branch info")
+
+ args = parser.parse_args()
+
+ project = yaml.safe_load(args.file)
+
+ if args.branches:
+ list_branches(project, args)
+ else:
+ list_repos(project, args)
+
+
+def list_repos(project, args):
+ """List repositories in the project file"""
+
+ lookup = project.get('releases', [])
+
+ if 'releases' not in project:
+ exit(0)
+ repos = set()
+ for item in lookup:
+ repo, ref = next(iter(item['location'].items()))
+ if args.names:
+ repos.add(Repo(repo))
+ elif args.release and item['version'] == args.release:
+ repos.add(Repo(repo, ref))
+ elif not args.release:
+ repos.add(Repo(repo, item['version'], ref))
+ for repo in repos:
+ print(repo)
+
+
+def list_branches(project, args):
+ """List branches in the project file"""
+
+ lookup = project.get('branches', [])
+
+ if 'branches' not in project:
+ exit(0)
+ repos = set()
+ for item in lookup:
+ repo, ref = next(iter(item['location'].items()))
+ if args.names:
+ repos.add(Repo(repo))
+ elif args.release and item['name'] == args.release:
+ repos.add(Repo(repo, ref))
+ elif not args.release:
+ repos.add(Repo(repo, item['name'], ref))
+ for repo in repos:
+ print(repo)
+
+if __name__ == "__main__":
+ main()
diff --git a/tox.ini b/tox.ini
index abdffc52d..0cc9e2333 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,9 +15,9 @@ setenv=
[testenv:jjb]
deps =
- jenkins-job-builder==1.6.1
+ jenkins-job-builder==2.5.0
commands=
- jenkins-jobs test -o job_output -r jjb/global:{posargs:"jjb/"}
+ jenkins-jobs test -o job_output -r {posargs:"jjb/"}
[testenv:docs]
deps = -r{toxinidir}/docs/requirements.txt
diff --git a/utils/artifacts.opnfv.org.sh b/utils/artifacts.opnfv.org.sh
index 1984b4992..2b35006d4 100755
--- a/utils/artifacts.opnfv.org.sh
+++ b/utils/artifacts.opnfv.org.sh
@@ -31,7 +31,7 @@ do
for index in $(gsutil ls -l gs://artifacts.opnfv.org/logs/"$project"/ |awk 'NF==1'| sed s,gs://artifacts.opnfv.org/,, )
do
index="$(echo ${index%/*} | sed s,/,_,g)"
- echo "<LI><a href=\"http://artifacts.opnfv.org/${index%/*}.html\">"$index"</a></LI>" >> $OUTPUT
+ echo "<LI><a href=\"https://artifacts.opnfv.org/${index%/*}.html\">"$index"</a></LI>" >> $OUTPUT
done
done
@@ -55,7 +55,7 @@ rm -f $OUTPUT
echo "<LI>$path</LI>" >> $OUTPUT
echo "</UL>" >> $OUTPUT
else
- echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ echo "<LI><a href=\"https://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
fi
done
@@ -85,7 +85,7 @@ rm -f $OUTPUT
echo "<LI>$path</LI>" >> $OUTPUT
echo "</UL>" >> $OUTPUT
else
- echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ echo "<LI><a href=\"https://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
fi
done
@@ -119,7 +119,7 @@ do
echo "<LI>$path</LI>" >> $OUTPUT
echo "</UL>" >> $OUTPUT
else
- echo "<LI><a href=\"http://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
+ echo "<LI><a href=\"https://artifacts.opnfv.org/$filepath\">"$filepath"</a></LI>" >> $OUTPUT
fi
diff --git a/utils/build-server-ansible/main.yml b/utils/build-server-ansible/main.yml
index 0fcce715d..a4d3b08cb 100644
--- a/utils/build-server-ansible/main.yml
+++ b/utils/build-server-ansible/main.yml
@@ -31,7 +31,16 @@
pip:
name: tox
state: present
+ - name: install yamllint
+ pip:
+ name: yamllint
+ state: present
- include: vars/docker-compose-CentOS.yml
when: ansible_distribution == "CentOS"
- include: vars/docker-compose-Ubuntu.yml
when: ansible_distribution == "Ubuntu"
+ - name: Install manifest-tool
+ get_url:
+ url: '{{ manifest_tool_url }}/{{ manifest_tool_version }}/manifest-tool-linux-amd64'
+ dest: '{{ manifest_tool_bin_dir }}/manifest-tool'
+ mode: '755'
diff --git a/utils/build-server-ansible/vars/CentOS.yml b/utils/build-server-ansible/vars/CentOS.yml
index 528388f27..50839be70 100644
--- a/utils/build-server-ansible/vars/CentOS.yml
+++ b/utils/build-server-ansible/vars/CentOS.yml
@@ -29,23 +29,25 @@
name: "{{ item }}"
state: present
with_items:
- - python-pip
- - rpm-build
+ - bc
+ - collectd
+ - doxygen
+ - facter
+ - jq
- kernel-headers
- libpcap-devel
- - zlib-devel
- - numactl-devel
- - doxygen
- - python-sphinx
- libvirt-devel
- - python-devel
+ - net-tools
+ - numactl-devel
- openssl-devel
+ - python-devel
+ - python-pip
- python-six
- - net-tools
- - bc
+ - python-sphinx
+ - rpm-build
- sysstat
- xmlstarlet
- - facter
+ - zlib-devel
- name: install the 'Development tools' package group
yum:
diff --git a/utils/build-server-ansible/vars/Ubuntu.yml b/utils/build-server-ansible/vars/Ubuntu.yml
index e91c48569..bd77a4d10 100644
--- a/utils/build-server-ansible/vars/Ubuntu.yml
+++ b/utils/build-server-ansible/vars/Ubuntu.yml
@@ -59,6 +59,77 @@
- sysstat
- xmlstarlet
- facter
+ - jq
+ - python-tox
+ - collectd-dev
+ - python3
+ - python3-dev
+ - libdpdk-dev
+ - dpdk-dev
+ - fakeroot
+ - devscripts
+ - debhelper
+ - dpkg-dev
+ - po-debconf
+ - dh-systemd
+ - dh-strip-nondeterminism
+ - autotools-dev
+ - libltdl-dev
+ - iptables-dev
+ - javahelper
+ - libatasmart-dev
+ - libcap-dev
+ - libcurl4-gnutls-dev
+ - libdbi0-dev
+ - libesmtp-dev
+ - libganglia1-dev
+ - libgcrypt11-dev
+ - libgps-dev
+ - libhiredis-dev
+ - libi2c-dev
+ - libldap2-dev
+ - liblua5.3-dev
+ - liblvm2-dev
+ - libmemcached-dev
+ - libmodbus-dev
+ - libmnl-dev
+ - libmosquitto-dev
+ - libmysqlclient-dev
+ - libnotify-dev
+ - libopenipmi-dev
+ - liboping-dev
+ - libow-dev
+ - libpcap0.8-dev
+ - libpcap-dev
+ - libperl-dev
+ - libpq-dev
+ - libprotobuf-c-dev
+ - libriemann-client-dev
+ - librdkafka-dev
+ - librabbitmq-dev
+ - librrd-dev
+ - libsensors4-dev
+ - libsigrok-dev
+ - libsnmp-dev
+ - libsnmp9-dev
+ - snmp
+ - snmp-mibs-downloader
+ - snmpd
+ - perl
+ - libtokyocabinet-dev
+ - libtokyotyrant-dev
+ - libudev-dev
+ - libupsclient-dev
+ - libvarnishapi-dev
+ - libvirt-dev
+ - libvirt-daemon
+ - libxen-dev
+ - libyajl-dev
+ - linux-libc-dev
+ - default-jdk
+ - protobuf-c-compiler
+ - openvswitch-switch
+ - mcelog
- name: Add Docker apt key.
apt_key:
diff --git a/utils/build-server-ansible/vars/defaults.yml b/utils/build-server-ansible/vars/defaults.yml
index 8d83380dd..ff37c953c 100644
--- a/utils/build-server-ansible/vars/defaults.yml
+++ b/utils/build-server-ansible/vars/defaults.yml
@@ -21,3 +21,7 @@ docker_yum_repo_url: https://download.docker.com/linux/centos/docker-ce.repo
# yamllint enable rule:line-length
docker_yum_repo_enable_edge: 0
docker_yum_repo_enable_test: 0
+
+manifest_tool_version: 'v0.7.0'
+manifest_tool_url: 'https://github.com/estesp/manifest-tool/releases/download'
+manifest_tool_bin_dir: '/usr/local/bin'
diff --git a/utils/fetch_os_creds.sh b/utils/fetch_os_creds.sh
index 4bc585885..501095036 100755
--- a/utils/fetch_os_creds.sh
+++ b/utils/fetch_os_creds.sh
@@ -8,7 +8,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
set -o errexit
-set -o nounset
set -o pipefail
usage() {
@@ -149,23 +148,33 @@ if [ "$installer_type" == "fuel" ]; then
echo $auth_url >> $dest_path
elif [ "$installer_type" == "apex" ]; then
- if ! ipcalc -c $installer_ip; then
- installer_ip=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
- if [ -z "$installer_ip" ] || ! $(ipcalc -c $installer_ip); then
- echo "Unable to find valid IP for Apex undercloud: ${installer_ip}"
- exit 1
- fi
- fi
- verify_connectivity $installer_ip
+ if [ -n "$RC_FILE_PATH" ]; then
+ echo "RC_FILE_PATH is set: ${RC_FILE_PATH}. Copying RC FILE to ${dest_path}"
+ sudo cp -f ${RC_FILE_PATH} ${dest_path}
+ else
+ if ! ipcalc -c $installer_ip; then
+ installer_ip=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
+ if [ -z "$installer_ip" ] || ! $(ipcalc -c $installer_ip); then
+ echo "Unable to find valid IP for Apex undercloud: ${installer_ip}"
+ exit 1
+ fi
+ fi
+ verify_connectivity $installer_ip
- # The credentials file is located in the Instack VM (192.0.2.1)
- # NOTE: This might change for bare metal deployments
- info "... from Instack VM $installer_ip..."
- if [ -f /root/.ssh/id_rsa ]; then
- chmod 600 /root/.ssh/id_rsa
- fi
- sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc.v3 $dest_path
+ # The credentials file is located in the Instack VM (192.0.2.1)
+ # NOTE: This might change for bare metal deployments
+ info "... from Instack VM $installer_ip..."
+ if [ -f /root/.ssh/id_rsa ]; then
+ chmod 600 /root/.ssh/id_rsa
+ fi
+ if [ "${BRANCH}" == "stable/fraser" ]; then
+ rc_file=overcloudrc.v3
+ else
+ rc_file=overcloudrc
+ fi
+ sudo scp $ssh_options root@$installer_ip:/home/stack/${rc_file} $dest_path
+ fi
elif [ "$installer_type" == "compass" ]; then
if [ "${BRANCH}" == "stable/danube" ]; then
verify_connectivity $installer_ip
diff --git a/utils/gpg_import_key.sh b/utils/gpg_import_key.sh
index f45e40919..94ffbaab5 100755
--- a/utils/gpg_import_key.sh
+++ b/utils/gpg_import_key.sh
@@ -51,10 +51,14 @@ else
if [ -z "$NODE_NAME" ];
then echo "Cannot find node name"
exit 0
- else echo "Importing key for '$NODE_NAME'";
- gsutil cp gs://opnfv-signing-keys/"$NODE_NAME"-subkey .
- gpg2 --import "$NODE_NAME"-subkey
- rm -f "$NODE_NAME"-subkey
- fi
+ elif gsutil ls gs://opnfv-signing-keys | grep $NODE_NAME; then
+ echo "Importing key for '$NODE_NAME'"
+ gsutil cp gs://opnfv-signing-keys/"$NODE_NAME"-subkey .
+ gpg2 --import "$NODE_NAME"-subkey
+ rm -f "$NODE_NAME"-subkey
+ else
+ echo "No keys found locally or remotely for host, skipping import"
+ exit 0
+ fi
fi
diff --git a/utils/push-test-logs.sh b/utils/push-test-logs.sh
index a87e399dd..253cfa7b3 100644
--- a/utils/push-test-logs.sh
+++ b/utils/push-test-logs.sh
@@ -21,15 +21,15 @@ dir_result="${HOME}/opnfv/$project/results/${branch}"
# src: https://wiki.opnfv.org/display/INF/Hardware+Infrastructure
# + intel-pod12 (vsperf)
node_list=(\
-'lf-pod1' 'lf-pod2' 'intel-pod2' 'intel-pod12' \
+'lf-pod1' 'lf-pod2' \
'lf-virtual2' 'lf-virtual3' \
-'intel-pod5' 'intel-pod6' 'intel-pod7' 'intel-pod8' 'intel-pod18' \
+'intel-pod12' 'intel-pod18' \
'ericsson-pod1' 'ericsson-pod2' \
'ericsson-virtual1' 'ericsson-virtual2' 'ericsson-virtual3' \
-'ericsson-virtual4' 'ericsson-virtual5' 'ericsson-virtual12' \
-'arm-pod1' 'arm-pod5' 'arm-pod6' \
-'huawei-pod1' 'huawei-pod2' 'huawei-pod3' 'huawei-pod4' 'huawei-pod5' \
-'huawei-pod6' 'huawei-pod7' 'huawei-pod12' \
+'ericsson-virtual4' 'ericsson-virtual5' \
+'arm-pod5' 'arm-pod6' \
+'huawei-pod1' 'huawei-pod2' 'huawei-pod3' 'huawei-pod4' \
+'huawei-pod6' 'huawei-pod7' 'huawei-pod12' 'huawei-pod8' \
'huawei-virtual1' 'huawei-virtual2' 'huawei-virtual3' 'huawei-virtual4' \
'huawei-virtual5' 'huawei-virtual8' 'huawei-virtual9' \
'zte-pod2' 'zte-pod3' 'zte-pod9' \
@@ -64,11 +64,11 @@ if [ -d "$dir_result" ]; then
else
echo "Uploading logs to artifact $project_artifact"
gsutil -m cp -r "$dir_result"/* gs://artifacts.opnfv.org/"$project_artifact"/ >/dev/null 2>&1
- echo "Logs can be found in http://artifacts.opnfv.org/logs_${project}_${testbed}.html"
+ echo "Logs can be found in https://artifacts.opnfv.org/logs_${project}_${testbed}.html"
cd $dir_result
files=($(find . -name \* -print|sed 's/^\.//'|sed '/^\s*$/d'))
for f in ${files[@]}; do
- echo "http://artifacts.opnfv.org/${project_artifact}${f}"
+ echo "https://artifacts.opnfv.org/${project_artifact}${f}"
done
fi
fi