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

标签 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

以及管理 Jenkins 中的“从磁盘重新加载配置”选项。在执行上述任一操作后,Mercurial 仍然没有明显安装。

我也在命令行上完成了此操作:

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

Output from ls of 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/

相关文章:

firefox - 开发 Firefox 插件?

wordpress - 如何在不编辑插件的情况下修改 wordpress 插件功能?

docker - 使用 Docker 在我的 VPS 上部署我的应用程序的最佳实践是什么?

linux - Prometheus(通过 Docker)- 反向代理(通过 Apache)重定向问题

django - Docker&Celery - 错误 : Pidfile (celerybeat. pid) 已经存在

go - 在 golang 中执行进程内动态插件的一种方法

php - 输出与标签相关的帖子

maven - 如何正确使用 Nexus 和 Maven/Jenkins 作为第 3 方库(不在 Maven 存储库中)和必要的 p2 存储库

java - SonarQube 因错误而停止

docker - 使用 docker.sock 在 Kubernetes 上托管 Jenkins