Groovy скрипт для добавления конфигурации в Jenkins publi sh -over-s sh Плагин - NullPointerException - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь написать сценарий groovy для Jenkins, который автоматически настраивает плагин s sh, чтобы мне не приходилось делать это каждый раз при его развертывании (потому что я делаю это в docker контейнер). Я нашел некоторую помощь в этом вопросе StackOverflow. Поэтому я начал программировать, но каждый раз, когда я внедряю jenkins с нуля, я получаю NullPointerExcepton в журналах Jenkins, и конвейер заканчивается с состоянием: UNSTABLE. Что я нахожу странным, так это то, что когда я go Управляю Jenkins> Настроить систему, затем просто нажимаю «Сохранить», все работает нормально. Мне не нравится это исправление, потому что тогда кто-то должен делать это каждый раз. Я часами пытался решить эту проблему, но все равно не повезло.

Вот мой сценарий:

#!groovy
import jenkins.model.*
import jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
import jenkins.plugins.publish_over_ssh.BapSshCommonConfiguration
def inst = Jenkins.getInstance()
def publish_ssh = inst.getDescriptor("jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin")
println("Reading private key")
def key = ''
dh = new File("./usr/share/jenkins/ref/init.groovy.d/myprivatekey")
dh.eachLine{
   line -> key = key + line + "\n"
}
println("Creating configuration")
def configuration = new BapSshHostConfiguration()
configuration.setName("name")
configuration.setHostname("my_host.com")
configuration.setUsername("my_username")
configuration.setPort(22)
configuration.setOverrideKey(false)
configuration.setTimeout(300000)
configuration.setDisableExec(false)
configuration.setProxyPort(0)
def common = new BapSshCommonConfiguration(null, key, "", false)
common.setPassphrase("mypassphrase")
println("Adding configuration")
publish_ssh.addHostConfiguration(configuration)
publish_ssh.setCommonConfig(common)
publish_ssh.readResolve()
println("Done, now saving")
dh.delete()
publish_ssh.save()
println("Done!")

И это сообщение об ошибке в Jenkins GUI:

SSH: Connecting from host [02e67461a79e]
SSH: Connecting with configuration [name] ...
SSH: Creating session: username [my_username], hostname [my_host.com], port [22]
ERROR: Exception when publishing, exception message [null]

И, наконец, журнал Дженкинса:

2020-03-25 22:44:12.954+0000 [id=200]   WARNING j.p.p.BPCallablePublisher#invoke: Exception when publishing, exception message [null]
java.lang.NullPointerException
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.configureAuthentication(BapSshHostConfiguration.java:295)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:242)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:227)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:49)
        at jenkins.plugins.publish_over.BapPublisher$Performer.perform(BapPublisher.java:229)
        at jenkins.plugins.publish_over.BapPublisher$Performer.access$000(BapPublisher.java:205)
        at jenkins.plugins.publish_over.BapPublisher.perform(BapPublisher.java:158)
        at jenkins.plugins.publish_over.BPCallablePublisher.invoke(BPCallablePublisher.java:65)
        at jenkins.plugins.publish_over.BPCallablePublisher.invoke(BPCallablePublisher.java:38)
        at hudson.FilePath.act(FilePath.java:1075)
        at hudson.FilePath.act(FilePath.java:1058)
        at jenkins.plugins.publish_over.BPInstanceConfig.perform(BPInstanceConfig.java:141)
        at jenkins.plugins.publish_over.BPPlugin.perform(BPPlugin.java:126)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
        at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
2020-03-25 22:44:12.954+0000 [id=200]   WARNING j.p.p.BPInstanceConfig#perform: An exception was caught when invoking perform
java.lang.NullPointerException
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.configureAuthentication(BapSshHostConfiguration.java:295)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:242)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:227)
        at jenkins.plugins.publish_over_ssh.BapSshHostConfiguration.createClient(BapSshHostConfiguration.java:49)
        at jenkins.plugins.publish_over.BapPublisher$Performer.perform(BapPublisher.java:229)
        at jenkins.plugins.publish_over.BapPublisher$Performer.access$000(BapPublisher.java:205)
        at jenkins.plugins.publish_over.BapPublisher.perform(BapPublisher.java:158)
        at jenkins.plugins.publish_over.BPCallablePublisher.invoke(BPCallablePublisher.java:65)
Caused: jenkins.plugins.publish_over.BapPublisherException: Exception when publishing, exception message [null]
        at jenkins.plugins.publish_over.BPCallablePublisher.invoke(BPCallablePublisher.java:69)
        at jenkins.plugins.publish_over.BPCallablePublisher.invoke(BPCallablePublisher.java:38)
        at hudson.FilePath.act(FilePath.java:1075)
        at hudson.FilePath.act(FilePath.java:1058)
        at jenkins.plugins.publish_over.BPInstanceConfig.perform(BPInstanceConfig.java:141)
        at jenkins.plugins.publish_over.BPPlugin.perform(BPPlugin.java:126)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
        at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
        at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
...