Noe*_*Yap 23 groovy jenkins jenkins-job-dsl
我有以下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')
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想将公共代码重构成一个函数:
def gradlew(String tasks, String options) {
gradle(tasks, options, true) { node ->
node / wrapperScript('${NEBULA_HOME}/gradlew')
}
}
Run Code Online (Sandbox Code Playgroud)
但是该gradle功能在功能中是不可见的gradlew.这样做的正确方法是什么?
das*_*ker 34
大括号形成一个Groovy闭包.每个闭包都有一个委托对象,方法调用定向到该委托对象.并且可以通过delegate属性访问委托.您可以将该委托传递给辅助函数以访问它的方法.
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')
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |