2 votes

Jenkins et HTTPS : Impossible de se connecter au serveur

Nous avons un dépôt de Subversion situé sur un serveur de https connexion. Je peux m'y connecter localement (pas besoin de proxy) :

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

Maintenant, je me connecte à notre serveur de construction qui nécessite un proxy :

$ 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"

Comme vous pouvez le voir, j'ai JENKINS_JAVA_OPTOPNS pour mon proxy, et j'ai https_proxy set. Le proxy ne nécessite pas de connexion, alors que notre repo Subversion en nécessite une :

Essayons 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]
$

Ok, je peux par wget pour se connecter à mon référentiel. Cela signifie que j'ai une connectivité réseau à notre référentiel depuis notre serveur de construction. Malheureusement, mon système ne dispose pas d'un client de ligne de commande Subversion pour les tests. Je vais devoir demander à notre service informatique d'installer le RPM pour cela, mais pour le moment, je ne peux pas le tester. Heureusement, Jenkins n'a pas besoin du client de ligne de commande puisqu'il utilise svnkit . : Je crée un travail Jenkins Freestyle, je sélectionne Subversion comme référentiel, et dans le URL du référentiel je vais mettre https://svn.corpwad.com/repos/potzrebie/branches/build-test . J'ai mis en place un gloabal avec l'utilisateur qazwart et mot de passe swordfish . Cependant, alors que je suis toujours sur l'écran de configuration de la construction, j'obtiens ceci :

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)

J'ai le sentiment d'avoir oublié une autre étape mineure, mais je n'arrive pas à la comprendre.

2voto

David W. Points 381

J'ai trouvé le problème. Bien que je configure JENKINS_JAVA_OPTIONS il n'a pas été défini lorsque Tomcat lui-même a été lancé. Je suis allé dans $CATALINA_BASE/bin/setenv.sh et a ajouté :

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

Ceci définit les propriétés requises lorsque Java démarre.

0voto

jxramos Points 707

J'ai trouvé un autre moyen d'obtenir ces valeurs dans Java qui a fonctionné pour moi dans un contexte Windows.

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

J'ai modifié la ligne qui alimente java à partir de

<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>

L'insertion de la clé étant -Dhttp.proxyHost=proxy.myproxy.com Dhttp.proxyPort=99999 -Dhttp.auth.preference=Basic

Jenkins.xml File

Le fichier Jenkins.xml lui-même m'a conduit à chercher où se trouve cette jre\bin\java Je peux donc le sonder pour mieux comprendre le rôle de ses arguments de ligne de commande. Comme je l'ai découvert sous C:\Program Files (x86)\Java\jre6\bin>java les arguments ayant la forme -D<name>=<value> était la famille d'arguments que je devais définir pour que les paramètres du proxy soient correctement communiqués à Java. java commandline arguments

J'ai eu beaucoup de mal à faire fonctionner mon installation SVN derrière le serveur proxy, et c'était très déroutant car Jenkins lui-même pouvait se connecter au proxy comme comme l'indiquaient les paramètres de proxy que j'avais activés pour lui et qui ont passé le test. Il est très peu intuitif que d'autres paramètres soient nécessaires pour établir les paramètres du proxy. JenkinsProxyConnectionSuccess

Pour aider les autres personnes qui rencontrent ce problème, voici les erreurs que j'ai rencontrées à l'origine :

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'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X