通过 jenkins-cli 安装本地插件
Installing local plugin via jenkins-cli
- 我已启用 'Enable CLI over remoting'。
- 我已经为 JNLP 设置了固定或随机的 TCP 端口。
- 我已经成功下载了 jenkins-cli.jar。
当执行插件安装命令时,我收到:
执行时:java -jar jenkins-cli.jar -auth user:pass -s http://localhost:8080 install-plugin file:///folder/plugin.hpi
错误:执行安装插件命令时出现意外异常。
java.io.FileNotFoundException: /folder/plugin.hpi (没有那个文件或目录)
没有文件://
/folder/plugin.hpi 既不是有效文件,URL,也不是更新中心的插件工件名称
我已经尝试了所有可能的组合,文件确实存在。
编辑:从异常开始它一直认为它是 url 而不是文件:
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
at java.net.URL.openStream(URL.java:1045)
at hudson.FilePath.copyFrom(FilePath.java:890)
"
编辑 2:在给定 HTTP URL 时它确实有效,但它需要我将它上传到服务器,但我每次都没有。
编辑 3:我尝试将文件移动到 Jenkins 的同一个文件夹 /var/lib/jenkins 并赋予它 777 的权限。
您作为参数提供给 install-plugin
的 URL 必须可供 Jenkins 主进程访问。如果您收到错误消息
/folder/plugin.hpi (No such file or directory)
那么很可能是访问权限有问题,或者 /folder
没有挂载在 master 的主机上(或者在 master 的容器中,如果你使用 docker)。
这就是 HTTP URL 起作用的原因。
因此,对于 file://
URL,您需要在 CLI user/machine 和 Jenkins master user/machine 之间调整文件系统安装和权限。
这是@Alex O 解决方案的组合,我使用 -auth myuser:mypass 而不是 --username admin --password password 并切换了 --remoting。
看起来像这样:
java -jar jenkins-cli.jar -s http://host-ip:8080/ -remoting install-plugin ./plugin.hpi --username my-user --password my-pass -restart
- 我已启用 'Enable CLI over remoting'。
- 我已经为 JNLP 设置了固定或随机的 TCP 端口。
- 我已经成功下载了 jenkins-cli.jar。
当执行插件安装命令时,我收到:
执行时:java -jar jenkins-cli.jar -auth user:pass -s http://localhost:8080 install-plugin file:///folder/plugin.hpi
错误:执行安装插件命令时出现意外异常。 java.io.FileNotFoundException: /folder/plugin.hpi (没有那个文件或目录)
没有文件://
/folder/plugin.hpi 既不是有效文件,URL,也不是更新中心的插件工件名称
我已经尝试了所有可能的组合,文件确实存在。
编辑:从异常开始它一直认为它是 url 而不是文件:
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
at java.net.URL.openStream(URL.java:1045)
at hudson.FilePath.copyFrom(FilePath.java:890)
"
编辑 2:在给定 HTTP URL 时它确实有效,但它需要我将它上传到服务器,但我每次都没有。
编辑 3:我尝试将文件移动到 Jenkins 的同一个文件夹 /var/lib/jenkins 并赋予它 777 的权限。
您作为参数提供给 install-plugin
的 URL 必须可供 Jenkins 主进程访问。如果您收到错误消息
/folder/plugin.hpi (No such file or directory)
那么很可能是访问权限有问题,或者 /folder
没有挂载在 master 的主机上(或者在 master 的容器中,如果你使用 docker)。
这就是 HTTP URL 起作用的原因。
因此,对于 file://
URL,您需要在 CLI user/machine 和 Jenkins master user/machine 之间调整文件系统安装和权限。
这是@Alex O 解决方案的组合,我使用 -auth myuser:mypass 而不是 --username admin --password password 并切换了 --remoting。
看起来像这样:
java -jar jenkins-cli.jar -s http://host-ip:8080/ -remoting install-plugin ./plugin.hpi --username my-user --password my-pass -restart