2012-04-25 3 views
0

Jenkins 슬레이브에서 실행하려고하는 Jenkins Master 노드에서 이전에 제대로 작동했던 빌드가 있습니다.Jenkins Slave와 관련된 Mercurial/TortoiseHg 문제 - 지정된 로그온 세션이 존재하지 않습니다.

나는 Jenkins Mercurial Plugin을 사용하고 있으며 슬레이브 컴퓨터의 TortoiseHg 설치 디렉토리를 가리키고 있습니다.

사용중인 Mercurial 저장소는 자체 서명 된 인증서 (IIS에서 호스팅 됨)로 보호됩니다.

컴퓨터에서 로컬로 작업 할 때 문제없이 저장소를 복제 할 수 있습니다 (TortoiseHg에서 사용자 암호를 보존해야 함).

그러나 Jenkins가 빌드를 실행하면이 문제가 발생하는 것으로 보입니다.

내가 아래에 나열되어지고있어 것을 특정 오류 :

Building remotely on <slave> in workspace <workspace> 
$ S:\Software\TortoiseHg/hg clone --rev default --noupdate https://<repository> <workspace_on_slave> 
warning: <MercurialServerIP> certificate with fingerprint e3:5f:5e:ea:4f:da:ef:a4:0b:4a:bb:00:e8:31:59:de:ce:d0:28:94 not verified (check hostfingerprints or web.cacerts config setting) 
** unknown exception encountered, please report by visiting 
** http://mercurial.selenic.com/wiki/BugTracker 
** Python 2.6.6 (r266:84297, Aug 24 2010, 18:13:38) [MSC v.1500 64 bit (AMD64)] 
** Mercurial Distributed SCM (version 2.1.2) 
** Extensions loaded: mercurial_keyring 
Traceback (most recent call last): 
    File "hg", line 42, in <module> 
    File "mercurial\dispatch.pyo", line 27, in run 
    File "mercurial\dispatch.pyo", line 64, in dispatch 
    File "mercurial\dispatch.pyo", line 87, in _runcatch 
    File "mercurial\dispatch.pyo", line 685, in _dispatch 
    File "mercurial\dispatch.pyo", line 467, in runcommand 
    File "mercurial\dispatch.pyo", line 739, in _runcommand 
    File "mercurial\dispatch.pyo", line 693, in checkargs 
    File "mercurial\dispatch.pyo", line 682, in <lambda> 
    File "mercurial\util.pyo", line 456, in check 
    File "mercurial\commands.pyo", line 1157, in clone 
    File "mercurial\hg.pyo", line 250, in clone 
    File "mercurial\hg.pyo", line 93, in repository 
    File "mercurial\httprepo.pyo", line 236, in instance 
    File "mercurial\httprepo.pyo", line 57, in _fetchcaps 
    File "mercurial\httprepo.pyo", line 169, in _call 
    File "mercurial\httprepo.pyo", line 117, in _callstream 
    File "urllib2.pyo", line 397, in open 
    File "urllib2.pyo", line 510, in http_response 
    File "urllib2.pyo", line 429, in error 
    File "urllib2.pyo", line 369, in _call_chain 
    File "urllib2.pyo", line 864, in http_error_401 
    File "mercurial\url.pyo", line 429, in http_error_auth_reqed 
    File "hgext\mercurial_keyring.pyo", line 332, in basic_http_error_auth_reqed 
    File "urllib2.pyo", line 842, in http_error_auth_reqed 
    File "urllib2.pyo", line 845, in retry_http_basic_auth 
    File "hgext\mercurial_keyring.pyo", line 326, in find_user_password 
    File "hgext\mercurial_keyring.pyo", line 177, in find_auth 
    File "hgext\mercurial_keyring.pyo", line 60, in get_http_password 
    File "keyring\core.pyo", line 37, in get_password 
    File "keyring\backend.pyo", line 560, in get_password 
    File "keyring\backend.pyo", line 573, in _get_password 
pywintypes.error: (1312, 'CredRead', 'A specified logon session does not exist. It may  already have been terminated.') 
ERROR: Failed to clone https://<repository> 

사람이 내가 지난 얻기 위해 무엇을 할 수 있는지에 대한 제안을 제공 할 수 있습니까?

답변

0

비 폴링 솔루션 : (당신이 트리거 저장소의 폴링을 수행하지 않는 경우 유용한 빌드)

이에 대한 수정이 수동에서 슬레이브에 저장소를 복제 에 밝혀 작업 영역 위치는입니다 (정상적으로 끝날 곳).

일단 저장소가 슬레이브에서 사용 가능 해지면 '지정된 로그온 세션이 존재하지 않습니다.'를 지나갈 수 있습니다. 그것은 이미 종료되었을 수 있습니다. ' 오류.

폴링 솔루션 : (위의 해결 방법은 Jenkins 폴링 기능과 작동하지 않으므로 아래 해결 방안이 남았습니다).

How do you specify authentication information for Mercurial as part of Jenkins? (mercurial_keyring)

유일한 내 설정에서 암호를 기억하기 위해 서버를 얻을 수 (폴링 작업)하는 방법을 알아낼 수 있었다 방법 \의 mercurial.ini에서 수동으로 지정했습니다를 참조하십시오.

참고 : mercurial_keyring 줄을 mercurial.ini에서 제거해야 할 수도 있습니다. (모든 것을 수동으로 지정하기 때문에 Jenkins 서버/슬레이브에서 키 링 확장을 사용할 수 없습니다.)