我的配置:
我的jenkins.xml文件
<service>
<id>jenkins</id>
<name>Jenkins</name>
<env name="JENKINS_HOME" value="%BASE%"/>
<executable>C:\Program Files\IBM\SDP8.5\jdk\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
</service>
我的hudson.tasks.Mailer.xml文件
<hudson.tasks.Mailer_-DescriptorImpl plugin="mailer@1.4">
<defaultSuffix>@example.com</defaultSuffix>
<hudsonUrl>http://localhost:8081/</hudsonUrl>
<adminAddress>Jenkins Build Server <do-not-reply@example.com></adminAddress>
<smtpHost>smtp.example.com</smtpHost>
<useSsl>false</useSsl>
<charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>
注意:“example.com”取代了我的真实域名/电子邮件/ smtp服务器。
当我指示Jenkins发送测试电子邮件时,我收到此错误:
Failed to send out e-mail
javax.mail.MessagingException: Could not connect to SMTP host: smtp.example.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
我对此错误的理解是,Windows 7中存在一个关于防火墙以及Java 7如何使用ipv4映射的ipv6地址的错误。
据报道,这可以通过在java运行时添加-Djava.net.preferIPv4Stack = true来解决。我在使用ANT电子邮件任务在此计算机上添加-Djava.net.preferIPv4Stack = true方面取得了成功。然而,在詹金斯,我没有运气。
请注意,jenkins.xml文件似乎完全被忽略。未设置-Djava.net.preferIPv4Stack = true参数。 PATH和JAVA_HOME都指向IBM运行时,但Jenkins仍然从Oracle v7运行时开始。詹金斯必须催生一个新的流程来启动和获取系统java 7。
使用上面的配置,如果我去Jenkins脚本控制台并使用“System.getProperty(”java.net.preferIPv4Stack“)查询它,我什么也得不到(没有设置)。如果我设置了那个参数,我仍然得到错误。如果我将-Djava.net.preferIPv4Stack = true添加到命令行(不使用该服务),则在通过脚本控制台进行询问时仍未设置它。
我的问题
为什么我收到此错误以及如何解决?请记住,我可以编写一个ANT脚本,使用相同的smtp服务器和java运行时间成功发送电子邮件。
如何让Jenkins启动-Djava.net.preferIPv4Stack = true参数并指定运行时间?
一些注释:
答案 0 :(得分:12)
-jar
参数之后的参数将传递给应用程序,而不是java vm。因此,请尝试在-Djava.net.preferIPv4Stack=true
参数之前移动-jar
。
答案 1 :(得分:0)
2.如何让Jenkins启动-Djava.net.preferIPv4Stack = true参数并指定运行时间?
我不确定Java运行时,但这对我来说对参数有用:“-Djava.net.preferIPv4Stack = true”。
1)记事本“C:\ Program Files(x86)\ Jenkins \ jenkins.xml”
2)找到类似于:
的行<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
3)在 -jar参数之前将“-Djava.net.preferIPv4Stack = true”部分移动到。它现在看起来应该类似于:
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Djava.net.preferIPv4Stack=true -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
4)保存文件,退出记事本。
5)重启jenkins服务
6)从“管理Jenkins - &gt;配置系统”网页发送测试电子邮件。电子邮件现在应该可以使用了。