Merge "Add licenses list to FOSSA output in OMEC Jenkins jobs."
diff --git a/jjb/api-test.yaml b/jjb/api-test.yaml
index 8b14843..145a4fa 100644
--- a/jjb/api-test.yaml
+++ b/jjb/api-test.yaml
@@ -57,6 +57,11 @@
default: '$GERRIT_PATCHSET_NUMBER'
description: 'PatchSet number in Gerrit'
+ - bool:
+ name: ArchiveLogs
+ default: true
+ description: 'Archive all pod logs after test run'
+
project-type: pipeline
concurrent: true
diff --git a/jjb/charts.yaml b/jjb/charts.yaml
index 1c46a78..b359dd6 100644
--- a/jjb/charts.yaml
+++ b/jjb/charts.yaml
@@ -69,7 +69,7 @@
# Setup helm and external repos
helm init --client-only
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
- helm repo add rook-beta https://charts.rook.io/beta
+ helm repo add rook-release https://charts.rook.io/release
helm repo add cord https://charts.opencord.org
# Update the repo
@@ -164,7 +164,7 @@
# Setup helm and external repos
helm init --client-only
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
- helm repo add rook-beta https://charts.rook.io/beta
+ helm repo add rook-release https://charts.rook.io/release
helm repo add cord https://charts.opencord.org
git clone https://gerrit.opencord.org/helm-repo-tools
diff --git a/jjb/cord-macros.yaml b/jjb/cord-macros.yaml
index e58eab3..cc12b36 100644
--- a/jjb/cord-macros.yaml
+++ b/jjb/cord-macros.yaml
@@ -138,6 +138,30 @@
org-list: '{obj:github_pr_org_list}'
allow-whitelist-orgs-as-admins: true
+# Trigger on GitHub PR merge
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/triggers.html#triggers.generic-webhook-trigger
+- trigger:
+ name: cord-infra-github-pr-trigger-merge
+ triggers:
+ - generic-webhook-trigger:
+ post-content-params:
+ - type: JSONPath
+ key: action
+ value: $.action
+ - type: JSONPath
+ key: merged
+ value: $.pull_request.merged
+ - type: JSONPath
+ key: branchName
+ value: $.pull_request.base.ref
+ - type: JSONPath
+ key: gitRef
+ value: $.pull_request.base.ref
+ regex-filter-text: $action,$merged
+ regex-filter-expression: ^(closed,true)$
+ cause: Generic Cause
+ token: '{project}'
+
# wrapper to provide pypi config file
- wrapper:
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index c0f957c..e784f69 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -836,7 +836,7 @@
- '{branch}'
- job-template:
- name: 'build_{config-pod}_{profile}_voltha_{release}'
+ name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
id: build_voltha_pod_release
description: |
<!-- Managed by Jenkins Job Builder -->
@@ -913,15 +913,9 @@
description: ''
- string:
- name: onosVersion
- default: '{onos-version}'
- description: 'ONOS version that needs to be configured'
-
-
- - bool:
- name: released
- default: '{released}'
- description: "Pulls released version images when true"
+ name: workFlow
+ default: '{work-flow}'
+ description: 'Installs the specified work flow on the POD'
- bool:
name: configurePod
@@ -954,7 +948,7 @@
H {time} * * *
- job-template:
- name: 'build_{config-pod}_{profile}_voltha_{release}_test'
+ name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
id: build_voltha_pod_test
description: |
<!-- Managed by Jenkins Job Builder -->
@@ -1014,11 +1008,6 @@
default: '{profile}'
description: 'Technology Profile pushed to the ETCD'
- - bool:
- name: released
- default: '{released}'
- description: "Pulls tests that are tagged with released as identifier"
-
- string:
name: branch
default: '{branch}'
@@ -1046,5 +1035,5 @@
triggers:
- reverse:
- jobs: 'build_{config-pod}_{profile}_voltha_{release}'
+ jobs: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
result: 'success'
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index e94c8a0..9a9785b 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -9,8 +9,8 @@
build-timeout: '300'
with-kind: false
- onos-version: '2.2'
power-switch: False
+ work-flow: ''
jobs:
# flex OCP pod with olt/onu - manual test job, voltha master build job
@@ -20,15 +20,15 @@
release: 'master'
branch: 'master'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
- profile: '1T4GEM-bal31'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
+ profile: '1T4GEM'
# flex pod1 test job - using voltha branch
- 'build_pod_test':
build-node: 'qa-testvm-pod'
config-pod: 'flex-ocp-cord'
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
branch: 'master'
test-repo: 'voltha-system-tests'
Jenkinsfile: 'Jenkinsfile-voltha-test'
@@ -40,9 +40,9 @@
release: 'master'
branch: 'master'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
- profile: '1T4GEM-bal31'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
+ profile: '1T4GEM'
# onlab pod1 test job - BAL3.1 tests using voltha branch
- 'build_pod_test':
@@ -59,10 +59,9 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
profile: 'Default'
time: '1'
@@ -73,7 +72,6 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
- released: false
power-switch: True
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -84,12 +82,11 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
time: '3'
# flex pod1 test job - test job uses 1TCONT/4GEMs tech profile - using voltha branch
@@ -98,34 +95,32 @@
config-pod: 'flex-ocp-cord'
release: 'master'
branch: 'master'
- released: false
power-switch: True
test-repo: 'voltha-system-tests'
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
# flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
- 'build_voltha_pod_release':
build-node: 'qa-testvm-pod'
config-pod: 'flex-ocp-cord'
- release: 'release'
- branch: 'master'
+ release: '2.3'
+ branch: 'voltha-2.3'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
- released: true
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
time: '4'
# flex pod1 test job - released versions: uses tech profile on voltha branch
- 'build_voltha_pod_test':
build-node: 'qa-testvm-pod'
config-pod: 'flex-ocp-cord'
- release: 'release'
- branch: 'master'
- released: true
+ release: '2.3'
+ branch: 'voltha-2.3'
+ power-switch: True
test-repo: 'voltha-system-tests'
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
# Menlo pod with olt/onu - Default tech profile and timer based job
- 'build_voltha_pod_release':
@@ -133,10 +128,9 @@
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
profile: 'Default'
time: '1'
@@ -147,7 +141,6 @@
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -155,12 +148,11 @@
- 'build_voltha_pod_release':
build-node: 'menlo-demo-pod'
config-pod: 'onf-demo-pod'
- release: 'release'
- branch: 'master'
- released: true
+ release: '2.3'
+ branch: 'voltha-2.3'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
profile: 'Default'
time: '3'
@@ -169,9 +161,8 @@
- 'build_voltha_pod_test':
build-node: 'menlo-demo-pod'
config-pod: 'onf-demo-pod'
- release: 'release'
- branch: 'master'
- released: true
+ release: '2.3'
+ branch: 'voltha-2.3'
test-repo: 'voltha-system-tests'
profile: 'Default'
@@ -181,23 +172,47 @@
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
time: '4'
+ # Menlo pod test job - master test job uses tech profile on voltha branch
+ - 'build_voltha_pod_test':
+ build-node: 'menlo-demo-pod'
+ config-pod: 'onf-demo-pod'
+ release: 'master'
+ branch: 'master'
+ test-repo: 'voltha-system-tests'
+ profile: '1T4GEM'
+
+ # Menlo pod with olt/onu - master branch, Default tech profile and timer based job
+ - 'build_voltha_pod_release':
+ build-node: 'menlo-demo-pod'
+ config-pod: 'onf-demo-pod'
+ release: 'master'
+ branch: 'master'
+ name-extension: '_DT'
+ work-flow: 'DT'
+ test-repo: 'voltha-system-tests'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
+ configurePod: true
+ profile: '1T8GEM'
+ time: '6'
+
# Menlo pod test job - uses tech profile on voltha branch
- 'build_voltha_pod_test':
build-node: 'menlo-demo-pod'
config-pod: 'onf-demo-pod'
release: 'master'
branch: 'master'
- released: false
+ name-extension: '_DT'
test-repo: 'voltha-system-tests'
- profile: '1T4GEM-bal31'
+ profile: '1T8GEM'
+ pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
# Menlo DEMO-POD - 1 1TCONT 4 4GEMs TechProfile - Manual build and test job
- 'build_pod_manual':
@@ -206,17 +221,17 @@
release: 'master'
branch: 'master'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
- 'build_pod_test':
build-node: 'menlo-demo-pod'
config-pod: 'onf-demo-pod'
branch: 'master'
test-repo: 'voltha-system-tests'
Jenkinsfile: 'Jenkinsfile-voltha-test'
- profile: '1T4GEM-bal31'
+ profile: '1T4GEM'
# Menlo DEMO-POD - Default TechProfile - manual build job
- 'build_pod_manual':
@@ -225,7 +240,7 @@
release: 'master'
branch: 'master'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
configurePod: true
profile: 'Default'
@@ -245,13 +260,12 @@
config-pod: 'infosys-pod'
release: 'master'
branch: 'master'
- released: false
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
oltDebVersion: 'openolt_asfvolt16.deb'
configurePod: true
profile: 'Default'
- time: '1'
+ time: '7'
# infosys test job - uses Default tech profile on voltha branch
- 'build_voltha_pod_test':
@@ -259,34 +273,78 @@
config-pod: 'infosys-pod'
release: 'master'
branch: 'master'
- released: false
+ test-repo: 'voltha-system-tests'
+ profile: 'Default'
+
+ # Infosys pod with olt/onu - voltha-2.3 Default tech profile and timer based job
+ - 'build_voltha_pod_release':
+ build-node: 'infosys-test-pod'
+ config-pod: 'infosys-pod'
+ release: '2.3'
+ branch: 'voltha-2.3'
+ test-repo: 'voltha-system-tests'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt_asfvolt16.deb'
+ configurePod: true
+ profile: 'Default'
+ time: '10'
+
+ # infosys test job - voltha-2.3 release job, uses Default tech profile on voltha branch
+ - 'build_voltha_pod_test':
+ build-node: 'infosys-test-pod'
+ config-pod: 'infosys-pod'
+ release: '2.3'
+ branch: 'voltha-2.3'
test-repo: 'voltha-system-tests'
profile: 'Default'
- # Berlin pod with olt/onu - Released versions Default tech profile and timer based job
+ # Berlin pod with olt/onu - master versions Default tech profile and timer based job
- 'build_voltha_pod_release':
build-node: 'dt-berlin-community-pod'
config-pod: 'dt-berlin-pod'
- release: 'release'
+ release: 'master'
branch: 'master'
- onos-version: '2.2'
test-repo: 'voltha-system-tests'
- Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
- oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
configurePod: true
- released: true
profile: 'Default'
with-kind: true
time: '9'
- # Berlin POD test job - released versions: uses tech profile on voltha branch
+ # Berlin POD test job - master versions: uses tech profile on voltha branch
- 'build_voltha_pod_test':
build-node: 'dt-berlin-community-pod'
config-pod: 'dt-berlin-pod'
- release: 'release'
+ release: 'master'
branch: 'master'
- released: true
test-repo: 'voltha-system-tests'
profile: 'Default'
+ power-switch: True
+
+ # Berlin pod with olt/onu - voltha-2.3 Default tech profile and timer based job
+ - 'build_voltha_pod_release':
+ build-node: 'dt-berlin-community-pod'
+ config-pod: 'dt-berlin-pod'
+ release: '2.3'
+ branch: 'voltha-2.3'
+ test-repo: 'voltha-system-tests'
+ Jenkinsfile: 'Jenkinsfile-voltha-build'
+ oltDebVersion: 'openolt-2.3.0.deb'
+ configurePod: true
+ profile: 'Default'
+ with-kind: true
+ time: '11'
+
+
+ # Berlin POD test job - master versions: uses tech profile on voltha branch
+ - 'build_voltha_pod_test':
+ build-node: 'dt-berlin-community-pod'
+ config-pod: 'dt-berlin-pod'
+ release: '2.3'
+ branch: 'voltha-2.3'
+ test-repo: 'voltha-system-tests'
+ profile: 'Default'
+ power-switch: True
diff --git a/jjb/docker-publish-github.yaml b/jjb/docker-publish-github.yaml
index 1071aea..148c228 100644
--- a/jjb/docker-publish-github.yaml
+++ b/jjb/docker-publish-github.yaml
@@ -16,7 +16,8 @@
display-status: 'docker-publish'
triggers:
- - github
+ - cord-infra-github-pr-trigger-merge:
+ project: '{project}'
wrappers:
- lf-infra-wrappers:
diff --git a/jjb/omec-ci.yaml b/jjb/omec-ci.yaml
index 585b12e..f2922c9 100644
--- a/jjb/omec-ci.yaml
+++ b/jjb/omec-ci.yaml
@@ -106,6 +106,48 @@
build-timeout: 30
docker-repo: 'omecproject'
+# for nucleus
+- project:
+ name: Nucleus
+ project: '{name}'
+
+ build-node: 'intel-102'
+
+ github-organization: 'omec-project'
+
+ github_pr_auth_id: '64fe2b1a-b33a-4f13-8442-ad8360434003'
+ github_pr_org_list:
+ - 'omec-project'
+
+ jobs:
+ - 'omec-fossa':
+ pipeline-file: 'omec-fossa-scan.groovy'
+ build-node: 'omec-qa'
+ - 'omec-reuse':
+ pipeline-file: 'omec-reuse-scan.groovy'
+ build-node: 'omec-qa'
+
+# for freediameter
+- project:
+ name: freediameter
+ project: '{name}'
+
+ build-node: 'intel-102'
+
+ github-organization: 'omec-project'
+
+ github_pr_auth_id: '64fe2b1a-b33a-4f13-8442-ad8360434003'
+ github_pr_org_list:
+ - 'omec-project'
+
+ jobs:
+ - 'omec-fossa':
+ pipeline-file: 'omec-fossa-scan.groovy'
+ build-node: 'omec-qa'
+ - 'omec-reuse':
+ pipeline-file: 'omec-reuse-scan.groovy'
+ build-node: 'omec-qa'
+
# Combined pipeline
- job-template:
id: 'omec-combined'
diff --git a/jjb/pipeline/omec-fossa-scan.groovy b/jjb/pipeline/omec-fossa-scan.groovy
index 547d987..24c6cab 100644
--- a/jjb/pipeline/omec-fossa-scan.groovy
+++ b/jjb/pipeline/omec-fossa-scan.groovy
@@ -40,7 +40,8 @@
steps {
checkout([
$class: 'GitSCM',
- userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}", refspec: "+refs/pull/${params.ghprbPullId}/merge" ]],
+ userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}", refspec: "pull/${params.ghprbPullId}/head" ]],
+ extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.project}"]],
],
)
}
@@ -52,6 +53,7 @@
sh """
#!/usr/bin/env bash
+ cd ${params.project}
git checkout FETCH_HEAD
git show
diff --git a/jjb/pipeline/omec-reuse-scan.groovy b/jjb/pipeline/omec-reuse-scan.groovy
index f4fcf51..6b471ab 100644
--- a/jjb/pipeline/omec-reuse-scan.groovy
+++ b/jjb/pipeline/omec-reuse-scan.groovy
@@ -40,7 +40,8 @@
steps {
checkout([
$class: 'GitSCM',
- userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}", refspec: "+refs/pull/${params.ghprbPullId}/merge" ]],
+ userRemoteConfigs: [[ url: "https://github.com/${params.ghprbGhRepository}", refspec: "pull/${params.ghprbPullId}/head" ]],
+ extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${params.project}"]],
],
)
}
@@ -51,9 +52,15 @@
sh """
#!/usr/bin/env bash
+ cd ${params.project}
git checkout FETCH_HEAD
git show
+ mkdir ../jenkins-license-scan
+ cp --parents $(git diff-tree --no-commit-id --name-only -r HEAD) ../jenkins-license-scan
+ cd ../jenkins-license-scan
+
+ reuse download --all
reuse lint
"""
}
diff --git a/jjb/pipeline/siab-test.groovy b/jjb/pipeline/siab-test.groovy
index b13ca11..1ab109e 100644
--- a/jjb/pipeline/siab-test.groovy
+++ b/jjb/pipeline/siab-test.groovy
@@ -47,18 +47,6 @@
}
}
- // FIXME: remove once Zack completes cord-tester refactoring, as master is
- // currently broken for siab tests.
- stage('Cord-tester fix') {
- steps {
- sh """
- pushd $WORKSPACE/cord/test/cord-tester
- git checkout -b foo 7b3f901659a22c09e4759e343ad693b80125e06b
- popd
- """
- }
- }
-
stage ('Reset Kubeadm') {
steps {
sh """
diff --git a/jjb/pipeline/voltha-bbsim-tests.groovy b/jjb/pipeline/voltha-bbsim-tests.groovy
index b1a7413..74e9613 100644
--- a/jjb/pipeline/voltha-bbsim-tests.groovy
+++ b/jjb/pipeline/voltha-bbsim-tests.groovy
@@ -49,7 +49,7 @@
poll: false,
scm: [$class: 'RepoScm', \
manifestRepositoryUrl: "${params.manifestUrl}", \
- manifestBranch: "${params.manifestBranch}", \
+ manifestBranch: "${params.branch}", \
currentBranch: true, \
destinationDir: 'voltha', \
forceSync: true,
@@ -64,7 +64,12 @@
steps {
sh """
pushd voltha
- repo download "${gerritProject}" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+ if [ "${gerritProject}" != "" -a "${gerritChangeNumber}" != "" -a "${gerritPatchsetNumber}" != "" ]
+ then
+ repo download "${gerritProject}" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+ else
+ echo "No patchset to download!"
+ fi
popd
"""
}
@@ -73,6 +78,14 @@
steps {
sh """
git clone https://github.com/ciena/kind-voltha.git
+
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
cd kind-voltha/
JUST_K8S=y ./voltha up
bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/kind-voltha/bin"
@@ -112,6 +125,13 @@
stage('Push Images') {
steps {
sh '''
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
if ! [[ "${gerritProject}" =~ ^(voltha-helm-charts|voltha-system-tests)\$ ]]; then
export GOROOT=/usr/local/go
export GOPATH=\$(pwd)
@@ -124,13 +144,23 @@
stage('Deploy Voltha') {
steps {
sh '''
- export EXTRA_HELM_FLAGS="--set log_agent.enabled=False ${extraHelmFlags} "
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ export EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${extraHelmFlags} "
IMAGES=""
if [ "${gerritProject}" = "voltha-go" ]; then
IMAGES="rw_core ro_core "
elif [ "${gerritProject}" = "ofagent-py" ]; then
- IMAGES="ofagent "
+ IMAGES="ofagent_py "
+ EXTRA_HELM_FLAGS+="--set use_ofagent_go=false "
+ elif [ "${gerritProject}" = "ofagent-go" ]; then
+ IMAGES="ofagent_go "
elif [ "${gerritProject}" = "voltha-onos" ]; then
IMAGES="onos "
elif [ "${gerritProject}" = "voltha-openolt-adapter" ]; then
@@ -232,7 +262,15 @@
gzip $WORKSPACE/onos-voltha-combined.log
+
## shut down kind-voltha
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
cd $WORKSPACE/kind-voltha
WAIT_ON_DOWN=y ./voltha down
'''
diff --git a/jjb/pipeline/voltha-dt-physical-functional-tests.groovy b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
new file mode 100644
index 0000000..4ef0450
--- /dev/null
+++ b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
@@ -0,0 +1,161 @@
+// Copyright 2017-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+node {
+ // Need this so that deployment_config has global scope when it's read later
+ deployment_config = null
+}
+
+pipeline {
+ /* no label, executor is determined by JJB */
+ agent {
+ label "${params.buildNode}"
+ }
+ options {
+ timeout(time: 90, unit: 'MINUTES')
+ }
+
+ environment {
+ KUBECONFIG="$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf"
+ VOLTCONFIG="$HOME/.volt/config-minimal"
+ PATH="$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+ }
+
+ stages {
+ stage ('Initialize') {
+ steps {
+ step([$class: 'WsCleanup'])
+ sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/${configBaseDir}"
+ script {
+ deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}-DT.yaml"
+ }
+ // This checkout is just so that we can show changes in Jenkins
+ checkout(changelog: true,
+ poll: false,
+ scm: [$class: 'RepoScm',
+ manifestRepositoryUrl: "${params.manifestUrl}",
+ manifestBranch: "${params.branch}",
+ currentBranch: true,
+ destinationDir: 'voltha',
+ forceSync: true,
+ resetFirst: true,
+ quiet: true,
+ jobs: 4,
+ showAllChanges: true]
+ )
+ sh returnStdout: false, script: """
+ cd voltha
+ git clone -b ${branch} ${cordRepoUrl}/cord-tester
+ mkdir -p $WORKSPACE/bin
+ bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/bin"
+ cd $WORKSPACE
+ git clone https://github.com/ciena/kind-voltha.git
+
+ VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
+ HOSTOS=\$(uname -s | tr "[:upper:]" "[:lower:"])
+ HOSTARCH=\$(uname -m | tr "[:upper:]" "[:lower:"])
+ if [ \$HOSTARCH == "x86_64" ]; then
+ HOSTARCH="amd64"
+ fi
+ curl -o $WORKSPACE/bin/voltctl -sSL https://github.com/opencord/voltctl/releases/download/v\${VC_VERSION}/voltctl-\${VC_VERSION}-\${HOSTOS}-\${HOSTARCH}
+ chmod 755 $WORKSPACE/bin/voltctl
+ voltctl version --clientonly
+ """
+ }
+ }
+
+ stage('Functional Tests') {
+ environment {
+ ROBOT_CONFIG_FILE="$WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}-DT.yaml"
+ ROBOT_FILE="Voltha_DT_PODTests.robot"
+ ROBOT_LOGS_DIR="$WORKSPACE/RobotLogs/dt-workflow"
+ }
+ steps {
+ sh """
+ cd $WORKSPACE/kind-voltha/scripts
+ ./log-collector.sh > /dev/null &
+ ./log-combine.sh > /dev/null &
+
+ mkdir -p $ROBOT_LOGS_DIR
+ export ROBOT_MISC_ARGS="--removekeywords wuks -i sanityDt -i functionalDt -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
+ make -C $WORKSPACE/voltha/voltha-system-tests voltha-dt-test || true
+ """
+ }
+ }
+ }
+ post {
+ always {
+ sh returnStdout: false, script: '''
+ set +e
+ kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
+ kubectl get nodes -o wide
+ kubectl get pods -n voltha -o wide
+
+ sleep 60 # Wait for log-collector and log-combine to complete
+
+ # Clean up "announcer" pod used by the tests if present
+ kubectl delete pod announcer || true
+
+ ## Pull out errors from log files
+ extract_errors_go() {
+ echo
+ echo "Error summary for $1:"
+ grep '"level":"error"' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_python() {
+ echo
+ echo "Error summary for $1:"
+ grep 'ERROR' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+ extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+ extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+ extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
+ extract_errors_python onos >> $WORKSPACE/error-report.log
+
+ cd $WORKSPACE/kind-voltha/scripts/logger/combined/
+ tar czf $WORKSPACE/container-logs.tgz *
+
+ cd $WORKSPACE
+ gzip *-combined.log || true
+ '''
+ script {
+ deployment_config.olts.each { olt ->
+ sh returnStdout: false, script: """
+ sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/openolt.log $WORKSPACE/openolt-${olt.ip}.log || true
+ sed -i 's/\\x1b\\[[0-9;]*[a-zA-Z]//g' $WORKSPACE/openolt-${olt.ip}.log # Remove escape sequences
+ """
+ }
+ }
+ step([$class: 'RobotPublisher',
+ disableArchiveOutput: false,
+ logFileName: '**/log*.html',
+ otherFiles: '',
+ outputFileName: '**/output*.xml',
+ outputPath: 'RobotLogs',
+ passThreshold: 100,
+ reportFileName: '**/report*.html',
+ unstableThreshold: 0
+ ]);
+ archiveArtifacts artifacts: '*.log,*.gz,*.tgz'
+ }
+ unstable {
+ step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${notificationEmail}", sendToIndividuals: false])
+ }
+ }
+}
diff --git a/jjb/pipeline/voltha-go-multi-tests.groovy b/jjb/pipeline/voltha-go-multi-tests.groovy
index c8886ff..437b120 100644
--- a/jjb/pipeline/voltha-go-multi-tests.groovy
+++ b/jjb/pipeline/voltha-go-multi-tests.groovy
@@ -28,7 +28,7 @@
environment {
KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
VOLTCONFIG="$HOME/.volt/config-minimal"
- PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$WORKSPACE/kind-voltha/bin"
+ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$HOME/kind-voltha/bin"
TYPE="minimal"
FANCY=0
WITH_SIM_ADAPTERS="n"
@@ -37,7 +37,6 @@
DEPLOY_K8S="y"
VOLTHA_LOG_LEVEL="DEBUG"
CONFIG_SADIS="n"
- EXTRA_HELM_FLAGS="--set log_agent.enabled=False ${params.extraHelmFlags}"
ROBOT_MISC_ARGS="${params.extraRobotArgs} -d $WORKSPACE/RobotLogs"
}
stages {
@@ -49,7 +48,7 @@
poll: false,
scm: [$class: 'RepoScm',
manifestRepositoryUrl: "${params.manifestUrl}",
- manifestBranch: "${params.manifestBranch}",
+ manifestBranch: "${params.branch}",
currentBranch: true,
destinationDir: 'voltha',
forceSync: true,
@@ -64,7 +63,11 @@
stage('Download kind-voltha') {
steps {
sh """
- git clone https://github.com/ciena/kind-voltha.git
+ cd $HOME
+ [ -d kind-voltha ] || git clone https://github.com/ciena/kind-voltha.git
+ rm -rf $HOME/kind-voltha/scripts/logger
+ cd $HOME/kind-voltha
+ git pull
"""
}
}
@@ -72,9 +75,18 @@
stage('Deploy Voltha') {
steps {
sh """
- cd kind-voltha/
- JUST_K8S=y ./voltha up
- kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
+ export EXTRA_HELM_FLAGS=""
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "$HOME/kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${params.extraHelmFlags} "
+
+ cd $HOME/kind-voltha/
+ WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down || ./voltha down
./voltha up
"""
}
@@ -83,9 +95,14 @@
stage('Run E2E Tests') {
steps {
sh '''
+ set +e
mkdir -p $WORKSPACE/RobotLogs
git clone https://gerrit.opencord.org/voltha-system-tests
- cd kind-voltha
+
+ cd $HOME/kind-voltha/scripts
+ ./log-collector.sh > /dev/null &
+ ./log-combine.sh > /dev/null &
+
for i in \$(seq 1 ${testRuns})
do
make -C $WORKSPACE/voltha-system-tests ${makeTarget}
@@ -101,40 +118,44 @@
always {
sh '''
set +e
- cp $WORKSPACE/kind-voltha/install-minimal.log $WORKSPACE/
+ cp $HOME/kind-voltha/install-minimal.log $WORKSPACE/
kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
kubectl get nodes -o wide
kubectl get pods -o wide
kubectl get pods -n voltha -o wide
- sync
- pkill kail || true
+ sleep 60 # Wait for log-collector and log-combine to complete
## Pull out errors from log files
extract_errors_go() {
echo
echo "Error summary for $1:"
- grep $1 $WORKSPACE/onos-voltha-combined.log | grep '"level":"error"' | cut -d ' ' -f 2- | jq -r '.msg'
+ grep '"level":"error"' $HOME/kind-voltha/scripts/logger/combined/$1*
echo
}
extract_errors_python() {
echo
echo "Error summary for $1:"
- grep $1 $WORKSPACE/onos-voltha-combined.log | grep 'ERROR' | cut -d ' ' -f 2-
+ grep 'ERROR' $HOME/kind-voltha/scripts/logger/combined/$1*
echo
}
extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
- extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
+ extract_errors_go voltha-ofagent >> $WORKSPACE/error-report.log
+ extract_errors_python onos >> $WORKSPACE/error-report.log
- gzip $WORKSPACE/onos-voltha-combined.log
+ cd $HOME/kind-voltha/scripts/logger/combined/
+ tar czf $WORKSPACE/container-logs.tgz *
- ## shut down voltha
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y ./voltha down
+ cd $WORKSPACE
+ gzip *-combined.log || true
+
+ ## shut down voltha but leave kind-voltha cluster
+ cd $HOME/kind-voltha/
+ DEPLOY_K8S=n WAIT_ON_DOWN=y ./voltha down
'''
step([$class: 'RobotPublisher',
disableArchiveOutput: false,
@@ -145,7 +166,7 @@
passThreshold: 100,
reportFileName: 'RobotLogs/report*.html',
unstableThreshold: 0]);
- archiveArtifacts artifacts: '*.log,*.gz'
+ archiveArtifacts artifacts: '*.log,*.gz,*.tgz'
}
}
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index 33da214..fc1d613 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -28,7 +28,7 @@
environment {
KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
VOLTCONFIG="$HOME/.volt/config-minimal"
- PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$WORKSPACE/kind-voltha/bin"
+ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$HOME/kind-voltha/bin"
TYPE="minimal"
FANCY=0
WITH_SIM_ADAPTERS="n"
@@ -37,7 +37,6 @@
DEPLOY_K8S="y"
VOLTHA_LOG_LEVEL="DEBUG"
CONFIG_SADIS="n"
- EXTRA_HELM_FLAGS="--set log_agent.enabled=False ${params.extraHelmFlags}"
ROBOT_MISC_ARGS="${params.extraRobotArgs} -d $WORKSPACE/RobotLogs"
}
stages {
@@ -49,7 +48,7 @@
poll: false,
scm: [$class: 'RepoScm',
manifestRepositoryUrl: "${params.manifestUrl}",
- manifestBranch: "${params.manifestBranch}",
+ manifestBranch: "${params.branch}",
currentBranch: true,
destinationDir: 'voltha',
forceSync: true,
@@ -64,7 +63,11 @@
stage('Download kind-voltha') {
steps {
sh """
- git clone https://github.com/ciena/kind-voltha.git
+ cd $HOME
+ [ -d kind-voltha ] || git clone https://github.com/ciena/kind-voltha.git
+ rm -rf $HOME/kind-voltha/scripts/logger
+ cd $HOME/kind-voltha
+ git pull
"""
}
}
@@ -72,8 +75,18 @@
stage('Deploy Voltha') {
steps {
sh """
- cd kind-voltha/
- JUST_K8S=y ./voltha up
+ export EXTRA_HELM_FLAGS=""
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "$HOME/kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ EXTRA_HELM_FLAGS+="--set log_agent.enabled=False ${params.extraHelmFlags} "
+
+ cd $HOME/kind-voltha/
+ WAIT_ON_DOWN=y DEPLOY_K8S=n ./voltha down || ./voltha down
./voltha up
"""
}
@@ -86,7 +99,7 @@
mkdir -p $WORKSPACE/RobotLogs
git clone https://gerrit.opencord.org/voltha-system-tests
- cd $WORKSPACE/kind-voltha/scripts
+ cd $HOME/kind-voltha/scripts
./log-collector.sh > /dev/null &
./log-combine.sh > /dev/null &
@@ -100,7 +113,7 @@
always {
sh '''
set +e
- cp $WORKSPACE/kind-voltha/install-minimal.log $WORKSPACE/
+ cp $HOME/kind-voltha/install-minimal.log $WORKSPACE/
kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
kubectl get nodes -o wide
kubectl get pods -o wide
@@ -108,15 +121,36 @@
sleep 60 # Wait for log-collector and log-combine to complete
- cd $WORKSPACE/kind-voltha/scripts/logger/combined/
+ ## Pull out errors from log files
+ extract_errors_go() {
+ echo
+ echo "Error summary for $1:"
+ grep '"level":"error"' $HOME/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_python() {
+ echo
+ echo "Error summary for $1:"
+ grep 'ERROR' $HOME/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+ extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+ extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+ extract_errors_go voltha-ofagent >> $WORKSPACE/error-report.log
+ extract_errors_python onos >> $WORKSPACE/error-report.log
+
+ cd $HOME/kind-voltha/scripts/logger/combined/
tar czf $WORKSPACE/container-logs.tgz *
cd $WORKSPACE
gzip *-combined.log || true
- ## shut down voltha
- cd $WORKSPACE/kind-voltha/
- WAIT_ON_DOWN=y ./voltha down
+ ## shut down voltha but leave kind-voltha cluster
+ cd $HOME/kind-voltha/
+ DEPLOY_K8S=n WAIT_ON_DOWN=y ./voltha down
'''
step([$class: 'RobotPublisher',
disableArchiveOutput: false,
diff --git a/jjb/pipeline/voltha-physical-build-and-tests.groovy b/jjb/pipeline/voltha-physical-build-and-tests.groovy
index ffb45b6..66e09e7 100644
--- a/jjb/pipeline/voltha-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-physical-build-and-tests.groovy
@@ -22,9 +22,10 @@
localSadisConfigFile = null
// The pipeline assumes these variables are always defined
-if ( ! params.withPatchset ) {
+if ( params.manualBranch != "" ) {
GERRIT_EVENT_COMMENT_TEXT = ""
GERRIT_PROJECT = ""
+ GERRIT_BRANCH = "${params.manualBranch}"
GERRIT_CHANGE_NUMBER = ""
GERRIT_PATCHSET_NUMBER = ""
}
@@ -76,7 +77,7 @@
poll: false,
scm: [$class: 'RepoScm',
manifestRepositoryUrl: "${params.manifestUrl}",
- manifestBranch: "${params.manifestBranch}",
+ manifestBranch: "${params.branch}",
currentBranch: true,
destinationDir: 'voltha',
forceSync: true,
@@ -90,7 +91,7 @@
stage('Get Patch') {
when {
- expression { params.withPatchset }
+ expression { params.manualBranch == "" }
}
steps {
sh returnStdout: false, script: """
@@ -121,6 +122,14 @@
steps {
sh returnStdout: false, script: """
git clone https://github.com/ciena/kind-voltha.git
+
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
cd kind-voltha/
JUST_K8S=y ./voltha up
"""
@@ -129,10 +138,18 @@
stage('Build and Push Images') {
when {
- expression { params.withPatchset }
+ expression { params.manualBranch == "" }
}
steps {
sh returnStdout: false, script: """
+
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
if ! [[ "${gerritProject}" =~ ^(voltha-system-tests)\$ ]]; then
make -C $WORKSPACE/voltha/${gerritProject} DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
docker images | grep citest
@@ -157,7 +174,14 @@
steps {
script {
sh returnStdout: false, script: """
- export EXTRA_HELM_FLAGS='--set log_agent.enabled=False -f ${localKindVolthaValuesFile} '
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ export EXTRA_HELM_FLAGS+='--set log_agent.enabled=False -f ${localKindVolthaValuesFile} '
IMAGES=""
if [ "${gerritProject}" = "voltha-go" ]; then
@@ -283,7 +307,6 @@
steps {
sh returnStdout: false, script: """
cd voltha
- git clone -b ${branch} ${cordRepoUrl}/cord-tester
mkdir -p $WORKSPACE/RobotLogs
# If the Gerrit comment contains a line with "functional tests" then run the full
@@ -301,7 +324,7 @@
stage('After-Test Delay') {
when {
- expression { params.withPatchset }
+ expression { params.manualBranch == "" }
}
steps {
sh returnStdout: false, script: """
diff --git a/jjb/pipeline/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha-physical-functional-tests.groovy
index 51eb413..038d89c 100644
--- a/jjb/pipeline/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-physical-functional-tests.groovy
@@ -23,20 +23,20 @@
label "${params.buildNode}"
}
options {
- timeout(time: 90, unit: 'MINUTES')
+ timeout(time: 180, unit: 'MINUTES')
}
environment {
KUBECONFIG="$WORKSPACE/${configBaseDir}/${configKubernetesDir}/${configFileName}.conf"
VOLTCONFIG="$HOME/.volt/config-minimal"
- PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$WORKSPACE/bin"
+ PATH="$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
}
stages {
stage ('Initialize') {
steps {
step([$class: 'WsCleanup'])
- sh returnStdout: false, script: "git clone -b ${branch} ${cordRepoUrl}/${configBaseDir}"
+ sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/${configBaseDir}"
script {
deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
}
@@ -45,7 +45,7 @@
poll: false,
scm: [$class: 'RepoScm',
manifestRepositoryUrl: "${params.manifestUrl}",
- manifestBranch: "${params.manifestBranch}",
+ manifestBranch: "${params.branch}",
currentBranch: true,
destinationDir: 'voltha',
forceSync: true,
@@ -56,14 +56,25 @@
)
sh returnStdout: false, script: """
cd voltha
- git clone -b ${branch} ${cordRepoUrl}/cord-tester
+ git clone -b master ${cordRepoUrl}/cord-tester
mkdir -p $WORKSPACE/bin
bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/bin"
cd $WORKSPACE
git clone https://github.com/ciena/kind-voltha.git
+
+ VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
+ HOSTOS=\$(uname -s | tr "[:upper:]" "[:lower:"])
+ HOSTARCH=\$(uname -m | tr "[:upper:]" "[:lower:"])
+ if [ \$HOSTARCH == "x86_64" ]; then
+ HOSTARCH="amd64"
+ fi
+ curl -o $WORKSPACE/bin/voltctl -sSL https://github.com/opencord/voltctl/releases/download/v\${VC_VERSION}/voltctl-\${VC_VERSION}-\${HOSTOS}-\${HOSTARCH}
+ chmod 755 $WORKSPACE/bin/voltctl
+ voltctl version --clientonly
"""
}
}
+
stage('Functional Tests') {
environment {
ROBOT_CONFIG_FILE="$WORKSPACE/${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
@@ -77,11 +88,7 @@
./log-combine.sh > /dev/null &
mkdir -p $ROBOT_LOGS_DIR
- if ( ${released} ); then
- export ROBOT_MISC_ARGS="--removekeywords wuks -i released -i sanity -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
- else
- export ROBOT_MISC_ARGS="--removekeywords wuks -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
- fi
+ export ROBOT_MISC_ARGS="--removekeywords wuks -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
make -C $WORKSPACE/voltha/voltha-system-tests voltha-test || true
"""
}
@@ -96,9 +103,7 @@
steps {
sh """
mkdir -p $ROBOT_LOGS_DIR
- if ( ${released} ); then
- export ROBOT_MISC_ARGS="--removekeywords wuks -i released -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
- elif ( ${powerSwitch} ); then
+ if ( ${powerSwitch} ); then
export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functional -i PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
else
export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functional -e PowerSwitch -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
@@ -117,11 +122,7 @@
steps {
sh """
mkdir -p $ROBOT_LOGS_DIR
- if ( ${released} ); then
- export ROBOT_MISC_ARGS="--removekeywords wuks -i released -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
- else
- export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functional -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
- fi
+ export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i functional -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
make -C $WORKSPACE/voltha/voltha-system-tests voltha-test || true
"""
}
@@ -137,6 +138,30 @@
sleep 60 # Wait for log-collector and log-combine to complete
+ # Clean up "announcer" pod used by the tests if present
+ kubectl delete pod announcer || true
+
+ ## Pull out errors from log files
+ extract_errors_go() {
+ echo
+ echo "Error summary for $1:"
+ grep '"level":"error"' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_python() {
+ echo
+ echo "Error summary for $1:"
+ grep 'ERROR' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+ echo
+ }
+
+ extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+ extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+ extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+ extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
+ extract_errors_python onos >> $WORKSPACE/error-report.log
+
cd $WORKSPACE/kind-voltha/scripts/logger/combined/
tar czf $WORKSPACE/container-logs.tgz *
diff --git a/jjb/pipeline/voltha-scale-measurements.groovy b/jjb/pipeline/voltha-scale-measurements.groovy
index 082703c..7df33b1 100644
--- a/jjb/pipeline/voltha-scale-measurements.groovy
+++ b/jjb/pipeline/voltha-scale-measurements.groovy
@@ -7,32 +7,22 @@
environment {
KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
VOLTCONFIG="$HOME/.volt/config-minimal"
- PATH="$WORKSPACE/kind-voltha/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- TYPE="minimal"
- FANCY=0
- SECONDS=0
- WITH_SIM_ADAPTERS="n"
- WITH_RADIUS="y"
- WITH_BBSIM="y"
- VOLTHA_LOG_LEVEL="WARN"
- CONFIG_SADIS="n"
- ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs -v teardown_device:False"
SSHPASS="karaf"
DEPLOY_K8S="n"
- EXTRA_HELM_FLAGS="--set onu=${onuPerPon},pon=${ponPorts},delay=${BBSIMdelay},auth=${bbsimAuth},dhcp=${bbsimDhcp}"
}
stages {
stage('set-description') {
steps {
script {
- currentBuild.description = "${onuPerPon} ONU x ${ponPorts} PON - BBSIM Delay ${BBSIMdelay}"
+ currentBuild.description = "$BUILD_TIMESTAMP"
}
}
}
stage('cleanup') {
steps {
sh '''
- for hchart in \$(helm list -q | grep -E -v 'docker-registry|cord-kafka|etcd-operator');
+ rm -rf voltha-devices-count.txt voltha-devices-time.txt onos-ports-count.txt onos-ports-time.txt onos-ports-list.txt voltha-devices-list.json onos-ports-time-num.txt voltha-devices-time-num.txt
+ for hchart in \$(helm list -q | grep -E -v 'docker-registry|kafkacat|etcd-operator');
do
echo "Purging chart: \${hchart}"
helm delete --purge "\${hchart}"
@@ -51,31 +41,58 @@
}
}
stage('deploy-voltha') {
+ options {
+ timeout(time:10)
+ }
steps {
sh '''
- helm install -n onos onf/onos --set images.onos.repository=voltha/voltha-onos --set images.onos.tag=4.0.1
- helm install -n voltha onf/voltha -f /home/cord/voltha-scale/voltha-values.yaml
- helm install -n openolt onf/voltha-adapter-openolt -f /home/cord/voltha-scale/voltha-values.yaml
- helm install -n openonu onf/voltha-adapter-openonu -f /home/cord/voltha-scale/voltha-values.yaml
+ helm repo update
+ helm install -n cord-kafka incubator/kafka -f /home/cord/voltha-scale/voltha-values.yaml --version 0.13.3 --set replicas=3 --set persistence.enabled=false --set zookeeper.replicaCount=3 --set zookeeper.persistence.enabled=false
+ helm install -n nem-monitoring cord/nem-monitoring --set kpi_exporter.enabled=false,dashboards.xos=false,dashboards.onos=false,dashboards.aaa=false,dashboards.voltha=false
- helm install -n bbsim onf/bbsim --set pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay}
- helm install -n radius onf/freeradius
+ IFS=: read -r onosRepo onosTag <<< ${onosImg}
+ helm install -n onos onf/onos --set images.onos.repository=${onosRepo} --set images.onos.tag=${onosTag} ${extraHelmFlags}
- if [ ! -z ${bbsimImg} ];
- then
- IFS=: read -r bbsimRepo bbsimTag <<< ${bbsimImg}
- EXTRA_HELM_FLAGS+=",images.bbsim.repository=${bbsimRepo},images.bbsim.tag=${bbsimTag}"
- fi
- if [ ! -z ${volthaImg} ];
- then
- IFS=: read -r volthaRepo volthaTag <<< ${volthaImg}
- EXTRA_HELM_FLAGS+=",images.voltha.repository=${volthaRepo},images.voltha.tag=${volthaTag}"
- fi
+ IFS=: read -r volthaRepo volthaTag <<< ${volthaImg}
+ IFS=: read -r ofAgentRepo ofAgentTag <<< ${ofAgentImg}
+ helm install -n voltha ${volthaChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.rw_core.repository=${volthaRepo},images.rw_core.tag=${volthaTag},images.ofagent_go.repository=${ofAgentRepo},images.ofagent_go.tag=${ofAgentTag} ${extraHelmFlags}
+
+ IFS=: read -r openoltAdapterRepo openoltAdapterTag <<< ${openoltAdapterImg}
+ helm install -n openolt ${openoltAdapterChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.adapter_open_olt.repository=${openoltAdapterRepo},images.adapter_open_olt.tag=${openoltAdapterTag} ${extraHelmFlags}
+
+ IFS=: read -r openonuAdapterRepo openonuAdapterTag <<< ${openonuAdapterImg}
+ helm install -n openonu ${openonuAdapterChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.adapter_open_onu.repository=${openonuAdapterRepo},images.adapter_open_onu.tag=${openonuAdapterTag} ${extraHelmFlags}
+
+ IFS=: read -r bbsimRepo bbsimTag <<< ${bbsimImg}
+ helm install -n bbsim ${bbsimChart} --set enablePerf=true,pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay},images.bbsim.repository=${bbsimRepo},images.bbsim.tag=${bbsimTag} ${extraHelmFlags}
+
+ helm install -n radius onf/freeradius ${extraHelmFlags}
+
bash /home/cord/voltha-scale/wait_for_pods.sh
bash /home/cord/voltha-scale/start_port_forward.sh
'''
}
}
+ stage('wait for adapters to be registered') {
+ options {
+ timeout(time:5)
+ }
+ steps{
+ waitUntil {
+ script {
+ openolt_res = sh returnStdout: true, script: """
+ voltctl adapter list | grep openolt | wc -l
+ """
+
+ openonu_res = sh returnStdout: true, script: """
+ voltctl adapter list | grep brcm_openomci_onu | wc -l
+ """
+
+ return openolt_res.toInteger() == 1 && openonu_res.toInteger() == 1
+ }
+ }
+ }
+ }
stage('MIB-template') {
steps {
sh '''
@@ -102,8 +119,8 @@
stage('configuration') {
steps {
sh '''
- #Setting LOG level to WARN
- sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost log:set WARN
+ #Setting LOG level to ${logLevel}
+ sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost log:set ${logLevel}
kubectl exec $(kubectl get pods | grep bbsim | awk 'NR==1{print $1}') bbsimctl log warn false
#Setting link discovery
sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost cfg set org.onosproject.provider.lldp.impl.LldpLinkProvider enabled ${setLinkDiscovery}
@@ -141,7 +158,7 @@
i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
done
echo "${expectedOnus} ONUs Activated in $SECONDS seconds (time: $SECONDS)"
- echo $SECONDS > activation-time.txt
+ echo $SECONDS > voltha-devices-time-num.txt
'''
}
}
@@ -157,11 +174,12 @@
z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l)
done
echo "${expectedOnus} ports enabled in $SECONDS seconds (time: $SECONDS)"
- echo $SECONDS > port-recognition.txt
- echo "ONOS-Duration(s)" > total-time.txt
- echo "VOLTHA-Duration(s)" > onu-activation.txt
- cat activation-time.txt >> onu-activation.txt
- paste activation-time.txt port-recognition.txt | awk '{print ($1 + $2)}' >> total-time.txt
+ echo $SECONDS > temp.txt
+ paste voltha-devices-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-ports-time-num.txt
+ echo "ONOS-Duration(s)" > onos-ports-time.txt
+ echo "VOLTHA-Duration(s)" > voltha-devices-time.txt
+ cat voltha-devices-time-num.txt >> voltha-devices-time.txt
+ cat onos-ports-time-num.txt >> onos-ports-time.txt
'''
}
}
@@ -169,28 +187,53 @@
}
}
post {
- always {
+ success {
plot([
csvFileName: 'plot-onu-activation.csv',
- csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'onu-activation.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'total-time.txt', inclusionFlag: 'OFF', url: '']],
- group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: 'Time (200ms Delay)', useDescr: true, yaxis: 'Time (s)'
+ csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-time.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-time.txt', inclusionFlag: 'OFF', url: '']],
+ group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
])
- archiveArtifacts artifacts: '*.log,*.txt'
- script {
- sh '''
- kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
- '''
- }
}
- success {
+ always {
sh '''
- #!/usr/bin/env bash
- set +e
- rm onu-activation.txt
- rm total-time.txt
- rm port-recognition.txt
- rm activation-time.txt
+ echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) > onus.txt
+ echo "#-of-ONUs" > voltha-devices-count.txt
+ cat onus.txt >> voltha-devices-count.txt
'''
+ sh '''
+ echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l) > ports.txt
+ echo "#-of-ports" > onos-ports-count.txt
+ cat ports.txt >> onos-ports-count.txt
+ '''
+ sh '''
+ kubectl get pods -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
+ '''
+ sh '''
+ voltctl device list -o json > device-list.json
+ python -m json.tool device-list.json > voltha-devices-list.json
+ '''
+ sh '''
+ sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports > onos-ports-list.txt
+ curl -s -X GET -G http://127.0.0.1:31301/api/v1/query --data-urlencode 'query=avg(rate(container_cpu_usage_seconds_total[10m])*100) by (pod_name)' | jq . > cpu-usage.json
+ '''
+ sh '''
+ kubectl logs deployment/adapter-open-olt > open-olt-logs.txt
+ kubectl logs deployment/adapter-open-onu > open-onu-logs.txt
+ kubectl logs deployment/voltha-rw-core > voltha-rw-core-logs.txt
+ kubectl logs deployment/voltha-ofagent > voltha-ofagent-logs.txt
+ kubectl logs deployment/bbsim > bbsim-logs.txt
+ '''
+ sh '''
+ rm -rf BBSM-12345123451234512345-00000000000001-v1.json device-list.json onus.txt ports.txt temp.txt
+ '''
+ plot([
+ csvFileName: 'plot-numbers.csv',
+ csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-count.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-count.txt', inclusionFlag: 'OFF', url: '']],
+ group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Activated ONUs and Recognized Ports", yaxis: 'Number of Ports/ONUs', useDescr: true
+ ])
+
+ archiveArtifacts artifacts: '*.log,*.json,*txt'
+
}
}
}
diff --git a/jjb/pipeline/voltha-system-test-bbsim.groovy b/jjb/pipeline/voltha-system-test-bbsim.groovy
index e639d4a..2d89c03 100644
--- a/jjb/pipeline/voltha-system-test-bbsim.groovy
+++ b/jjb/pipeline/voltha-system-test-bbsim.groovy
@@ -38,7 +38,6 @@
DEPLOY_K8S="y"
VOLTHA_LOG_LEVEL="DEBUG"
CONFIG_SADIS="y"
- EXTRA_HELM_FLAGS="${params.extraHelmFlags} --set voltha-etcd-cluster.clusterSize=3"
ROBOT_MISC_ARGS="-d $WORKSPACE/RobotLogs"
}
@@ -66,6 +65,17 @@
stage('Deploy Voltha') {
steps {
sh """
+ export EXTRA_HELM_FLAGS=""
+ if [ "${branch}" != "master" ]; then
+ echo "on branch: ${branch}, sourcing kind-voltha/releases/${branch}"
+ source "$WORKSPACE/kind-voltha/releases/${branch}"
+ else
+ echo "on master, using default settings for kind-voltha"
+ fi
+
+ EXTRA_HELM_FLAGS+="${params.extraHelmFlags} --set voltha-etcd-cluster.clusterSize=3 "
+ echo \$EXTRA_HELM_FLAGS
+
pushd kind-voltha/
./voltha up
popd
@@ -77,7 +87,7 @@
steps {
sh '''
rm -rf $WORKSPACE/RobotLogs; mkdir -p $WORKSPACE/RobotLogs
- git clone https://gerrit.opencord.org/voltha-system-tests
+ git clone -b ${branch} https://gerrit.opencord.org/voltha-system-tests
make ROBOT_DEBUG_LOG_OPT="-l sanity_log.html -r sanity_report.html -o sanity_output.xml" -C $WORKSPACE/voltha-system-tests ${makeTarget}
'''
}
diff --git a/jjb/pipeline/xos-core.groovy b/jjb/pipeline/xos-core.groovy
index b704369..6405553 100644
--- a/jjb/pipeline/xos-core.groovy
+++ b/jjb/pipeline/xos-core.groovy
@@ -156,6 +156,19 @@
"""
}
}
+ stage ('Archive Artifacts') {
+ when { expression { return params.ArchiveLogs } }
+ steps {
+ sh '''
+ kubectl get pods --all-namespaces
+ ## get default pod logs
+ for pod in \$(kubectl get pods --no-headers | awk '{print \$1}');
+ do
+ kubectl logs \$pod> $WORKSPACE/\$pod.log;
+ done
+ '''
+ }
+ }
}
post {
always {
@@ -186,6 +199,7 @@
passThreshold: 100,
reportFileName: 'RobotLogs/report*.html',
unstableThreshold: 0]);
+ archiveArtifacts artifacts: '*.log'
step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org, teo@opennetworking.org", sendToIndividuals: false])
}
diff --git a/jjb/pipeline/xos-service-upgrade.groovy b/jjb/pipeline/xos-service-upgrade.groovy
index a092945..10d2a14 100644
--- a/jjb/pipeline/xos-service-upgrade.groovy
+++ b/jjb/pipeline/xos-service-upgrade.groovy
@@ -16,6 +16,7 @@
// Checks functionality of the helm-chart, without overriding the version/tag used
def serviceName = "${gerritProject}"
+def doTest = true
pipeline {
@@ -44,17 +45,6 @@
}
}
- stage('patch') {
- steps {
- sh '''
- pushd cord
- PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifests/default.xml)
- repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
- popd
- '''
- }
- }
-
stage('minikube') {
steps {
/* see https://github.com/kubernetes/minikube/#linux-continuous-integration-without-vm-support */
@@ -72,7 +62,7 @@
timeout(3) {
waitUntil {
sleep 5
- def kc_ret = sh script: "kubectl get po", returnStatus: true
+ def kc_ret = sh script: "kubectl get pods", returnStatus: true
return (kc_ret == 0);
}
}
@@ -91,14 +81,91 @@
}
}
- stage('Install XOS w/Service') {
+ stage('Verify xos-core version requirements') {
steps {
- script {
+ script {
if (serviceName == "olt-service") {
serviceName = "volt"
}
- else if (serviceName == "onos-service") {
- serviceName = "onos"
+ else if (serviceName == "kubernetes-service") {
+ serviceName = "kubernetes"
+ }
+ def result = sh returnStdout: true, script: """
+ #!/usr/bin/env bash
+ set -eu -o pipefail
+
+ # Obtain git tag of the service corresponding to the the docker image
+ # used in the latest released version of the helm chart (i.e., HEAD
+ # of cord/helm-charts master branch, which should be already checked
+ # out by repo).
+ pushd cord/helm-charts
+ export RELEASED_GIT_TAG=\$(echo -e "import yaml\\nwith open('xos-services/${serviceName}/Chart.yaml', 'r') as f: print yaml.safe_load(f)['appVersion']" | python)
+ popd
+
+ # Obtain the xos-core version requirement from the config.yaml of the
+ # released service.
+ pushd cord
+ PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifests/default.xml)
+ pushd \${PROJECT_PATH}
+ git fetch --all --tags
+ git checkout tags/\${RELEASED_GIT_TAG} -b foobar
+ export RELEASED_CORE_VER_REQ=\$(echo -e "import yaml\\nwith open('xos/synchronizer/config.yaml', 'r') as f: print yaml.safe_load(f)['core_version']" | python)
+ popd
+ popd
+
+ # Do the same for the patchset we want to verify.
+ pushd cord
+ repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+ pushd \${PROJECT_PATH}
+ export PATCHSET_CORE_VER_REQ=\$(echo -e "import yaml\\nwith open('xos/synchronizer/config.yaml', 'r') as f: print yaml.safe_load(f)['core_version']" | python)
+ popd
+ popd
+
+ # We need to produce at least one log file so the archiveArtifacts
+ # step later won't complain.
+ echo "RELEASED_CORE_VER_REQ: \${RELEASED_CORE_VER_REQ}" >> $WORKSPACE/version_requirements.log
+ echo "PATCHSET_CORE_VER_REQ: \${PATCHSET_CORE_VER_REQ}" >> $WORKSPACE/version_requirements.log
+
+ if [ "\${PATCHSET_CORE_VER_REQ}" == "\${RELEASED_CORE_VER_REQ}" ]; then
+ echo 0
+ else
+ # versionMismatch is true
+ echo 1
+ fi
+ """
+ def versionMismatch = result.readLines().last().toBoolean()
+ if (versionMismatch) {
+ echo "Detected xos-core version requirements mismatch. Will skip the rest of the pipeline and return SUCCESS"
+ }
+ doTest = !versionMismatch
+ }
+ }
+ }
+
+ // The patchset should be already checked out, but for consistency with
+ // other pipeline jobs, we re-do the same here.
+ stage('patch') {
+ when {
+ expression { doTest }
+ }
+ steps {
+ sh '''
+ pushd cord
+ PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifests/default.xml)
+ repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+ popd
+ '''
+ }
+ }
+
+ stage('Install XOS w/Service') {
+ when {
+ expression { doTest }
+ }
+ steps {
+ script {
+ if (serviceName == "olt-service") {
+ serviceName = "volt"
}
else if (serviceName == "kubernetes-service") {
serviceName = "kubernetes"
@@ -122,6 +189,9 @@
}
}
stage('Verify') {
+ when {
+ expression { doTest }
+ }
steps {
echo "serviceName: ${serviceName}"
sh """
@@ -142,6 +212,9 @@
}
}
stage('Generate Model API Tests') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
@@ -164,9 +237,18 @@
}
stage('Test Pre-Upgrade') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
- pushd cord/test/cord-tester/src/test/cord-api/Tests
+ #!/usr/bin/env bash
+ set -ex -o pipefail
+
+ pushd cord/test/cord-tester
+ make venv_cord
+ source venv_cord/bin/activate
+ cd src/test/cord-api/Tests
CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
CHAM_CONTAINER=\$(docker ps | grep k8s_xos-chameleon | awk '{print \$1}')
@@ -193,10 +275,14 @@
}
stage('Build/Install New Service') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
#!/usr/bin/env bash
set -eu -o pipefail
+
pushd $WORKSPACE/cord/orchestration/xos-services/${gerritProject}
export DOCKER_TAG=\$(cat VERSION)-test
export DOCKER_REPOSITORY=xosproject/
@@ -215,6 +301,9 @@
}
stage('Verify Service Upgrade') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
#!/usr/bin/env bash
@@ -231,15 +320,25 @@
}
stage('Test Post-Upgrade') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
+ #!/usr/bin/env bash
+ set -ex -o pipefail
+
+ cd cord/test/cord-tester
+ make venv_cord
+ source venv_cord/bin/activate
+ cd src/test/cord-api/Tests
+
CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
export testname=_service_api.robot
export library=_library.robot
SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
echo \$SERVICES
- cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
for i in \$SERVICES; do bash -c "robot -v SETUP_FLAG:Setup -i get -d Log -T -v TESTLIBRARY:${serviceName}_library.robot \$i\$testname"; sleep 2; done || true
"""
}
@@ -247,6 +346,9 @@
/* Disable the downgrade step because the core doesn't support reverse migrations
stage('Downgrade Service') {
+ when {
+ expression { doTest }
+ }
steps {
sh """
#!/usr/bin/env bash
@@ -264,13 +366,18 @@
timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://127.0.0.1:30001/xosapi/v1/dynamicload/load_status | jq '.services[] | select(.name==\\"core\\").state'| grep -q present; do echo 'Waiting for Core to be loaded'; sleep 5; done"
timeout 300 bash -c "until http -a admin@opencord.org:letmein GET http://127.0.0.1:30001/xosapi/v1/dynamicload/load_status | jq '.services[] | select(.name==\\"${gerritProject}\\").state'| grep -q present; do echo 'Waiting for Service to be loaded'; sleep 5; done"
sleep 120
- cd $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests
+
+ cd $WORKSPACE/cord/test/cord-tester
+ make venv_cord
+ source venv_cord/bin/activate
+ cd src/test/cord-api/Tests
CORE_CONTAINER=\$(docker ps | grep k8s_xos-core | awk '{print \$1}')
export testname=_service_api.robot
export library=_library.robot
SERVICES=\$(docker exec -i \$CORE_CONTAINER /bin/bash -c "cd /opt/xos/dynamic_services/;find -name '*.xproto'" | awk -F[//] '{print \$2}')
+
echo \$SERVICES
for i in \$SERVICES; do bash -c "robot -v SETUP_FLAG:Setup -i get -d Log -T -v TESTLIBRARY:${gerritProject}_library.robot \$i\$testname"; sleep 2; done || true
@@ -299,10 +406,14 @@
# copy robot logs
if [ -d RobotLogs ]; then rm -r RobotLogs; fi; mkdir RobotLogs
- cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs
+ cp -r $WORKSPACE/cord/test/cord-tester/src/test/cord-api/Tests/Log/*ml ./RobotLogs || true
+ # Workaorund for when doTest is false and there's no Robot output to
+ # process. Without this file, RobotPublisher below will fail marking
+ # the build as FAILED.
+ if [ ! -f RobotLogs/output.xml ]; then echo '<xml></xml>' > RobotLogs/output.xml; fi;
kubectl get pods --all-namespaces
kubectl describe pods
- http -a admin@opencord.org:letmein GET http://127.0.0.1:30001/xosapi/v1/dynamicload/load_status
+ http -a admin@opencord.org:letmein GET http://127.0.0.1:30001/xosapi/v1/dynamicload/load_status || true
echo "# removing helm deployments"
kubectl get pods
helm list
@@ -325,7 +436,7 @@
reportFileName: 'RobotLogs/report*.html',
unstableThreshold: 0]);
archiveArtifacts artifacts: '*.log'
- step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "kailash@opennetworking.org, scottb@opennetworking.org", sendToIndividuals: false])
+ step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "scottb@opennetworking.org", sendToIndividuals: false])
}
}
}
diff --git a/jjb/shell/ansiblelint.sh b/jjb/shell/ansiblelint.sh
index ebb5328..f9eca6f 100755
--- a/jjb/shell/ansiblelint.sh
+++ b/jjb/shell/ansiblelint.sh
@@ -16,7 +16,7 @@
# ansiblelint.sh - check all yaml files that they pass the ansible-lint tool
-set +e -u -o pipefail
+set +e -o pipefail
fail_ansible=0
@@ -30,16 +30,16 @@
# allow directories to be skipped
# space separated directory list expected in SKIP_DIRS
-
-SKIP_DIRS=""
SKIP_REGEX=""
-if [[ -n $SKIP_DIRS ]]; then
+if [ -n "$SKIP_DIRS" ]; then
echo "=> Skipping files matching these directories: $SKIP_DIRS"
# prefix with ./ as find generates, swap spaces for pipes
- SKIP_REGEX=$(echo $SKIP_DIRS | sed 's/[^ ]*/.\/&\//g' | sed 's/ /|/g')
+ SKIP_REGEX=$(echo "$SKIP_DIRS" | sed 's/[^ ]*/.\/&\//g' | sed 's/ /|/g')
fi
+set -u
+
while IFS= read -r -d '' yf
do
if [[ $yf =~ $SKIP_REGEX ]]; then
diff --git a/jjb/siab.yaml b/jjb/siab.yaml
index 3d12c2c..0dc5d9d 100644
--- a/jjb/siab.yaml
+++ b/jjb/siab.yaml
@@ -18,7 +18,7 @@
description: |
<!-- Managed by Jenkins Job Builder -->
- Created by {id} job-template from ci-management/jjb/siba.yaml <br /><br />
+ Created by {id} job-template from ci-management/jjb/siab.yaml <br /><br />
E2E Validation for Seba-in-a-Box
properties:
@@ -68,7 +68,7 @@
description: |
<!-- Managed by Jenkins Job Builder -->
- Created by {id} job-template from ci-management/jjb/siba.yaml <br /><br />
+ Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab.groovy <br /><br />
E2E Validation for Seba-in-a-Box
properties:
@@ -118,7 +118,7 @@
description: |
<!-- Managed by Jenkins Job Builder -->
- Created by {id} job-template from ci-management/jjb/siba.yaml <br /><br />
+ Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab.groovy <br /><br />
E2E Validation for Seba-in-a-Box
properties:
@@ -169,7 +169,7 @@
description: |
<!-- Managed by Jenkins Job Builder -->
- Created by {id} job-template from ci-management/jjb/siba.yaml <br /><br />
+ Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab-test.groovy <br /><br />
E2E Validation for Seba-in-a-Box
properties:
diff --git a/jjb/verify/aaa.yaml b/jjb/verify/aaa.yaml
index 438dd3e..d834f06 100644
--- a/jjb/verify/aaa.yaml
+++ b/jjb/verify/aaa.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'aaa-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!aaa-1\.10).*)$'
- 'aaa-jobs-legacy':
branch-regexp: '^(aaa-1.10)$'
diff --git a/jjb/verify/bbsim.yaml b/jjb/verify/bbsim.yaml
index f4e2e13..5b06d42 100644
--- a/jjb/verify/bbsim.yaml
+++ b/jjb/verify/bbsim.yaml
@@ -35,5 +35,5 @@
- 'github-release':
dependency-jobs: 'version-tag'
github-organization: 'opencord'
- release-targets: 'dep release'
+ release-targets: 'release'
artifact-glob: 'release/*'
diff --git a/jjb/verify/dhcpl2relay.yaml b/jjb/verify/dhcpl2relay.yaml
index ef1d849..c24ee84 100644
--- a/jjb/verify/dhcpl2relay.yaml
+++ b/jjb/verify/dhcpl2relay.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'dhcpl2relay-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!dhcpl2relay-1\.6).*)$'
- 'dhcpl2relay-jobs-legacy':
branch-regexp: '^(dhcpl2relay-1.6)$'
@@ -34,4 +34,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/igmp.yaml b/jjb/verify/igmp.yaml
index 143d8c4..759b1ef 100644
--- a/jjb/verify/igmp.yaml
+++ b/jjb/verify/igmp.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'igmp-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!igmp-1\.4).*)$'
- 'igmp-jobs-legacy':
branch-regexp: '^(igmp-1.4)$'
@@ -34,4 +34,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/igmpproxy.yaml b/jjb/verify/igmpproxy.yaml
index 3ad0794..7e16884 100644
--- a/jjb/verify/igmpproxy.yaml
+++ b/jjb/verify/igmpproxy.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'igmpproxy-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!igmpproxy-1\.2).*)$'
junit-allow-empty-results: true
- 'igmpproxy-jobs-legacy':
@@ -36,4 +36,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/kafka-onos.yaml b/jjb/verify/kafka-onos.yaml
index d9fffe5..9f32a00 100644
--- a/jjb/verify/kafka-onos.yaml
+++ b/jjb/verify/kafka-onos.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'kafka-onos-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!kafka-onos-1\..).*)$'
junit-allow-empty-results: true
- 'kafka-onos-jobs-legacy':
diff --git a/jjb/verify/mcast.yaml b/jjb/verify/mcast.yaml
index a79f955..5c5a07d 100644
--- a/jjb/verify/mcast.yaml
+++ b/jjb/verify/mcast.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'mcast-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!mcast-1\.4).*)$'
junit-allow-empty-results: true
- 'mcast-jobs-legacy':
@@ -36,4 +36,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/ofagent-go.yaml b/jjb/verify/ofagent-go.yaml
index 48f6269..023544a 100644
--- a/jjb/verify/ofagent-go.yaml
+++ b/jjb/verify/ofagent-go.yaml
@@ -23,6 +23,8 @@
unit-test-targets: 'lint sca test'
unit-test-keep-going: 'true'
junit-allow-empty-results: true
+ - 'voltha-patch-test':
+ pipeline-script: 'voltha-bbsim-tests.groovy'
- job-group:
name: 'publish-ofagent-go-jobs'
diff --git a/jjb/verify/olt.yaml b/jjb/verify/olt.yaml
index a654a96..f2fb650 100644
--- a/jjb/verify/olt.yaml
+++ b/jjb/verify/olt.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'olt-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!olt-3\.0).*)$'
- 'olt-jobs-legacy':
branch-regexp: '^(olt-3.0)$'
@@ -34,4 +34,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/pyvoltha.yaml b/jjb/verify/pyvoltha.yaml
index 4100715..b8564cb 100644
--- a/jjb/verify/pyvoltha.yaml
+++ b/jjb/verify/pyvoltha.yaml
@@ -11,6 +11,17 @@
- 'publish-pyvoltha-jobs':
branch-regexp: '{all-branches-regexp}'
pypi-index: 'pypi'
+ - 'voltha-periodic-test':
+ name: 'nightly-pyvoltha-compatibility-test'
+ pipeline-script: 'voltha-bbsim-tests.groovy'
+ build-node: 'ubuntu16.04-basebuild-4c-8g'
+ default-image-tag: 'master'
+ code-branch: 'master'
+ make-target: sanity-single-kind
+ gerrit-project: pyvoltha
+ onus: 1
+ pons: 1
+ time-trigger: "@daily"
- job-group:
name: 'verify-pyvoltha-jobs'
@@ -20,9 +31,7 @@
dependency-jobs: 'verify_pyvoltha_licensed'
- 'python-unit-test':
dependency-jobs: 'verify_pyvoltha_tag-collision'
- - 'voltha-patch-test':
- pipeline-script: 'voltha-bbsim-tests.groovy'
- skip-vote: true
+
- job-group:
name: 'publish-pyvoltha-jobs'
diff --git a/jjb/verify/sadis.yaml b/jjb/verify/sadis.yaml
index fe700d0..536909a 100644
--- a/jjb/verify/sadis.yaml
+++ b/jjb/verify/sadis.yaml
@@ -10,7 +10,7 @@
branch-regexp: '^(.*)$'
- 'sadis-jobs':
- branch-regexp: '^(master)$'
+ branch-regexp: '^((?!sadis-3\.1).*)$'
- 'sadis-jobs-legacy':
branch-regexp: '^(sadis-3.1)$'
@@ -34,4 +34,3 @@
jobs:
- 'maven-test'
- 'maven-publish'
-
diff --git a/jjb/verify/voltha-helm-charts.yaml b/jjb/verify/voltha-helm-charts.yaml
index c7389bb..12aad0a 100644
--- a/jjb/verify/voltha-helm-charts.yaml
+++ b/jjb/verify/voltha-helm-charts.yaml
@@ -21,4 +21,3 @@
dependency-jobs: 'verify_voltha-helm-charts_helm-lint'
build-timeout: 20
pipeline-script: 'voltha-bbsim-tests.groovy'
- extra-helm-flags: '--set defaults.image_tag=null,images.onos.tag=4.0.0,images.onos.repository=voltha/voltha-onos'
diff --git a/jjb/verify/voltha-lib-go.yaml b/jjb/verify/voltha-lib-go.yaml
index fee00c3..9f148ef 100644
--- a/jjb/verify/voltha-lib-go.yaml
+++ b/jjb/verify/voltha-lib-go.yaml
@@ -8,6 +8,17 @@
jobs:
- 'verify-voltha-lib-go-jobs':
branch-regexp: '{all-branches-regexp}'
+ - 'voltha-periodic-test':
+ name: 'nightly-voltha-lib-go-compatibility-test'
+ pipeline-script: 'voltha-bbsim-tests.groovy'
+ build-node: 'ubuntu16.04-basebuild-4c-8g'
+ default-image-tag: 'master'
+ code-branch: 'master'
+ make-target: sanity-single-kind
+ gerrit-project: voltha-lib-go
+ onus: 1
+ pons: 1
+ time-trigger: "@daily"
- job-group:
name: 'verify-voltha-lib-go-jobs'
@@ -21,6 +32,3 @@
dest-gopath: "github.com/opencord"
unit-test-targets: 'lint sca test'
unit-test-keep-going: 'true'
- - 'voltha-patch-test':
- pipeline-script: 'voltha-bbsim-tests.groovy'
- skip-vote: true
diff --git a/jjb/verify/voltha-onos.yaml b/jjb/verify/voltha-onos.yaml
index 7d426ca..c28e5b4 100644
--- a/jjb/verify/voltha-onos.yaml
+++ b/jjb/verify/voltha-onos.yaml
@@ -17,9 +17,11 @@
- 'verify-licensed'
- 'tag-collision-reject':
dependency-jobs: 'verify_voltha-onos_licensed'
- - 'make-unit-test':
- unit-test-targets: 'build'
- junit-allow-empty-results: true
+ # No need to build the container as part of the unit-tests as it's
+ # built in 'voltha-patch-test'
+ # - 'make-unit-test':
+ # unit-test-targets: 'build'
+ # junit-allow-empty-results: true
- 'voltha-patch-test':
pipeline-script: 'voltha-bbsim-tests.groovy'
diff --git a/jjb/verify/voltha-protos.yaml b/jjb/verify/voltha-protos.yaml
index ef7b6ab..98afdb0 100644
--- a/jjb/verify/voltha-protos.yaml
+++ b/jjb/verify/voltha-protos.yaml
@@ -12,6 +12,17 @@
branch-regexp: '{all-branches-regexp}'
pypi-index: 'pypi'
pypi-prep-commands: 'make python-protos'
+ - 'voltha-periodic-test':
+ name: 'nightly-voltha-protos-compatibility-test'
+ pipeline-script: 'voltha-bbsim-tests.groovy'
+ build-node: 'ubuntu16.04-basebuild-4c-8g'
+ default-image-tag: 'master'
+ code-branch: 'master'
+ make-target: sanity-single-kind
+ gerrit-project: voltha-protos
+ onus: 1
+ pons: 1
+ time-trigger: "@daily"
- job-group:
name: 'verify-voltha-protos-jobs'
@@ -23,9 +34,6 @@
build-timeout: 20
unit-test-targets: 'test'
unit-test-keep-going: 'true'
- - 'voltha-patch-test':
- pipeline-script: 'voltha-bbsim-tests.groovy'
- skip-vote: true
- job-group:
name: 'post-merge-voltha-protos-jobs'
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index fdab5f3..6dac951 100644
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -5,22 +5,30 @@
name: voltha-e2e
project-name: '{name}'
+ manualBranch: ''
jobs:
- 'voltha-periodic-test':
name: 'periodic-voltha-sanity-test'
build-node: 'qct-pod4-node2'
- default-image-tag: 'master'
code-branch: 'master'
make-target: sanity-multi-kind
onus: 2
pons: 2
- time-trigger: "H H/3 * * *"
+ time-trigger: "H H/6 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-sanity-test-2.3'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'voltha-2.3'
+ make-target: sanity-multi-kind
+ onus: 2
+ pons: 2
+ time-trigger: "H H/6 * * *"
- 'voltha-periodic-test':
name: 'periodic-voltha-functional-test'
build-node: 'qct-pod4-node2'
- default-image-tag: 'master'
code-branch: 'master'
make-target: functional-single-kind
onus: 1
@@ -28,10 +36,27 @@
time-trigger: "H H/12 * * *"
- 'voltha-periodic-test':
+ name: 'periodic-voltha-functional-test-2.3'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'voltha-2.3'
+ make-target: functional-single-kind
+ onus: 1
+ pons: 1
+ time-trigger: "H H/12 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-errorscenarios-test'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'master'
+ make-target: bbsim-errorscenarios
+ onus: 1
+ pons: 1
+ time-trigger: "H H/6 * * *"
+
+ - 'voltha-periodic-test':
name: 'periodic-voltha-system-test'
pipeline-script: 'voltha-system-test-bbsim.groovy'
build-node: 'ubuntu16.04-basebuild-4c-8g'
- default-image-tag: 'master'
code-branch: 'master'
make-target: sanity-multi-kind
onus: 2
@@ -39,25 +64,72 @@
time-trigger: "H H/12 * * *"
- 'voltha-periodic-test':
+ name: 'periodic-voltha-system-test-2.3'
+ pipeline-script: 'voltha-system-test-bbsim.groovy'
+ build-node: 'ubuntu16.04-basebuild-4c-8g'
+ code-branch: 'voltha-2.3'
+ make-target: sanity-multi-kind
+ onus: 2
+ pons: 2
+ time-trigger: "H H/12 * * *"
+
+
+ - 'voltha-periodic-test':
name: 'periodic-voltha-sanity-test-multi-runs'
pipeline-script: 'voltha-go-multi-tests.groovy'
build-node: 'qct-pod4-node2'
- default-image-tag: 'master'
code-branch: 'master'
make-target: sanity-kind
onus: 1
pons: 1
test-runs: 5
- time-trigger: "H H/3 * * *"
+ time-trigger: "H H/6 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-sanity-test-multi-runs-2.3'
+ pipeline-script: 'voltha-go-multi-tests.groovy'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'voltha-2.3'
+ make-target: sanity-kind
+ onus: 1
+ pons: 1
+ test-runs: 5
+ time-trigger: "H H/6 * * *"
- 'voltha-periodic-test':
name: 'periodic-voltha-scale-test'
build-node: 'qct-pod4-node2'
- default-image-tag: 'master'
code-branch: 'master'
make-target: scale-multi-kind
onus: 2
pons: 8
+ time-trigger: "H H/6 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-scale-test-2.3'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'voltha-2.3'
+ make-target: scale-multi-kind
+ onus: 2
+ pons: 8
+ time-trigger: "H H/6 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-alarm-test'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'master'
+ make-target: bbsim-alarms-kind
+ onus: 1
+ pons: 1
+ time-trigger: "H H/3 * * *"
+
+ - 'voltha-periodic-test':
+ name: 'periodic-voltha-alarm-test-2.3'
+ build-node: 'qct-pod4-node2'
+ code-branch: 'voltha-2.3'
+ make-target: bbsim-alarms-kind
+ onus: 1
+ pons: 1
time-trigger: "H H/3 * * *"
# Per-patchset Pod builds on Tucson pod
@@ -65,20 +137,16 @@
name: 'verify_physical_voltha_patchset_auto'
build-node: 'tucson-pod'
config-pod: 'tucson-pod'
- branch: 'master'
oltDebVersion: 'openolt_asfvolt16.deb'
profile: 'Default'
- withPatchset: true
# Per-patchset Pod builds on Tucson pod
- 'verify_physical_voltha_patchset_manual':
name: 'verify_physical_voltha_patchset_manual'
build-node: 'tucson-pod'
config-pod: 'tucson-pod'
- branch: 'master'
oltDebVersion: 'openolt_asfvolt16.deb'
profile: 'Default'
- withPatchset: true
# Manual build job for Tucson pod
# Allow local testing without disrupting above job
@@ -86,10 +154,9 @@
name: 'build_tucson-pod_manual'
build-node: 'tucson-pod'
config-pod: 'tucson-pod'
- branch: 'master'
+ manualBranch: 'master'
oltDebVersion: 'openolt_asfvolt16.deb'
profile: 'Default'
- withPatchset: false
- job-template:
id: 'voltha-periodic-test'
@@ -97,6 +164,7 @@
pipeline-script: 'voltha-go-tests.groovy'
test-runs: 1
robot-args: ''
+ gerrit-project: ''
description: |
<!-- Managed by Jenkins Job Builder -->
@@ -121,7 +189,7 @@
- string:
name: extraHelmFlags
- default: '--set defaults.image_tag={default-image-tag},onu={onus},pon={pons},use_ofagent_go=True,images.ofagent.repository=voltha/ofagent-go,images.ofagent.tag=master'
+ default: '--set onu={onus},pon={pons}'
description: 'Helm flags to pass to ./voltha up'
- string:
@@ -132,12 +200,27 @@
- string:
name: manifestUrl
default: '{gerrit-server-url}/{voltha-test-manifest-repo}'
- description: 'Repo manifest URL for code checkout (so we can display changes in Jenkins)'
+ description: 'Repo manifest URL for code checkout'
- string:
- name: manifestBranch
+ name: branch
default: '{code-branch}'
- description: 'Repo manifest branch for code checkout (so we can display changes in Jenkins)'
+ description: 'Repo manifest branch for code checkout'
+
+ - string:
+ name: gerritProject
+ default: '{gerrit-project}'
+ description: 'Name of the Gerrit project'
+
+ - string:
+ name: gerritChangeNumber
+ default: ''
+ description: 'Changeset number in Gerrit'
+
+ - string:
+ name: gerritPatchsetNumber
+ default: ''
+ description: 'PatchSet number in Gerrit'
- string:
name: testRuns
@@ -163,8 +246,6 @@
- job-template:
id: 'voltha-patch-test'
name: 'verify_{project}_sanity-test{name-extension}'
- extra-helm-flags: ''
- skip-vote: false
description: |
<!-- Managed by Jenkins Job Builder -->
@@ -193,9 +274,9 @@
description: 'URL to the repo manifest'
- string:
- name: manifestBranch
- default: 'master'
- description: 'Name of the repo branch to use'
+ name: branch
+ default: '$GERRIT_BRANCH'
+ description: 'Name of the branch to use'
- string:
name: gerritProject
@@ -214,7 +295,7 @@
- string:
name: extraHelmFlags
- default: '{extra-helm-flags}'
+ default: ''
description: 'Helm flags to pass to ./voltha up'
project-type: pipeline
@@ -244,11 +325,6 @@
file-paths:
- compare-type: REG_EXP
pattern: '{all-files-regexp}'
- skip-vote:
- successful: '{skip-vote}'
- failed: '{skip-vote}'
- unstable: '{skip-vote}'
- notbuilt: '{skip-vote}'
# POD Per Patchset Pipeline Jobs
@@ -281,9 +357,9 @@
description: 'URL to the repo manifest'
- string:
- name: manifestBranch
- default: master
- description: 'Name of the repo branch to use'
+ name: branch
+ default: '$GERRIT_BRANCH'
+ description: 'Name of the branch to use'
- string:
name: gerritProject
@@ -340,10 +416,6 @@
description: 'OLT Software version to install'
- string:
- name: branch
- default: '{branch}'
-
- - string:
name: profile
default: '{profile}'
description: 'Technology Profile pushed to the ETCD'
@@ -358,14 +430,14 @@
default: true
description: "Re-install OLT software"
- - bool:
- name: withPatchset
- default: true
- description: "Build with Gerrit patchset"
+ - string:
+ name: manualBranch
+ default: '{manualBranch}'
+ description: "If a non-empty string, build manually as a specific branch, not with a specific patchset"
- string:
name: extraRobotArgs
- default: '-i sanity'
+ default: '-i sanityORDeleteOLT'
description: 'Arguments to pass to robot'
project-type: pipeline
@@ -387,7 +459,7 @@
approval-value: '+2'
projects:
- project-compare-type: REG_EXP
- project-pattern: '^(voltha-openolt-adapter|voltha-openonu-adapter)$'
+ project-pattern: '^(voltha-openolt-adapter|voltha-openonu-adapter|voltha-go)$'
branches:
- branch-compare-type: PLAIN
branch-pattern: 'master'
@@ -422,8 +494,8 @@
description: 'URL to the repo manifest'
- string:
- name: manifestBranch
- default: master
+ name: branch
+ default: '$GERRIT_BRANCH'
description: 'Name of the repo branch to use'
- string:
@@ -481,10 +553,6 @@
description: 'OLT Software version to install'
- string:
- name: branch
- default: '{branch}'
-
- - string:
name: profile
default: '{profile}'
description: 'Technology Profile pushed to the ETCD'
@@ -499,14 +567,14 @@
default: true
description: "Re-install OLT software"
- - bool:
- name: withPatchset
- default: true
- description: "Build with Gerrit patchset"
+ - string:
+ name: manualBranch
+ default: '{manualBranch}'
+ description: "If a non-empty string, build manually on a specific branch, not with a specific patchset"
- string:
name: extraRobotArgs
- default: '-i sanity'
+ default: '-i sanityORDeleteOLT'
description: 'Arguments to pass to robot'
project-type: pipeline
@@ -529,10 +597,10 @@
comment-contains-value: '^hardware test with delay$'
projects:
- project-compare-type: REG_EXP
- project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter|voltha-api-server|voltha-system-tests|ofagent-py|voltha-onos)$'
+ project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter|voltha-api-server|voltha-system-tests|ofagent-py|ofagent-go|voltha-onos)$'
branches:
- - branch-compare-type: PLAIN
- branch-pattern: 'master'
+ - branch-compare-type: REG_EXP
+ branch-pattern: '^(master|voltha-2.3)$'
- job-template:
@@ -564,9 +632,9 @@
description: 'URL to the repo manifest'
- string:
- name: manifestBranch
- default: master
- description: 'Name of the repo branch to use (change to $GERRIT_BRANCH if testing a patchset)'
+ name: branch
+ default: "$GERRIT_BRANCH"
+ description: 'Name of the repo manifest branch to use'
- string:
name: gerritProject
@@ -623,10 +691,6 @@
description: 'OLT Software version to install'
- string:
- name: branch
- default: '{branch}'
-
- - string:
name: profile
default: '{profile}'
description: 'Technology Profile pushed to the ETCD'
@@ -641,10 +705,10 @@
default: false
description: "Re-install OLT software"
- - bool:
- name: withPatchset
- default: false
- description: "Build with Gerrit patchset"
+ - string:
+ name: manualBranch
+ default: '{manualBranch}'
+ description: "If a non-empty string, build manually on a specific branch, not with a specific patchset"
- string:
name: extraRobotArgs
diff --git a/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index e43df51..6b43359 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -8,40 +8,184 @@
jobs:
- 'voltha-scale-measurements-periodic':
- name: 'voltha-scale-measurements-periodic-256-200ms'
+ name: 'voltha-scale-measurements-periodic-8-16-200ms'
build-node: 'onf-pod1-head-node'
- time-trigger: "0 * * * *"
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 16
+ ponPorts: 8
+ expectedOnus: 128
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-8-16-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 16
+ ponPorts: 8
+ expectedOnus: 128
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-8-32-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
onuPerPon: 32
ponPorts: 8
expectedOnus: 256
BBSIMdelay: 200
- 'voltha-scale-measurements-periodic':
- name: 'voltha-scale-measurements-periodic-128-200ms'
+ name: 'voltha-scale-measurements-periodic-8-32-1000ms'
build-node: 'onf-pod1-head-node'
- time-trigger: "15 * * * *"
- onuPerPon: 32
- ponPorts: 4
- expectedOnus: 128
- BBSIMdelay: 200
- - 'voltha-scale-measurements-periodic':
- name: 'voltha-scale-measurements-periodic-256-1000ms'
- build-node: 'onf-pod1-head-node'
- time-trigger: "30 * * * *"
+ time-trigger: "H H/4 * * *"
onuPerPon: 32
ponPorts: 8
expectedOnus: 256
BBSIMdelay: 1000
- 'voltha-scale-measurements-periodic':
- name: 'voltha-scale-measurements-periodic-128-1000ms'
+ name: 'voltha-scale-measurements-periodic-10-20-200ms'
build-node: 'onf-pod1-head-node'
- time-trigger: "45 * * * *"
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 20
+ ponPorts: 10
+ expectedOnus: 200
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-10-20-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 20
+ ponPorts: 10
+ expectedOnus: 200
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-32-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
onuPerPon: 32
ponPorts: 4
expectedOnus: 128
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-32-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 32
+ ponPorts: 4
+ expectedOnus: 128
+ BBSIMdelay: 1000
+
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-16-32-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 32
+ ponPorts: 16
+ expectedOnus: 512
+ BBSIMdelay: 200
+ # multi-adapter-tmp-changes
+ volthaImg: "matteoscandolo/voltha-rw-core:partition"
+ ofAgentImg: "voltha/voltha-ofagent-go:master"
+ openoltAdapterImg: "matteoscandolo/voltha-openolt-adapter:partition"
+ openonuAdapterImg: "matteoscandolo/voltha-openonu-adapter:partition"
+ openonuAdapterChart: "/home/cord/voltha-helm-charts/voltha-adapter-openonu"
+ extraHelmFlags: "--set use_ofagent_go=true -f /home/cord/partition-values.yaml"
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-16-64-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 64
+ ponPorts: 16
+ expectedOnus: 1024
+ BBSIMdelay: 200
+ # multi-adapter-tmp-changes
+ volthaImg: "matteoscandolo/voltha-rw-core:partition"
+ ofAgentImg: "voltha/voltha-ofagent-go:master"
+ openoltAdapterImg: "matteoscandolo/voltha-openolt-adapter:partition"
+ openonuAdapterImg: "matteoscandolo/voltha-openonu-adapter:partition"
+ openonuAdapterChart: "/home/cord/voltha-helm-charts/voltha-adapter-openonu"
+ extraHelmFlags: "--set use_ofagent_go=true -f /home/cord/partition-values.yaml"
+
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-64-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 64
+ ponPorts: 4
+ expectedOnus: 256
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-64-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 64
+ ponPorts: 4
+ expectedOnus: 256
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-128-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 128
+ ponPorts: 4
+ expectedOnus: 512
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-4-128-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 128
+ ponPorts: 4
+ expectedOnus: 512
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-128-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 128
+ ponPorts: 1
+ expectedOnus: 128
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-128-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 128
+ ponPorts: 1
+ expectedOnus: 128
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-64-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 64
+ ponPorts: 1
+ expectedOnus: 64
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-64-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 64
+ ponPorts: 1
+ expectedOnus: 64
+ BBSIMdelay: 1000
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-1-200ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 1
+ ponPorts: 1
+ expectedOnus: 1
+ BBSIMdelay: 200
+ - 'voltha-scale-measurements-periodic':
+ name: 'voltha-scale-measurements-periodic-1-1-1000ms'
+ build-node: 'onf-pod1-head-node'
+ time-trigger: "H H/4 * * *"
+ onuPerPon: 1
+ ponPorts: 1
+ expectedOnus: 1
BBSIMdelay: 1000
- 'voltha-scale-measurements':
name: 'voltha-scale-measurements-dev'
- build-node: 'voltha-scale-dev'
+ build-node: 'voltha-scale'
onuPerPon: 16
ponPorts: 1
expectedOnus: 16
@@ -68,6 +212,19 @@
build-timeout: '{build-timeout}'
jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ # default parameters
+ bbsimImg: voltha/bbsim:master
+ bbsimChart: onf/bbsim
+ volthaImg: voltha/voltha-rw-core:master
+ ofAgentImg: voltha/voltha-ofagent-go:master
+ volthaChart: onf/voltha
+ openoltAdapterImg: voltha/voltha-openolt-adapter:master
+ openoltAdapterChart: onf/voltha-adapter-openolt
+ openonuAdapterImg: voltha/voltha-openonu-adapter:master
+ openonuAdapterChart: onf/voltha-adapter-openonu
+ onosImg: voltha/voltha-onos:4.0.1
+ extraHelmFlags: ''
+
parameters:
- string:
name: buildNode
@@ -75,6 +232,11 @@
description: 'Name of the Jenkins node to run the job on'
- string:
+ name: logLevel
+ default: 'WARN'
+ description: 'Log level for all the components'
+
+ - string:
name: onuPerPon
default: '{onuPerPon}'
description: 'Number of ONUs to provision'
@@ -136,14 +298,59 @@
- string:
name: bbsimImg
- default:
+ default: '{bbsimImg}'
description: 'Custom image selection for BBSIM (repo:tag)'
- string:
+ name: bbsimChart
+ default: '{bbsimChart}'
+ description: 'BBSim chart name (or location on file system)'
+
+ - string:
name: volthaImg
- default:
+ default: '{volthaImg}'
description: 'Custom image selection for VOLTHA (repo:tag)'
+ - string:
+ name: ofAgentImg
+ default: '{ofAgentImg}'
+ description: 'Custom image selection for OfAgent (repo:tag), only supports the go version'
+
+ - string:
+ name: volthaChart
+ default: '{volthaChart}'
+ description: 'VOLTHA chart name (or location on file system)'
+
+ - string:
+ name: openoltAdapterImg
+ default: '{openoltAdapterImg}'
+ description: 'Custom image selection for Openolt Adapter (repo:tag)'
+
+ - string:
+ name: openoltAdapterChart
+ default: '{openoltAdapterChart}'
+ description: 'OpenOLT chart name (or location on file system)'
+
+ - string:
+ name: openonuAdapterImg
+ default: '{openonuAdapterImg}'
+ description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
+ - string:
+ name: openonuAdapterChart
+ default: '{openonuAdapterChart}'
+ description: 'OpenONU chart name (or location on file system)'
+
+ - string:
+ name: onosImg
+ default: '{onosImg}'
+ description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
+ - string:
+ name: extraHelmFlags
+ default: '{extraHelmFlags}'
+ description: 'Any extra helm parameters you want (passed to every helm install command)'
+
project-type: pipeline
concurrent: false
@@ -175,6 +382,19 @@
build-timeout: '{build-timeout}'
jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ # default parameters
+ bbsimImg: "voltha/bbsim:master"
+ bbsimChart: "onf/bbsim"
+ volthaImg: "voltha/voltha-rw-core:master"
+ ofAgentImg: "voltha/voltha-ofagent-go:master"
+ volthaChart: "onf/voltha"
+ openoltAdapterImg: "voltha/voltha-openolt-adapter:master"
+ openoltAdapterChart: "onf/voltha-adapter-openolt"
+ openonuAdapterImg: "voltha/voltha-openonu-adapter:master"
+ openonuAdapterChart: "onf/voltha-adapter-openonu"
+ onosImg: "voltha/voltha-onos:4.0.1"
+ extraHelmFlags: ''
+
parameters:
- string:
name: buildNode
@@ -182,6 +402,11 @@
description: 'Name of the Jenkins node to run the job on'
- string:
+ name: logLevel
+ default: 'WARN'
+ description: 'Log level for all the components'
+
+ - string:
name: onuPerPon
default: 1
description: 'Number of ONUs to provision'
@@ -243,14 +468,59 @@
- string:
name: bbsimImg
- default:
+ default: '{bbsimImg}'
description: 'Custom image selection for BBSIM (repo:tag)'
- string:
+ name: bbsimChart
+ default: '{bbsimChart}'
+ description: 'BBSim chart name (or location on file system)'
+
+ - string:
name: volthaImg
- default:
+ default: '{volthaImg}'
description: 'Custom image selection for VOLTHA (repo:tag)'
+ - string:
+ name: ofAgentImg
+ default: '{ofAgentImg}'
+ description: 'Custom image selection for OfAgent (repo:tag), only supports the go version'
+
+ - string:
+ name: volthaChart
+ default: '{volthaChart}'
+ description: 'VOLTHA chart name (or location on file system)'
+
+ - string:
+ name: openoltAdapterImg
+ default: '{openoltAdapterImg}'
+ description: 'Custom image selection for Openolt Adapter (repo:tag)'
+
+ - string:
+ name: openoltAdapterChart
+ default: '{openoltAdapterChart}'
+ description: 'OpenOLT chart name (or location on file system)'
+
+ - string:
+ name: openonuAdapterImg
+ default: '{openonuAdapterImg}'
+ description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
+ - string:
+ name: openonuAdapterChart
+ default: '{openonuAdapterChart}'
+ description: 'OpenONU chart name (or location on file system)'
+
+ - string:
+ name: onosImg
+ default: '{onosImg}'
+ description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
+ - string:
+ name: extraHelmFlags
+ default: '{extraHelmFlags}'
+ description: 'Any extra helm parameters you want (passed to every helm install command)'
+
project-type: pipeline
concurrent: false