Jenkins插件安装

10

我编写了一个Jenkins Groovy脚本,用于在启动时安装Jenkins插件。Groovy脚本的命名基于用于调用我的脚本的Hook的名称。例如,init.groovy在init-Hook中被触发。该Hook在后初始化时触发。

在初始化期间,我无法访问UpdateCenter并安装插件。我可以使用哪些其他Jenkins Hooks?我认为我需要一个post-startup Hook。

这个脚本在脚本控制台中运行正常,但在post-initialization hook中无法运行:

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 时调用它。
1个回答

10

通过向Jenkins-IRC频道提问解决了这个问题。我需要初始化UpdateCenter的更新站点列表。结果可以在此处找到:

blacklabelops/jenkins

我认为在你的例子中第14行(uc.updateAllSites())是多余的。 - Der_Meister
另外,instance.doSafeRestart() 会中断插件的安装。 - Der_Meister
更新链接到最新的Jenkins 2源代码。 - blacklabelops
您提供的脚本非常有帮助,谢谢。这将为我节省很多时间。 - user944849
但是如果脚本位于init.groovy.d目录中,这样做不会一直重启Jenkins吗? - SSF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接