我正在尝试自动化Jenkins中的全局工具安装。我的要求是为 nodejs , golang 和 maven 安装工具。我能够通过运行以下groovy脚本来实现安装。
import hudson.model.*
import hudson.tools.*
import jenkins.plugins.nodejs.tools.*
import jenkins.model.*
def inst = Jenkins.getInstance()
def desc = inst.getDescriptor("jenkins.plugins.nodejs.tools.NodeJSInstallation")
def versions = [
"nodejs-3.x": "3.7.0",
"nodejs-4.x": "4.6.0",
]
def installations = [];
for (v in versions) {
def installer = new NodeJSInstaller(v.value, "", 100)
def installerProps = new InstallSourceProperty([installer])
def installation = new NodeJSInstallation(v.key, "", [installerProps])
installations.push(installation)
}
desc.setInstallations(installations.toArray(new NodeJSInstallation[0]))
desc.save()
但是,在脚本中使用当前提供的版本运行脚本覆盖(基本上删除了现有版本的nodejs config)。我正在寻找一个解决方案追加而不是覆盖现有配置。
截图:
答案 0 :(得分:0)
解决方案是按照@terjekid所说的那样导入现有元素。
代码应如下所示:
import hudson.model.*
import hudson.tools.*
import jenkins.plugins.nodejs.tools.*
import jenkins.model.*
def inst = Jenkins.getInstance()
def desc = inst.getDescriptor("jenkins.plugins.nodejs.tools.NodeJSInstallation")
def versions = [
"nodejs-3.x": "3.7.0",
"nodejs-4.x": "4.6.0",
]
**def installations = desc.getInstallations() as List;**
for (v in versions) {
def installer = new NodeJSInstaller(v.value, "", 100)
def installerProps = new InstallSourceProperty([installer])
def installation = new NodeJSInstallation(v.key, "", [installerProps])
**installations.add(installation)**
}
desc.setInstallations(**installations as jenkins.plugins.nodejs.tools.NodeJSInstallation[]**)
desc.save()
我在相关部件周围放置了粗体标签,但是我猜这被忽略了
从这里成功改编:https://github.com/openshift/jenkins-client-plugin/issues/78