2009-01-16 62 views
4

我一直在使用Virtual PC來配置和測試CCNet一小會兒。一切順利,決定將配置轉移到服務器位置 - 這可以預期。一些調整和踢腿,我已經像以前一樣運行。運行Cruise Control .NET即服務

的問題是,我們現在需要運行CCNET作爲被證明是有問題的服務。

我已經配置了爲自己的(畢竟,控制檯應用程序已經運行,現在作爲我要3個月左右)相同的訪問權限的域級用戶,並配置了該用戶下運行的服務。

我開始了服務,它掛了! [我不會讓你知道強迫服務停止和關閉插座的細節。當我最終能夠再次運行控制檯時,我做了一個'運行爲'並輸入'cruisecontrol'用戶詳細信息,單擊確定,並看到通過https訪問SVN時出現問題。我通過運行IE作爲'cruisecontrol',導航到存儲庫並接受/安裝證書,對它進行了排序。 接下來,當我跑的控制檯應用程序爲「CruiseControl的」它掛起以下行後:

2009-01-15 16:55:50,994 [Pepsi Webservices:DEBUG] Running Subversion with arguments : log --xml --limit 1 https://ash-dev-005.[path to trunk]

2009-01-15 16:55:51,478 [Pepsi Webservices:DEBUG] Authentication realm: https://ash-dev-005.[path to repository] Subversion Repositories

它之後超時,我可以關閉控制檯,運行正常(即如我),它運行精細。我曾嘗試以'cruisecontrol'用戶身份登錄到服務器,並嘗試運行控制檯,但結果相同。

現在,繼承人的事情:今天上午我登錄到服務器作爲「CruiseControl的」用戶,打開一個命令窗口。我導航到我的項目的主幹,鍵入'svn update',並提示輸入密碼。

這並不令人驚訝,但該提示符之上的行是上面的'Authentication realm:...'行。查看日誌文件,確定在CCNet終止進程後,系統提示輸入密碼。 CCNet/SVN是否在等待輸入密碼,然後超時?如果是這樣,爲什麼它不使用配置文件中的那個?

我輸入的密碼和更新進行沒有任何問題(所以CruiseControl的用戶確實有權限訪問來自服務器的存儲庫)。我再次輸入命令,並沒有提示第二次,所以我試圖打開一個新的命令窗口並重新運行命令 - 仍然沒有提示輸入密碼,所以我退出並返回(作爲巡航控制),並再次嘗試,但仍然沒有提示。

好消息是,當我以巡航控制用戶的身份運行控制檯應用程序(無論是以巡航控制登錄還是僅使用運行方式),一切似乎都正常。

那麼我的問題是什麼? 那麼,CCNet爲什麼不在配置文件中使用密碼? 如何在命令提示符中輸入密碼解決了問題(並且會一直存在)?

任何建議/見解讚賞。

回答

2

嗯 - 我可以在這裏回答了我自己的問題(或沒有,只有時間才能告訴我們)。

出於某種原因CCNET似乎沒有使用在配置文件中的憑據(不知道爲什麼)。當它調用SVN時,即使用戶看不到密碼,也會等待輸入密碼,然後在沒有密碼時超時。

通過從命令行訪問SVN,密碼提示是可見的,並且可以輸入密碼,並且該密碼被緩存在該用戶的加密文件內的%app_data%\ Subversion \ auth \ svn.simple中。這就是爲什麼後續命令不會提示輸入密碼,以及爲什麼控制檯應用程序可以毫無問題地運行。

我現在要配置CCService,所以希望它能和控制檯應用程序一樣工作。

如果您有任何類似的經驗,請讓我知道。同時我可能會用ThoughtWorks提出這個問題。

+0

這樣的問題在Google用戶組或開發人員組中更好提出,除非您有可重現問題。在這種情況下,您可以在ThoughtWorks網站上的JIRA中記錄問題 – Alex 2009-01-21 00:02:42

+0

您的配置有問題。我們已經使用了CC.Net多年,我可以保證它使用配置文件中的用戶名和密碼。 – ConsultUtah 2010-01-27 15:30:04

1

據我所知,當你運行cc.net作爲服務時,它使用另一個配置文件,然後當你作爲一個控制檯應用程序運行它。 (ccservice.exe.config代替cc.exe.config)。

+0

真的夠了,但是當我像我一樣運行控制檯或服務時,我沒有任何問題。我不知道爲什麼我必須手動緩存密碼,以及爲什麼CCNet不使用配置文件。 – DilbertDave 2009-01-16 11:45:20

0

Dave, 診斷CruiseControl是否使用配置文件中的密碼非常容易,因爲您將看到日誌中的命令行以及實際的密碼參數和密碼(如果正在使用並通過)給svn。如果你在配置文件中有密碼和用戶,並且他們沒有被傳遞,我首先要檢查的是你的配置文件是有效的,文件系統中的配置文件是實際使用的。如果您對配置文件進行了無效更改,只要服務正在運行並且只是繼續使用它內部緩存的版本而沒有任何警告或消息,CC.NET就會忽略它。所以再次驗證的唯一方法是通過網絡儀表板查看配置,並確保它反映了您的期望,或者您可以反彈該服務,停止並指出您的錯誤。最後,雖然你可以像使用subversion緩存密碼一樣解決這個問題。

+0

我的日誌沒有任何密碼的命令行,只是用戶名。我確實嘗試重新啓動服務,看看它是否會抱怨某些事情,但它從來沒有這樣做過。不管怎麼說,還是要謝謝你。 – DilbertDave 2009-01-28 19:13:17

1

與弗雷德裏克的迴應有關 - 在我們的服務器上,我們在項目本身中指定了Subversion證書。其中一個項目的源代碼塊如下所示:

<sourcecontrol type="svn"> 
    <trunkUrl>http://myserver/svn/myproject/trunk</trunkUrl> 
    <workingDirectory>C:\source\MyProject</workingDirectory> 
    <username>foo</username> 
    <password>bar</password> 
    <autoGetSource>true</autoGetSource> 
</sourcecontrol> 
相關問題