我已经以两种方式安装了Jenkins插件,一是手动将.hpi
文件放在Jenkins主目录中进行安装,另一种是通过Jenkins前端进行安装(管理Jenkins>管理插件)。
我注意到的是,当我手动安装插件(下载为.hpi
文件)时,它以扩展名.hpi
安装,而通过Jenkins前端安装插件时,插件再次以扩展名.jpi
安装。
但这是为什么呢?在后台发生了什么?我知道功能不会改变,但了解这个过程很有趣。
我已经以两种方式安装了Jenkins插件,一是手动将.hpi
文件放在Jenkins主目录中进行安装,另一种是通过Jenkins前端进行安装(管理Jenkins>管理插件)。
我注意到的是,当我手动安装插件(下载为.hpi
文件)时,它以扩展名.hpi
安装,而通过Jenkins前端安装插件时,插件再次以扩展名.jpi
安装。
但这是为什么呢?在后台发生了什么?我知道功能不会改变,但了解这个过程很有趣。
两者应该是完全相同的,以至于当您像您所说的那样手动安装时,Jenkins会将hpi
重命名为jpi
。
您在JENKINS_HOME中看到两个的原因是插件在Jenkins启动时加载的顺序:plugin.jpi
优先于plugin.hpi
,如果两者都存在。这就是上传安装方式确保上传的版本在重新启动后覆盖现有版本的方法。
我认为这是因为Jenkins从Hudson分叉而来,所以这就是hpi中的“H”。而“J”则明显是对它的更改。
在技术方面,jpi插件是使用gradle插件架构生成的,而hpi插件则是使用Maven架构生成的。
最终,正如您已经发现的那样,两者都可以生成Jenkins可以使用的插件。绝大多数插件都是使用Maven构建的,但我喜欢Gradle,因为它与用Groovy开发插件很好地链接在一起。您也可以使用Maven在Groovy中构建。
$JENKINS_HOME/plugins/
中的插件应始终使用.jpi
后缀(基本名称为插件标识符)。通常,即使在手动上传插件时,Jenkins也会强制执行此命名模式,而不管您用于上传的文件名是什么,因此我不确定您如何在此处拥有一个*.hpi
文件,除非您直接将其复制到此文件系统位置。/var/jenkins_home/plugins
中,插件不会被安装。我不得不将其重命名,插件在服务器启动时自动安装:RUN mv /var/jenkins_home/plugins/easy-webhook-plugin.hpi /var/jenkins_home/plugins/easy-webhook-plugin.jpi
plugins/
目录内容,要么-当你自己管理文件时-始终坚持一个后缀名用于所有文件。 - Oliver Gondža