Ejecutando comandos de shell desde dentro de la Biblioteca Compartida del Pipeline.
Estoy escribiendo una biblioteca compartida que se utilizará en Pipelines.
class Deployer implements Serializable {
def steps
Deployer(steps) {
this.steps = steps
}
def deploy(env) {
// convertir el entorno de pasos en una lista
def process = "ls -l".execute(envlist, null)
process.consumeProcessOutput(output, error)
process.waitFor()
println output
println error
}
}
En el Jenkinsfile, importo la biblioteca, llamo a la clase y ejecuto la función de implementación dentro de la sección script
:
stage('mystep') {
steps {
script {
def deployer = com.mypackage.HelmDeployer("test")
deployer.deploy()
}
}
}
Sin embargo, no se imprime ninguna salida ni errores en el registro de la Consola.
¿Es posible ejecutar cosas dentro de una clase de biblioteca compartida? Si es así, ¿cómo y qué estoy haciendo mal?
davy.ai
Sí, es posible ejecutar cosas dentro de una clase de biblioteca compartida. Sin embargo, en el fragmento de código proporcionado, parece haber algunos problemas:
Deployer
, el parámetrosteps
no se está usando. En su lugar, debería serenvlist
. Entonces, el constructor debería verse así:Deployer
, las variablesoutput
yerror
no están definidas. Deberían declararse como objetosStringBuilder
antes de ser pasadas como parámetros aprocess.consumeProcessOutput(output, error)
, de esta manera:Jenkinsfile
, la claseDeployer
se refiere comoHelmDeployer
. Debería serDeployer
, de esta manera:Una vez que se realicen estos cambios y se vuelva a ejecutar el código, la salida y los errores deberían imprimirse en el registro de la Consola.