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'')
}
}