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

问题:我似乎无法使用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 

当我build立图像并运行容器时,一切似乎都奏效,没有任何错误或抱怨。 但是,当我去pipe理插件时,Mercurial插件没有被标记为已安装,如果我尝试构build,Mercurial不是在源代码pipe理下的选项。

詹金斯插件经理

詹金斯的源代码控制选项

我试过去:

 <jenkins ip address>:8080/reload 

以及Manage Jenkins中的“从磁盘重新加载configuration”选项。 其中任何一个Mercurial仍然没有明显的安装。

我也在命令行上做了这个:

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

来自插件的输出

在这一点上,我完全困惑,因为mercurial,mercurial.jpi和mercurial.jpi.pinned在列表中。 有没有人有任何想法呢? 我希望一旦从Dockerfile中加载了Mercurial,就可以在Jenkins上安装Mercurial,而无需手动执行。

另外,我试着用git-changelog来做这件事,看看另一个插件是否可以更好地工作,并得到相同的结果。

正如您在Mercurial Plugin wiki页面上看到的那样,该插件目前有四个必需的依赖关系,还有一个可选的:

  • 证书
  • matrix项目
  • 多个scms(可选)
  • SSH-凭证
  • SCM-API

您正在使用Jenkins Docker镜像的插件安装机制不会自动为您安装依赖插件,如jenkins镜像文档中所述:

所有插件都需要列出,因为没有传递依赖关系解决scheme。

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

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