首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何重构常见的Jenkins JobDSL代码?

如何重构常见的Jenkins JobDSL代码?
EN

Stack Overflow用户
提问于 2015-01-14 05:25:54
回答 1查看 4.9K关注 0票数 27

我有以下JobDSL规范:

代码语言:javascript
复制
job {
  steps {
    gradle('generateLock saveLock', '-PdependencyLock.includeTransitives=true', true) { node ->
      node / wrapperScript('${NEBULA_HOME}/gradlew')
    }
    gradle('check', '', true) { node ->
      node / wrapperScript('${NEBULA_HOME}/gradlew')
    }
  }
}

我想重构公共代码,比如说,将其重构为一个函数:

代码语言:javascript
复制
def gradlew(String tasks, String options) {
  gradle(tasks, options, true) { node ->
    node / wrapperScript('${NEBULA_HOME}/gradlew')
  }
}

但是在gradlew函数中看不到gradle函数。这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 05:53:33

花括号形成了一个Groovy闭包。每个闭包都有一个委托对象,方法调用被定向到该委托对象。并且可以通过delegate属性访问该委托。您可以将该委托传递给helper函数以访问其方法。

代码语言:javascript
复制
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')
  }
}
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27931795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档