0

我正在尝试使用 Jenkins Job Builder 安装 jenkins 插件,但我误解了 JJB 可以做什么或者我做错了什么。我使用该get-plugins-info命令获取插件的 YAML 描述。后来,在重建jenkins安装时,我使用jenkins-jobs -p plugins_info.yaml jobs了希望JJB能够安装YAML文件中列出的插件。但它没有安装插件。

所以我的第一个问题是:我是否应该期望 JJB 安装这些插件?JJB 使用插件信息所做的文档是有限的,所以我在这里假设。

假设 JJB应该在 YAML 文件中安装插件,我怎么能弄清楚为什么它不是?我查看了詹金斯的日志无济于事。

4

2 回答 2

0

我将首先提到我使用 Jenkins Job Builder 来创建我的作业并对其进行版本控制。但是,如果您想以自动化方式在 Jenkins 中安装/配置插件,您可以使用init.groovy.d脚本来初始化您的 jenkins 实例。为此,请创建以下目录${JENKINS_HOME}/init.groovy.d/,然后将您的 groovy 脚本放在该目录中。这是我在启动 Jenkins 时用来安装插件的脚本。

import jenkins.model.*
import java.util.logging.Logger

def logger = Logger.getLogger("")
def installed = false
def initialized = false
def plugins = ["git", "cloudbees-folder", "build-timeout"]

logger.info("" + plugins)
def instance = Jenkins.getInstance()
def pm = instance.getPluginManager()
def uc = instance.getUpdateCenter()
plugins.each {
  logger.info("Checking " + it)
  if (!pm.getPlugin(it)) {
    logger.info("Looking UpdateCenter for " + it)
    if (!initialized) {
      uc.updateAllSites()
      initialized = true
    }
    def plugin = uc.getPlugin(it)
    if (plugin) {
      logger.info("Installing " + it)
        def installFuture = plugin.deploy()
      while(!installFuture.isDone()) {
        logger.info("Waiting for plugin install: " + it)
        sleep(3000)
      }
      installed = true
    }
  }
}
if (installed) {
  logger.info("Plugins installed, initializing a restart!")
  instance.save()
  instance.restart()
}

将尽可能多的插件名称添加到数组plugins中。希望这可以帮助您和其他人。

于 2019-07-19T15:02:14.183 回答
0

JJB 无法管理 Jenkins 插件。您将需要研究其他工具来为您处理这些问题,例如 puppet、ansible 等...

更新命令中“get-plugins-info”和“-p”参数的用法是将当前安装的插件信息传递给JJB,以防系统管理员不希望Jenkins中的所有JJB“管理员”访问权限更新运行期间的“查询”插件信息。最新版本的 Jenkins 不再允许匿名查询插件信息,不幸的是,该权限已移至 Jenkins 内部的管理员权限。

plugins-info 很有用,因为 JJB 支持某些插件的多个版本,并且需要知道安装的版本是什么,以便根据支持的版本适当地创建 XML。

于 2019-04-10T07:37:16.687 回答