groovy - tecnicas - ¿Cómo refactorizar el código Jenkins JobDSL común?
tecnicas de refactorizacion de codigo (1)
Los brackets rizados forman un cierre Groovy. Cada cierre tiene un objeto delegado al que se dirigen las llamadas de método. Y se puede acceder al delegate a través de la propiedad del delegate . Puede pasar ese delegado a la función auxiliar para obtener acceso a sus métodos.
def gradlew(def context, String tasks, String options = '''') {
context.gradle(tasks, options, true) { node ->
node / wrapperScript(''${NEBULA_HOME}/gradlew'')
}
}
job {
steps {
gradlew(delegate, ''generateLock saveLock'', ''-PdependencyLock.includeTransitives=true'')
gradlew(delegate, ''check'')
}
}
Tengo la siguiente especificación de JobDSL:
job {
steps {
gradle(''generateLock saveLock'', ''-PdependencyLock.includeTransitives=true'', true) { node ->
node / wrapperScript(''${NEBULA_HOME}/gradlew'')
}
gradle(''check'', '''', true) { node ->
node / wrapperScript(''${NEBULA_HOME}/gradlew'')
}
}
}
Me gustaría refactorizar el código común, digamos, en una función:
def gradlew(String tasks, String options) {
gradle(tasks, options, true) { node ->
node / wrapperScript(''${NEBULA_HOME}/gradlew'')
}
}
Pero la función de gradle
no es visible desde dentro de la función de gradlew
. ¿Cuál es la forma correcta de hacer esto?