【问题标题】:Configuring plugins with Jenkins Job Builder使用 Jenkins Job Builder 配置插件
【发布时间】:2019-05-02 09:24:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-job-builder


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      首先我会提到我使用 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。希望这对您和其他人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        相关资源
        最近更新 更多