如何通过Maven hpi:run实现Jenkins插件的远程访问?
我之前也遇到过一模一样的问题——默认情况下mvn hpi:run启动的Jenkins开发实例只会绑定到127.0.0.1,导致只能在服务器本地访问,哪怕SSH隧道配置好了也没用。你试的几个参数没生效,大概率是因为版本适配的问题,现在给你几个靠谱的解决方案:
直接用Jenkins原生启动参数(推荐)
现在的maven-hpi-plugin是通过传递Jenkins自身的启动参数来配置监听地址的,你需要用-Djenkins.listenAddress=0.0.0.0来让实例监听所有网络接口,同时可以指定端口(如果需要)。完整命令如下:
mvn clean hpi:run -Djenkins.listenAddress=0.0.0.0 -Djenkins.httpPort=8080
执行这个命令后,你可以在服务器上用ss -tulpn | grep 8080验证监听状态,如果输出里显示0.0.0.0:8080,就说明配置成功了,这时候不管是服务器上curl server:8080还是本地通过SSH隧道访问,都能正常连接Jenkins了。
把配置写到pom.xml里(避免每次输参数)
如果不想每次启动都敲一堆参数,可以修改项目的pom.xml,把监听配置固定到maven-hpi-plugin的配置中:
<build> <plugins> <plugin> <groupId>org.jenkins-ci.tools</groupId> <artifactId>maven-hpi-plugin</artifactId> <!-- 建议使用最新稳定版本的插件 --> <version>3.29</version> <configuration> <jenkinsArguments> --httpListenAddress=0.0.0.0 --httpPort=8080 </jenkinsArguments> </configuration> </plugin> </plugins> </build>
修改后,直接执行mvn clean hpi:run就会自动应用这些配置。
为什么之前的参数没生效?
你试的-DhttpListenAddress、-Djetty.host这些参数,要么是旧版本maven-hpi-plugin的用法,要么是直接给Jetty容器传参的方式,但现在的插件已经改成通过Jenkins自身的启动参数来配置了,所以那些参数不再生效。
最后明确回答你的疑问:完全不需要每次部署到本地Jenkins服务器,只要用上面的方法配置监听地址,hpi:run启动的开发实例就能支持远程访问或者SSH隧道访问,非常方便插件调试。
内容的提问来源于stack exchange,提问作者David Georg Reichelt

