Jenkins和HTTPS:无法连接到服务器

我们有一个位于https连接上的Subversion版本库。 我可以在本地连接到它(不需要代理):

 $ svn ls --username=qazwart --password=swordfish \ https://svn.corpwad.com/repos/potzrebie/branches/build-test build.xml src ... 

现在,我login到需要代理的构build服务器上:

 $ ssh tomcat@jenkins.corpwad.net Last login: Thu Aug 14 09:22:48 2014 from qazwart.corpwad.net $ export | egrep "JENKINS|_proxy" declare -x JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhttps.proxyHost=proxy.corpwad.net -Dhttp.proxyHost=proxy.corpwad.net -Dhttp.proxyPort=3128 -Dhttps.proxyPort=3128 -Dhttp.auth.preference=Basic" declare -x http_proxy="http://proxy.corpwad.net:3128" declare -x https_proxy="http://proxy.corpwad.net:3128" 

正如你所看到的,我已经为我的代理设置了JENKINS_JAVA_OPTOPNS ,并且我设置了https_proxy 。 代理不需要login,虽然我们的Subversion回购确实如此:

让我们试试wget

 $ wget -O - --user=qazwart --password=swordfish https://svn.corpwad.com/repos/potzrebie/branches/build-test --2014-08-14 09:54:09-- https://svn.corpwad.com/repos/potzrebie/branches/build-test Resolving proxy.ilcb.tcprod.local... 10.80.12.90 Connecting to proxy.corpwad.net|10.80.12.90|:3128... connected. Proxy request sent, awaiting response... 401 Authorization Required Connecting to proxy.corpwad.net|10.80.12.90|:3128... connected. Proxy request sent, awaiting response... 301 Moved Permanently Location: https://svn.corpwad.com/repos/potzrebie/branches/build-test [following] --2014-08-14 09:54:10-- https://svn.corpwad.com/repos/potzrebie/branches/build-test Connecting to proxy.ilcb.tcprod.local|10.80.12.90|:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 1130 (1.1K) [text/html] Saving to: “STDOUT” 0% [ ] 0 --.-K/s <html><head><title> potzrebie - Revision 1937: /branches/build-test</title></head> <body> <h2> potzrebie - Revision 1937: /branches/build-test</h2> <ul> <li><a href="../">..</a></li> <li><a href="build.xml">build.xml</a></li> ... </ul> 100%[==============================================================================>] 1,130 --.-K/s in 0s 2014-08-14 09:54:10 (51.6 MB/s) - written to stdout [1130/1130] $ 

好的,我可以通过wget连接到我的存储库。 这意味着我确实有从我们的生成服务器networking连接到我们的存储库。 不幸的是,我的系统没有用于testing的Subversion命令行客户端。 我将不得不要求我们的IT部门为它安装RPM,但是现在我无法testing它。 幸运的是,Jenkins不需要命令行客户端,因为它使用svnkit 。 :我创build了一个Jenkins Freestyle作业,selectSubversion作为我的存储库,并且在Repository URL字段中,我将把https://svn.corpwad.com/repos/potzrebie/branches/build-test 。 我用用户qazwart和密码swordfish设置了全球性的证书。 但是,虽然仍然在我们的构buildconfiguration屏幕,我得到这个:

 Unable to access https://svn.corpwar.com/repos/potzrebie/branches/build-test : svn: E175002: OPTIONS /repos/potzrebie/branches/build-test failed org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS /repos/potzrebie/branches/build-test failed at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:388) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:373) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:361) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:707) .... Caused by: svn: E175002: OPTIONS /repos/potzrebie/branches/build-test failed at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:154) at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:97) ... 88 more Caused by: org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS request failed on '/repos/potzrebie/branches/build-test' svn: E175002: connection refused by the server at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64) at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:777) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382) ... 87 more Caused by: svn: E175002: OPTIONS request failed on '/repos/potzrebie/branches/build-test' at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:775) ... 88 more Caused by: svn: E175002: connection refused by the server at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:520) ... 88 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) 

我有一种感觉,我错过了一个更小的步骤,但我无法弄清楚。

发现问题。 虽然我正在设置JENKINS_JAVA_OPTIONS ,但是在Tomcat本身启动时并没有设置。 我进入$CATALINA_BASE/bin/setenv.sh并添加:

 CATALINA_OPTS="$CATALINA_OPTS $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=... 

这在Java启动时设置了需要的属性。

我find了一个替代的方法来获取这些值到Java在Windows上下文中工作。

C:\Program Files (x86)\Jenkins\jenkins.xml

我编辑从java喂到的行

 <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments> 

 <arguments>-Xrs -Xmx256m -Djava.awt.headless=true -Dhttp.proxyHost=proxy.myproxy.com Dhttp.proxyPort=99999 -Dhttp.auth.preference=Basic -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments> 

密钥插入是-Dhttp.proxyHost = proxy.myproxy.com Dhttp.proxyPort = 99999 -Dhttp.auth.preference = Basic

Jenkins.xml文件

Jenkins.xml文件本身导致我去search这个jre\bin\java可执行文件可能在哪里,所以我可能会探测它,以更好地理解其命令行参数的作用。 正如我在C:\Program Files (x86)\Java\jre6\bin>java下find的那样,具有-D<name>=<value>forms的参数是我需要设置的参数族来正确地获取代理设置传达给Java。 java命令行参数

我非常努力地试图让我的SVN设置在代理服务器后面工作,而且Jenkins本身可以连接到代理服务器,就像通过testing的代理服务器设置一样。 这是非常不直观的,进一步的设置将需要超越此build立代理设置。 JenkinsProxyConnectionSuccess

只是为了帮助其他人绊倒这个问题,我最初遇到的错误是:

 Checking out a fresh workspace because there's no workspace at C:\SVNXXX\JenkinsWorkspace Cleaning local Directory . Checking out http://xxxxxxxxxx/trunk at revision '2016-03-18T16:12:17.711 -0700' ERROR: Failed to check out http://xxxxxxxxxxxx/trunk org.tmatesoft.svn.core.SVNException: svn: E175002: connection refused by the server svn: E175002: OPTIONS request failed on 'xxxxxxxxx/trunk'