通过 jenkins-cli 安装本地插件

Installing local plugin via jenkins-cli

  1. 我已启用 'Enable CLI over remoting'。
  2. 我已经为 JNLP 设置了固定或随机的 TCP 端口。
  3. 我已经成功下载了 jenkins-cli.jar。

当执行插件安装命令时,我收到:

我已经尝试了所有可能的组合,文件确实存在。

编辑:从异常开始它一直认为它是 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