Настройка плагинов с помощью Jenkins Job Builder - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь использовать Jenkins Job Builder для установки плагинов jenkins, но я неправильно понимаю, что может делать JJB, или я делаю что-то не так.Я использовал команду get-plugins-info, чтобы получить описание моих плагинов в YAML.Позже, при перестройке установки jenkins, я использовал jenkins-jobs -p plugins_info.yaml jobs в надежде, что JJB установит плагины, перечисленные в файле YAML.Но он не установил плагины.

Итак, мой первый вопрос: стоит ли ожидать, что JJB установит эти плагины?Документация о том, что JJB делает с информацией о плагине, ограничена, поэтому я придерживаюсь предположений здесь.

Предполагается, что JJB предполагает установку плагинов в файле YAML, какя могу понять, почему это не так?Я просмотрел журналы Дженкинса безрезультатно.

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Начну с упоминания, что я использую 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 .Надеюсь, что это поможет вам и другим.

0 голосов
/ 10 апреля 2019

JJB не имеет возможности управлять плагинами Jenkins.Вам нужно будет обратиться к другим инструментам, чтобы справиться с этим для вас, таким как puppet, ansible и т. Д. *

Использование для «get-plugins-info» и параметра «-p» в команде обновлениязаключается в передаче информации об установленном в данный момент плагине в JJB в тех случаях, когда системный администратор не хочет, чтобы все JJB-права «администратора» в Jenkins «запрашивали» информацию о плагине во время выполнения обновления.Последние версии Jenkins больше не позволяют анонимно запрашивать информацию о плагинах и, к сожалению, перенесли это разрешение в разрешение администратора внутри Jenkins.

plugins-info полезно, потому что JJB поддерживает несколько версий определенных плагинов и ему нужно знать, чтоустановленная версия предназначена для правильного создания XML в зависимости от поддерживаемых версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...