2010-12-15 53 views
3

我目前正在配置StatSVN以在TeamCity中運行,並且遇到了一些問題,我需要一些想法。首先,StatSVN需要在已從SVN簽出的工作目錄上運行,它不能針對TeamVity 從SVN導出的應用副本運行。因此,它需要在構建服務器上執行svn checkout。svn checkout在TeamCity中無人值守時運行密碼的挑戰

我所做的是創建了運行由StatSVN創建報表所需的三個命令一個bat文件,其中第一個就是結帳:

svn checkout [repository path] 

現在,糾正我,如果我錯了,但是這應該使用當前身份簽出。當然,它直接從命令行直接運行。當它在TeamCity中運行時,構建運行器被配置爲在與SVN中的權限相同的服務帳戶下運行。事實上,使用相同的服務帳戶來創建存儲庫和默認的目錄結構,所以我毫不懷疑它擁有權利。

然而,每一次構建運行它掛起和停止之後,很明顯,爲什麼:

[13:38:28]: C:\TeamCity\buildAgent\work\e8d4dc4070ecf602>svn checkout [repository path] 
[13:38:29]: Authentication realm: <[svn server]> Subversion Repositories 
[13:38:38]: Password for '[service account]': 
[13:38:38]: Process exited with code 1 

這似乎是掛並等待它顯然無法獲得,而運行無人值守密碼。有沒有人有任何想法,爲什麼會發生這種情況?

更新: StatSVN需要的下一個命令是轉儲提交歷史的「svn日誌」。即使通過將TeamCity VCS簽出模式配置爲「自動在代理上」來解決svn checkout問題,從而導致實際簽出而不是導出(這當然優於手動命令),但「svn log」命令仍然存在同樣的問題。

回答

2

是否有可能通過將teamcity上的簽出從「服務器端」(導出)更改爲客戶端(簽出)來解決此問題。那麼你實際上會得到你所有的svn文件夾。

然後,您可以將它們從build(nant或msbuild)中排除,以便它們永遠不會將其放入您的構建項目文件夾中。

我知道這並不直接回答你的問題,但它可能會解決你的實際問題。

+1

你實際上已經提出了一個很好的觀點,這當然比手動的「svn checkout」命令更可取。不幸的是,StatSVN在這之後仍然需要你執行一個「svn log」命令,所以問題才轉到下一個語句。 – 2010-12-15 07:41:23

4

你至少可以通過使用

svn checkout --non-interactive 

這不會解決這個問題,它不知道用戶的要求輸入阻止它,但可能給你不好的事更多信息

1

可能來不及幫助OP,但在執行結賬時遇到類似問題。 svn會不斷提示輸入用戶名和密碼,儘管它們使用--username--password交換機提供。當添加--non-interactive開關時(根據Sander Rijken的建議)svn迴應說密碼不正確。實際上,密碼正確,但包含未正確轉義的字符。