Jenkins全局工具安装 - 自动安装NodeJs脚本

时间:2016-12-01 15:54:27

标签: jenkins groovy jenkins-plugins build-automation

我正在尝试自动化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)。我正在寻找一个解决方案追加而不是覆盖现有配置。

截图:

Sample installation on Global Tool Configuration on Jenkins

1 个答案:

答案 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