blob: acdf489dc3af1347da0a6a92f1ca32b2911ad66f [file] [log] [blame]
/*re-deploy node then use mcord-in-a-box.sh to deploy MCORD and then E2E TEST*/
pipeline {
/* no label, executor is determined by JJB */
agent {
label "${params.executorNode}"
}
stages {
stage ("Parse deployment configuration file") {
steps {
sh returnStdout: true, script: 'rm -rf ${configRepoBaseDir}'
sh returnStdout: true, script: 'git clone -b ${branch} ${configRepoUrl}'
script { deployment_config = readYaml file: "${configRepoBaseDir}${configRepoFile}" }
}
}
stage ('Re-Deploy Node') {
steps {
sh "maas login maas http://${deployment_config.maas.ip}/MAAS/api/2.0 ${deployment_config.maas.api_key}"
sh "maas maas machine release ${deployment_config.maas.head_system_id}"
timeout(time:15) {
waitUntil {
script {
try {
sh "maas maas machine read ${deployment_config.maas.head_system_id} | grep Ready"
return true
} catch (exception) {
return false
}
}
}
}
sh "maas maas machines allocate"
sh "maas maas machine deploy ${deployment_config.maas.head_system_id}"
timeout(time:15) {
waitUntil {
script {
try {
sh "maas maas machine read ${deployment_config.maas.head_system_id} | grep Deployed"
return true
} catch (exception) {
return false
}
}
}
}
}
}
stage ('Get Node IP') {
steps {
sh "maas login maas http://${deployment_config.maas.ip}/MAAS/api/2.0 ${deployment_config.maas.api_key}"
timeout(time:15) {
waitUntil {
script {
try {
node_ip = sh (script: "maas maas machine read ${deployment_config.maas.head_system_id} | grep ip_address | head -n1 | grep -oE '\\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b'", returnStdout: true).toString().trim()
return true
} catch (exception) {
return false
}
}
}
sh "echo ${node_ip}"
}
}
}
stage ('Checkout Automation-Tools Repo') {
steps {
script {
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'mkdir ~/cord; cd ~/cord/; git clone https://gerrit.opencord.org/automation-tools'", returnStdout: true)
}
}
}
stage ('Install MCORD') {
options {
timeout(time: 3, unit: 'HOURS')
}
steps {
script {
sh "sleep 120"
sh "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'cd ~/cord/; ./automation-tools/mcord/mcord-in-a-box.sh 1>&2'"
}
}
}
stage ('Configure K8 Compute Node DNS') {
steps {
sh """
COMPUTEHOSTNAME=\$(ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'cat /etc/hostname')
IPADDRESS=\$(ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} "ip route get 8.8.8.8 | head -1 | cut -d' ' -f8")
cat <<EOF > /tmp/\$COMPUTEHOSTNAME-dns.yaml
kind: Service
apiVersion: v1
metadata:
name: \$COMPUTEHOSTNAME
namespace: default
spec:
type: ExternalName
externalName: \$IPADDRESS
EOF
cat /tmp/\$COMPUTEHOSTNAME-dns.yaml | ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} "cat > /tmp/\$COMPUTEHOSTNAME-dns.yaml"
ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} "kubectl create -f /tmp/\$COMPUTEHOSTNAME-dns.yaml 1>&2"
"""
}
}
stage ('Test MCORD') {
steps {
script {
sh "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'cd ~/cord/; git clone https://gerrit.opencord.org/mcord; cd mcord/test; ansible-playbook -i localhost, -c local mcord-cavium-test-playbook.yml 1>&2'"
}
}
}
}
post {
always {
script {
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'helm ls 1>&2'", returnStdout: true)
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'kubectl get pods --all-namespaces 1>&2'", returnStdout: true)
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'export OS_CLOUD=openstack_helm; openstack image list 1>&2'", returnStdout: true)
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'export OS_CLOUD=openstack_helm; openstack network list 1>&2'", returnStdout: true)
sh (script: "ssh -oStrictHostKeyChecking=no -i ~/.ssh/cord ubuntu@${node_ip} 'export OS_CLOUD=openstack_helm; openstack server list --all-projects 1>&2'", returnStdout: true)
}
step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: "${notificationEmail}", sendToIndividuals: false])
}
}
}