X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=jenkins%2Fci-pipelines%2Fci_stage_3.groovy;h=f482ee747875aa398134b9581a152dae606790d2;hb=1c6e339d1fad4180db07b7e068e28348679d11b2;hp=6523debce7cb3c47abdb883867544bc1ce5269c8;hpb=7b0acc0a3cfc0a9ea0e5dadda64f6dc689c04632;p=osm%2Fdevops.git diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy index 6523debc..f482ee74 100644 --- a/jenkins/ci-pipelines/ci_stage_3.groovy +++ b/jenkins/ci-pipelines/ci_stage_3.groovy @@ -47,7 +47,7 @@ properties([ string(defaultValue: '/home/jenkins/hive/robot-systest.cfg', description: '', name: 'ROBOT_VIM'), string(defaultValue: '/home/jenkins/hive/kubeconfig.yaml', description: '', name: 'KUBECONFIG'), string(defaultValue: '/home/jenkins/hive/clouds.yaml', description: '', name: 'CLOUDS'), - string(defaultValue: 'Charmed', description: '', name: 'INSTALLER'), + string(defaultValue: 'Default', description: '', name: 'INSTALLER'), ]) ]) @@ -55,7 +55,7 @@ def uninstall_osm(stackName) { sh """ export OSM_USE_LOCAL_DEVOPS=true export PATH=$PATH:/snap/bin - installers/full_install_osm.sh -y -w /tmp/osm -t ${stackName} -s ${stackName} --test --nolxd --nodocker --nojuju --nohostports --nohostclient --uninstall + installers/full_install_osm.sh -y -c swarm -w /tmp/osm -t ${stackName} -s ${stackName} --test --nolxd --nodocker --nojuju --nohostports --nohostclient --uninstall """ } @@ -71,7 +71,7 @@ def run_systest(stackName,tagName,testName,envfile=null) { junit '*.xml' } -def run_robot_systest(tagName,testName,osmHostname,prometheusHostname,prometheus_port=null,envfile=null,kubeconfig=null,clouds=null,hostfile=null) { +def run_robot_systest(tagName,testName,osmHostname,prometheusHostname,prometheus_port=null,envfile=null,kubeconfig=null,clouds=null,hostfile=null,jujuPassword=null) { tempdir = sh(returnStdout: true, script: "mktemp -d").trim() if ( !envfile ) { @@ -87,8 +87,13 @@ def run_robot_systest(tagName,testName,osmHostname,prometheusHostname,prometheus hostfilemount="-v "+hostfile+":/etc/hosts" } + JUJU_PASSWORD_VAR = "" + if ( jujuPassword != null) { + JUJU_PASSWORD_VAR = "--env JUJU_PASSWORD="+jujuPassword + } + try { - sh "docker run --env OSM_HOSTNAME=${osmHostname} --env PROMETHEUS_HOSTNAME=${prometheusHostname} ${PROMETHEUS_PORT_VAR} --env-file ${envfile} -v ${clouds}:/etc/openstack/clouds.yaml -v ${kubeconfig}:/root/.kube/config -v ${tempdir}:/robot-systest/reports ${hostfilemount} opensourcemano/tests:${tagName} -c -t ${testName}" + sh "docker run --env OSM_HOSTNAME=${osmHostname} --env PROMETHEUS_HOSTNAME=${prometheusHostname} ${PROMETHEUS_PORT_VAR} ${JUJU_PASSWORD_VAR} --env-file ${envfile} -v ${clouds}:/etc/openstack/clouds.yaml -v ${kubeconfig}:/root/.kube/config -v ${tempdir}:/robot-systest/reports ${hostfilemount} opensourcemano/tests:${tagName} -c -t ${testName}" } finally { sh "cp ${tempdir}/* ." outputDirectory = sh(returnStdout: true, script: "pwd").trim() @@ -115,11 +120,22 @@ def archive_logs(remote) { for container in `kubectl get pods -n osm | grep -v operator | grep -v NAME| awk '{print $1}'`; do logfile=`echo $container | cut -d- -f1` echo "Extracting log for $logfile" - kubectl logs -n osm $container 2>&1 > logs/$logfile.log + kubectl logs -n osm $container --timestamps=true 2>&1 > logs/$logfile.log done ''' } else { - // collect logs from k8s based installer... + sshCommand remote: remote, command: ''' + for deployment in `kubectl -n osm get deployments | grep -v operator | grep -v NAME| awk '{print $1}'`; do + echo "Extracting log for $deployment" + kubectl -n osm logs deployments/$deployment --timestamps=true --all-containers 2>&1 > logs/$deployment.log + done + ''' + sshCommand remote: remote, command: ''' + for statefulset in `kubectl -n osm get statefulsets | grep -v operator | grep -v NAME| awk '{print $1}'`; do + echo "Extracting log for $statefulset" + kubectl -n osm logs statefulsets/$statefulset --timestamps=true --all-containers 2>&1 > logs/$statefulset.log + done + ''' } sh "rm -rf logs" @@ -143,6 +159,7 @@ def get_value(key, output) { node("${params.NODE}") { INTERNAL_DOCKER_REGISTRY = 'osm.etsi.org:5050/devops/cicd/' + INTERNAL_DOCKER_PROXY = 'http://172.21.1.1:5000' SSH_KEY = '~/hive/cicd_rsa' sh 'env' @@ -369,21 +386,22 @@ node("${params.NODE}") { remote.identityFile = SSH_KEY remote.allowAnyHosts = true remote.logLevel = 'INFO' + remote.pty = true sshCommand remote: remote, command: """ - wget https://osm-download.etsi.org/ftp/osm-8.0-eight/install_osm.sh + wget https://osm-download.etsi.org/ftp/osm-9.0-nine/install_osm.sh chmod +x ./install_osm.sh + sed -i '1 i\\export PATH=/snap/bin:\${PATH}' ~/.bashrc """ if ( useCharmedInstaller ) { // Use local proxy for docker hub sshCommand remote: remote, command: ''' - sudo snap install microk8s --classic + sudo snap install microk8s --classic --channel=1.19/stable sudo sed -i "s|https://registry-1.docker.io|http://172.21.1.1:5000|" /var/snap/microk8s/current/args/containerd-template.toml sudo systemctl restart snap.microk8s.daemon-containerd.service sudo snap alias microk8s.kubectl kubectl - echo export PATH=/snap/bin:\${PATH} > ~/.bashrc ''' withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'gitlab-registry', @@ -402,10 +420,22 @@ node("${params.NODE}") { prometheusPort = 80 osmHostname = "nbi."+IP_ADDRESS+".xip.io:443" } else { - // Run -k8s installer here - // Update to use 172.21.1.1 as the dockerhub proxy - // Specify registry to use for installer - // set osmHostname, prometheusHostname, prometheusPort as needed + // Run -k8s installer here specifying internal docker registry and docker proxy + withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'gitlab-registry', + usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) { + sshCommand remote: remote, command: """ + ./install_osm.sh -y \ + ${repo_base_url} \ + ${repo_key_name} \ + ${release} -r unstable \ + -d ${USERNAME}:${PASSWORD}@${INTERNAL_DOCKER_REGISTRY} \ + -p ${INTERNAL_DOCKER_PROXY} \ + -t ${container_name} + """ + } + prometheusHostname = IP_ADDRESS + prometheusPort = 9091 + osmHostname = IP_ADDRESS } } } @@ -413,11 +443,7 @@ node("${params.NODE}") { stage_archive = false if ( params.DO_SMOKE ) { stage("OSM Health") { - if ( useCharmedInstaller ) { - stackName = "osm" - } else { - stackName = container_name - } + stackName = "osm" sshCommand remote: remote, command: """ /usr/share/osm-devops/installers/osm_health.sh -k -s ${stackName} """ @@ -442,6 +468,10 @@ EOF""" hostfile=null } + jujuPassword=sshCommand remote: remote, command: """ + echo `juju gui 2>&1 | grep password | cut -d: -f2` + """ + run_robot_systest( container_name, params.TEST_NAME, @@ -451,11 +481,12 @@ EOF""" params.ROBOT_VIM, params.KUBECONFIG, params.CLOUDS, - hostfile) + hostfile, + jujuPassword) } } } finally { - stage("Archive Contailer Logs") { + stage("Archive Container Logs") { // Archive logs to containers_logs.txt archive_logs(remote) if ( ! currentBuild.result.equals('UNSTABLE') && ! currentBuild.result.equals('FAILURE')) { @@ -488,6 +519,7 @@ EOF""" stage("Snap promotion") { def snaps = ["osmclient"] for (snap in snaps) { + sh "docker pull snapcore/snapcraft:stable" channel="" if (BRANCH_NAME.startsWith("v")) { channel=BRANCH_NAME.substring(1)+"/" @@ -555,4 +587,4 @@ EOF""" sh "docker rm ${http_server_name} || true" } } -} \ No newline at end of file +}