在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
看到需要插件的列表。