我已经编写了一个Jenkins Groovy脚本,用于在启动时安装Jenkins插件。Groovy脚本以用于调用我的脚本的Hook命名。例如,init- Hook内部触发了init.groovy。该挂钩在初始化后触发。
在初始化期间,我无权访问UpdateCenter,也无法安装插件。我还能使用其他哪些詹金斯挂钩?我认为我需要一个启动后的挂钩。
该脚本可在脚本控制台中使用,但不能在后初始化挂钩中使用:
import jenkins.model.* def pluginParameter="gitlab-plugin hipchat swarm" def plugins = pluginParameter.split() println(plugins) def instance = Jenkins.getInstance() def pm = instance.getPluginManager() def uc = instance.getUpdateCenter() def installed = false plugins.each { if (!pm.getPlugin(it)) { def plugin = uc.getPlugin(it) if (plugin) { println("Installing " + it) plugin.deploy() installed = true } } } instance.save() if (installed) instance.doSafeRestart()
我需要一个在系统启动且uc.getPlugin(it)不返回null的钩子。
通过询问jenkins-irc渠道解决了这一问题。我需要初始化UpdateCenter的更新站点列表。结果可以在这里找到: blacklabelops / jenkins