问题:我似乎无法使用 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 中的“从磁盘重新加载配置”选项。在执行上述任一操作后,Mercurial 仍然没有明显安装。
我也在命令行上完成了此操作:
docker exec -i -t container bash
ls /var/jenkins_home/plugins/
此时我完全困惑了,因为列表中有 Mercurial、mercurial.jpi 和 Mercurial.jpi.pinned。有人对此有什么想法吗?我希望从 Dockerfile 加载后立即将 Mercurial 安装在 Jenkins 上,而无需手动执行...
此外,我也尝试使用 git-changelog 执行此操作,看看另一个插件是否可以更好地工作,并得到相同的结果。
最佳答案
正如您在 Mercurial Plugin wiki page 上看到的那样,该插件当前有四个强制依赖项和一个可选依赖项:
- 凭据
- 矩阵项目
- 多个 scm(可选)
- 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
查看所需插件的列表。
关于plugins - 在 Docker 中安装 Jenkins 插件 (mercurial) 显示在插件文件夹中,但不在 Jenkins 本身中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442590/