在 Docker 中安装 Jenkins 插件 (mercurial) 显示在插件文件夹中,但不在 Jenkins 本身中

Installing Jenkins plugin (mercurial) in Docker shows in plugins folder but not in Jenkins itself

问题:我似乎无法使用 Dockerfile 和 plugins.txt 组合将 mercurial 插件成功安装到 jenkins。

到目前为止我做了什么:

我有一个正在加载 Jenkins 的 Dockerfile。它有以下几行:

FROM jenkins:1.642.1
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

我的 plugins.txt 有这一行:

mercurial:1.54

当我构建镜像和 运行 容器时,一切似乎都正常,没有错误或抱怨。但是,当我转到“管理插件”时,Mercurial 插件未标记为已安装,如果我尝试构建,Mercurial 不是源代码管理下的选项。

我试过:

<jenkins ip address>:8080/reload

以及管理 Jenkins 中的 "Reload Configuration from Disk" 选项。在这两个之后仍然没有明显安装 Mercurial。

我也在命令行上完成了这个:

docker exec -i -t container bash
ls /var/jenkins_home/plugins/

此时我完全糊涂了,因为有 mercurial,mercurial.jpi 和 mercurial.jpi.固定在列表中。有人对此有任何想法吗?我希望在从 Dockerfile 加载 Mercurial 后立即在 Jenkins 上安装它,而无需手动进行...

此外,我也尝试使用 git-changelog 来执行此操作,以查看另一个插件是否会更好地工作,并得到相同的结果。

正如您在 Mercurial Plugin wiki page 上看到的那样,该插件目前有四个强制依赖项和一个可选依赖项:

  • 凭据
  • 矩阵项目
  • 多 SCMS(可选)
  • ssh-凭据
  • scm-api

您与 Jenkins Docker 映像一起使用的插件安装机制不会自动为您安装依赖插件,如 jenkins image:

的文档中所述

All plugins need to be listed as there is no transitive dependency resolution.

因此,您需要在 plugins.txt 文件中额外列出这些插件,以及任何 它们的 传递依赖项。

目前,获取完整列表的最简单方法是启动容器(可能没有 plugins.txt),然后通过插件管理器安装 Mercurial 插件,该插件将与它的所有依赖项。然后你可以通过 $JENKINS_HOME/plugins.

查看需要哪些插件的列表