我试图使用Jenkins安装jenkins插件,但是我误解了JJB可以做什么或者我做错了什么。我使用get-plugins-info命令获取插件的YAML描述。稍后,在重新构建jenkins安装时,我使用了jenkins-jobs -p plugins_info.yaml jobs,希望JJB能够安装YAML文件中列出的插件。但它没有安装插件。
因此,我的第一个问题是:我是否应该期望JJB安装这些插件?JJB处理插件信息的文档是有限的,所以我在这里运行假设。
假设JJB应该在YAML文件中安装插件,我如何才能找出为什么没有呢?我看过詹金斯的日志但没有结果。
发布于 2019-07-19 15:02:14
首先,我将提到,我使用创建和版本化我的作业。但是,如果您想以自动化的方式在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()
}将同样多的插件名称添加到数组插件中。希望这能帮到你和其他人。
发布于 2019-04-10 07:37:16
JJB没有管理Jenkins插件的能力。您需要查看其他工具来为您处理这些问题,如木偶、ansible等。
update命令中的"get-plugins- info“和"-p”参数的用法是将当前安装的插件信息传递给JJB,如果系统管理员不想在更新运行期间对Jenkins中的所有JJB“管理员”访问“查询”插件信息。Jenkins的最新版本不再允许匿名查询插件信息,不幸的是,将该权限转移到Jenkins内部的管理员权限。
plugins-info很有用,因为JJB支持某些插件的多个版本,并且需要知道安装的版本是什么,以便根据支持的版本适当地创建XML。
https://stackoverflow.com/questions/53553858
复制相似问题