Meridio: Support any deployment type (Helm, operator), Support seed
- Add Number of workers as parameter
- kind-helm can now be replace (preparation for operator support)
- Add seed as parameter
- No crash if environment setup fails
Change-Id: I169039afb8030fa10708a979f8a1e7a5884548ed
diff --git a/jjb/nsm/e2e.Jenkinsfile b/jjb/nsm/e2e.Jenkinsfile
index 8343ec7..04f7f36 100644
--- a/jjb/nsm/e2e.Jenkinsfile
+++ b/jjb/nsm/e2e.Jenkinsfile
@@ -14,6 +14,10 @@
def kubernetes_version = params.KUBERNETES_VERSION
def nsm_version = params.NSM_VERSION
def ip_family = params.IP_FAMILY
+ def number_of_workers = params.NUMBER_OF_WORKERS
+ def environment_name = params.ENVIRONMENT_NAME
+
+ def seed = params.SEED
stage('Clone/Checkout') {
git branch: default_branch, url: git_project
@@ -30,34 +34,37 @@
}
timeout(60) {
stage('Environment') {
- currentBuild.description = "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version / Current Branch: $current_branch"
+ currentBuild.description = "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version / Current Branch: $current_branch / Seed: $seed"
try {
- ExecSh("make -s -C docs/demo/scripts/kind/ KUBERNETES_VERSION=$kubernetes_version NSM_VERSION=$nsm_version KUBERNETES_IP_FAMILY=$ip_family").call()
- ExecSh("helm install deployments/helm/ --generate-name --create-namespace --namespace red --set trench.name=trench-a --set ipFamily=$ip_family").call()
- ExecSh("helm install deployments/helm/ --generate-name --create-namespace --namespace red --set trench.name=trench-b --set vlan.id=200 --set ipFamily=$ip_family").call()
- ExecSh('helm install examples/target/deployments/helm/ --generate-name --create-namespace --namespace red --set applicationName=target-a --set default.trench.name=trench-a').call()
- ExecSh('helm install examples/target/deployments/helm/ --generate-name --create-namespace --namespace red --set applicationName=target-b --set default.trench.name=trench-b').call()
- sh 'sleep 10'
- ExecSh('kubectl wait --for=condition=Ready pods --all --all-namespaces --timeout=5m').call()
+ ExecSh("make -s -C test/e2e/environment/$environment_name/ KUBERNETES_VERSION=$kubernetes_version NSM_VERSION=$nsm_version KUBERNETES_IP_FAMILY=$ip_family KUBERNETES_WORKERS=$number_of_workers").call()
} catch (Exception e) {
- Error('Error creating the environment').call()
+ unstable 'Environment setup failed'
+ currentBuild.result = 'FAILURE'
}
}
stage('E2E') {
- try {
- ExecSh("make e2e E2E_PARAMETERS=\"\$(cat ./test/e2e/environment/kind-helm/$ip_family/config.txt | tr '\\n' ' ')\"").call()
- } catch (Exception e) {
- unstable 'E2E Tests failed'
- currentBuild.result = 'FAILURE'
+ if (currentBuild.result != 'FAILURE') {
+ try {
+ ExecSh("make e2e E2E_PARAMETERS=\"\$(cat ./test/e2e/environment/$environment_name/$ip_family/config.txt | tr '\\n' ' ')\" E2E_SEED=$seed").call()
+ } catch (Exception e) {
+ unstable 'E2E Tests failed'
+ currentBuild.result = 'FAILURE'
+ }
+ } else {
+ Utils.markStageSkippedForConditional('E2E')
}
}
}
stage('Report') {
- Report().call()
+ try {
+ Report().call()
+ } catch (Exception e) {
+ unstable 'Failed to create the report'
+ }
}
stage('Next') {
- Next(next).call()
+ Next(next, number_of_workers, environment_name).call()
}
stage('Cleanup') {
Cleanup()
@@ -65,7 +72,7 @@
}
}
-def Next(next) {
+def Next(next, number_of_workers, environment_name) {
if (next == 'true') {
return {
def meridio_version = GetMeridioVersion()
@@ -73,14 +80,18 @@
def nsm_version = GetNSMVersion()
def kubernetes_version = GetKubernetesVersion()
def ip_family = GetIPFamily()
- echo "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version"
+ def seed = GetSeed()
+ echo "Meridio version: $meridio_version / TAPA version: $tapa_version / NSM version: $nsm_version / IP Family: $ip_family / Kubernetes version: $kubernetes_version / Seed: $seed"
build job: 'meridio-e2e-test-kind', parameters: [
string(name: 'NEXT', value: 'true'),
string(name: 'MERIDIO_VERSION', value: "$meridio_version"),
string(name: 'TAPA_VERSION', value: "$tapa_version"),
string(name: 'KUBERNETES_VERSION', value: "$kubernetes_version"),
string(name: 'NSM_VERSION', value: "$nsm_version"),
- string(name: 'IP_FAMILY', value: "$ip_family")
+ string(name: 'IP_FAMILY', value: "$ip_family"),
+ string(name: 'NUMBER_OF_WORKERS', value: "$number_of_workers"),
+ string(name: 'ENVIRONMENT_NAME', value: "$environment_name"),
+ string(name: 'SEED', value: "$seed")
], wait: false
}
} else {
@@ -125,6 +136,10 @@
return sh(script: "cat test/e2e/environment/kind-helm/test-scope.yaml | yq '.IP-Family[$index_of_ip_family]'", returnStdout: true).trim()
}
+def GetSeed() {
+ return sh(script: 'shuf -i 1-2147483647 -n1', returnStdout: true).trim()
+}
+
// http://JENKINS_URL/job/meridio-e2e-test-kind/api/json?tree=allBuilds[status,timestamp,id,result,description]{0,9}&pretty=true
def Report() {
return {
diff --git a/jjb/nsm/meridio-e2e-test-kind.yaml b/jjb/nsm/meridio-e2e-test-kind.yaml
index 3a60492..7af3660 100644
--- a/jjb/nsm/meridio-e2e-test-kind.yaml
+++ b/jjb/nsm/meridio-e2e-test-kind.yaml
@@ -81,6 +81,18 @@
name: IP_FAMILY
default: 'dualstack'
description: IP Family
+ - string:
+ name: NUMBER_OF_WORKERS
+ default: "2"
+ description: Number of Kubernetes Workers
+ - string:
+ name: ENVIRONMENT_NAME
+ default: "kind-helm"
+ description: Name of the environment (under test/e2e/environment directory in Meridio)
+ - string:
+ name: SEED
+ default: "1"
+ description: Order in which the tests are running
dsl:
!include-raw-escape: e2e.Jenkinsfile