scripts hacer example como actions jenkins groovy jenkins-pipeline

hacer - ¿Cómo definir y usar la función dentro de Jenkins Pipeline config?



pipeline{agent any (2)

Primero, no debe agregar $ cuando está fuera de las cadenas (la excepción es $class en su primera función, por lo que debería ser:

def doCopyMibArtefactsHere(projectName) { step ([ $class: ''CopyArtifact'', projectName: projectName, filter: ''**/**.mib'', fingerprintArtifacts: true, flatten: true ]); } def BuildAndCopyMibsHere(projectName, params) { build job: project, parameters: params doCopyMibArtefactsHere(projectName) } ...

Ahora, en cuanto a su problema, la segunda función toma dos argumentos mientras que solo está proporcionando un argumento en la llamada. O tienes que proporcionar dos argumentos en la llamada:

... node { stage(''Prepare Mib''){ BuildAndCopyMibsHere(''project1'', null) } }

... o necesita agregar un valor predeterminado al segundo argumento de las funciones:

def BuildAndCopyMibsHere(projectName, params = null) { build job: project, parameters: params doCopyMibArtefactsHere($projectName) }

Estoy tratando de crear una tarea con una función dentro:

def doCopyMibArtefactsHere(projectName) { step ([ $class: ''CopyArtifact'', projectName: $projectName, filter: ''**/**.mib'', fingerprintArtifacts: true, flatten: true ]); } def BuildAndCopyMibsHere(projectName, params) { build job: $project, parameters: $params doCopyMibArtefactsHere($projectName) } node { stage(''Prepare Mib''){ BuildAndCopyMibsHere(''project1'') } }

Pero esto me da una excepción: java.lang.NoSuchMethodError: No se encontró ningún método DSL ''BuildAndCopyMibsHere'' entre los pasos

¿Hay alguna forma de usar funciones incrustadas dentro del script de Pipline?


Resuelto El build job: project, parameters: params llamada build job: project, parameters: params falla con un error java.lang.UnsupportedOperationException: must specify $class with an implementation of interface java.util.List cuando params = [:] . Reemplazándolo con params = null solucionó el problema. Aquí el código de trabajo a continuación.

def doCopyMibArtefactsHere(projectName) { step ([ $class: ''CopyArtifact'', projectName: projectName, filter: ''**/**.mib'', fingerprintArtifacts: true, flatten: true ]); } def BuildAndCopyMibsHere(projectName, params = null) { build job: project, parameters: params doCopyMibArtefactsHere(projectName) } node { stage(''Prepare Mib''){ BuildAndCopyMibsHere(''project1'') } }