def steps // Jenkins DSL context (`this` from the script)
DockerRunner(def steps) { this.steps = steps }
- /** Returns stdout (trimmed); throws Exception on non-zero exit. */
+ /** Returns stdout (trimmed) if returnStdout is true; throws Exception on non-zero exit */
String run(Map args = [:]) {
+ def returnStdout = args.remove('returnStdout') ?: false
def envFile = args.envFile ?: ''
def entry = args.entry ? "--entrypoint ${args.entry}" : ''
def mounts = (args.mounts ?: [])
.collect { "--env ${it}" }.join(' ')
def image = args.image ?: ''
def cmd = args.cmd ?: ''
- def fullCmd = """docker run ${entry} ${envs} ${envFile ? "--env-file ${envFile}" : ''} ${mounts} ${image} ${cmd}""".trim().replaceAll('\\s+', ' ')
+ def fullCmd = """docker run ${entry} ${envs} ${envFile ? "--env-file ${envFile}" : ''} ${mounts} ${image} ${cmd}"""
+ def result = null
try {
- return steps.sh(returnStdout: true, script: fullCmd).trim()
+ if (returnStdout) {
+ result = steps.sh(returnStdout: true, script: fullCmd).trim()
+ } else {
+ steps.sh(script: fullCmd)
+ }
} catch (Exception ex) {
throw new Exception("docker run failed → ${ex.message}")
} finally {
steps.echo("Command executed: ${fullCmd}")
}
+ return result
}
}
while (System.currentTimeMillis() < deadline) {
try {
lastOut = dr.run(
+ returnStdout: true,
image : image,
entry : "/bin/sh",
envVars : envs,
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("VIM Creation Output: ${createOutput}")
}
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("VIM List output: ${vimList}")
if (vimList.contains("ENABLED")) {
// If stuck, delete and retry
println("VIM stuck for more than 50 seconds, deleting and retrying...")
entrypointArgs = """vim-delete --force ${VIM_TARGET}"""
- String vimList = dr.run(
+ String deleteOutput = dr.run(
image : "opensourcemano/tests:${tagName}",
entry : entrypointCmd,
envVars : [ "OSM_HOSTNAME=${osmHostname}" ],
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("VIM Deletion Output: ${deleteOutput}")
sleep(5)
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("K8s Cluster Addition Output: ${createOutput}")
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("K8s Cluster List Output: ${clusterList}")
if (clusterList.contains("ENABLED")) {
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("K8s Cluster Show Output: ${showOutput}")
entrypointArgs = """k8scluster-delete ${K8S_CLUSTER_TARGET}"""
"${portmappingfile}:/root/port-mapping.yaml",
"${prometheusconfigfile}:/root/etsi-vim-prometheus.json"
],
- cmd : entrypointArgs
+ cmd : entrypointArgs,
+ returnStdout: true
)
println("K8s Cluster Deletion Output: ${deleteOutput}")
sleep(5)