From 7db714f2e1294cd9aeb440f01d91bb5816e352cf Mon Sep 17 00:00:00 2001 From: garciadeblas Date: Fri, 22 Apr 2022 12:05:15 +0200 Subject: [PATCH] Add checking of status of local http server used to serve deb packages Change-Id: Ic624afeee0ec5011e21c10bd0eb110ec78888e1c Signed-off-by: garciadeblas --- jenkins/ci-pipelines/ci_helper.groovy | 19 ++++++++++++++++++- jenkins/ci-pipelines/ci_stage_3.groovy | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/jenkins/ci-pipelines/ci_helper.groovy b/jenkins/ci-pipelines/ci_helper.groovy index c920f46b..0b41169d 100644 --- a/jenkins/ci-pipelines/ci_helper.groovy +++ b/jenkins/ci-pipelines/ci_helper.groovy @@ -69,7 +69,24 @@ def lxc_file_push(container_name,file,destination) { def start_http_server(repo_dir,server_name,port) { sh "docker run -dit --name ${server_name} -p ${port}:80 -v ${repo_dir}:/usr/local/apache2/htdocs/ httpd:2.4" def http_server_ip = sh(returnStdout:true, script: "docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${server_name}").trim() - return "http://${http_server_ip}/" + return "http://${http_server_ip}:${port}/" +} + +def check_status_http_server(ip, port) { + alive = false + timeout(time: 1, unit: 'MINUTES') { + while (!alive) { + output = sh( + returnStatus: true, + script: "wget http://${ip}:${port}/release/dists/unstable/Release") + alive = (output == 0) + if (!alive) { + sleep(time: 5, unit: 'SECONDS') + } + } + } + println('HTTP server is ready and accepting http connections') + return } def lxc_get_file(container_name,file,destination) { diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy index 316fdb27..5f8369ea 100644 --- a/jenkins/ci-pipelines/ci_stage_3.groovy +++ b/jenkins/ci-pipelines/ci_stage_3.groovy @@ -318,9 +318,10 @@ node("${params.NODE}") { repo_port = sh(script: 'echo $(python -c \'import socket; s=socket.socket(); s.bind(("", 0));' + 'print(s.getsockname()[1]); s.close()\');', returnStdout: true).trim() - repo_base_url = ci_helper.start_http_server(pwd, http_server_name, repo_port) + internal_docker_http_server_url = ci_helper.start_http_server(pwd, http_server_name, repo_port) NODE_IP_ADDRESS = sh(returnStdout: true, script: "echo ${SSH_CONNECTION} | awk '{print \$3}'").trim() + ci_helper.check_status_http_server(NODE_IP_ADDRESS, repo_port) } // Unpack devops package into temporary location so that we use it from upstream if it was part of a patch -- 2.25.1