Refactorisation de l'API pour les opérations sur OpenNebula

This commit is contained in:
wpetit 2019-03-01 15:27:08 +01:00
parent 3b6e1e0f72
commit 4cb30fa836
2 changed files with 27 additions and 16 deletions

View File

@ -47,7 +47,7 @@ pipeline {
stage("Test package installation") {
steps {
script {
nebula.runInNewVM([
nebula.runScriptInNewVM([
vmTemplate: params.vmTemplate,
script: """
set -xeo pipefail

View File

@ -133,7 +133,15 @@ def initWithCredentials(String urlCredentialsId, String userCredentialsId, Closu
}
def runInNewVM(Map args) {
def runScriptInNewVM(Map args) {
def script = args.get("script", "")
runInNewVM(args) { shell ->
shell(script)
}
}
def runInNewVM(Map args, Closure body) {
def urlCredentialsId = args.get('urlCredentialsId', 'opennebula-dev-url')
def userCredentialsId = args.get('userCredentialsId', 'kipp-credentials')
@ -141,7 +149,6 @@ def runInNewVM(Map args) {
def vmTemplate = args.get('vmTemplate', '')
def terminateOnExit = args.get('terminateOnExit', true)
def shell = args.get("shell", "/bin/sh")
def script = args.get('script', '')
// On récupère les identifiants de connexion SSH pour la VM
withCredentials([
@ -162,20 +169,24 @@ def runInNewVM(Map args) {
sleep(5)
}
// On créait un script temporaire à exécuter sur la machine distante
def now = System.currentTimeMillis()
def tempScriptFile = "script_${env.BUILD_ID}_${now}.sh"
writeFile(file: tempScriptFile, text: """
#!${shell}
${script.stripIndent()}
""")
def remoteShell = { script ->
// On créait un script temporaire à exécuter sur la machine distante
def now = System.currentTimeMillis()
def tempScriptFile = "script_${env.BUILD_ID}_${now}.sh"
writeFile(file: tempScriptFile, text: """
#!${shell}
${script.stripIndent()}
""")
// On transfère le script sur la machine distante et on l'exécute
sh """
scp ${sshArgs} '${tempScriptFile}' 'root@${host}:/tmp/${tempScriptFile}'
ssh ${sshArgs} root@${host} 'chmod +x /tmp/${tempScriptFile}; /tmp/${tempScriptFile}'
"""
}
// On transfère le script sur la machine distante et on l'exécute
sh """
scp ${sshArgs} '${tempScriptFile}' 'root@${host}:/tmp/${tempScriptFile}'
ssh ${sshArgs} root@${host} 'chmod +x /tmp/${tempScriptFile}; /tmp/${tempScriptFile}'
"""
body(remoteShell)
}
}
}
}
}