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

时间:2016-02-16 20:43:58

标签: plugins jenkins docker jenkins-plugins dockerfile

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

Source control options in Jenkins

我试过去:

<jenkins ip address>:8080/reload

以及&#34;从磁盘重新加载配置&#34; Manage Jenkins中的选项。 Mercurial在其中任何一个之后仍然没有明显的安装。

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

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

Output from ls of plugins

在这一点上,我完全感到困惑,因为列表中有mercurial,mercurial.jpi和mercurial.jpi.pinned。有没有人对此有任何想法?我想在Jenkins上安装Mercurial,只要它从Dockerfile加载而不必手动操作......

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

1 个答案:

答案 0 :(得分:2)

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

  • 凭证
  • 矩阵项目
  • multiple-scms(可选)
  • ssh-credentials
  • SCM-API

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

  

需要列出所有插件,因为没有传递依赖性解析。

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

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