2014-03-04 101 views
1

我想設置我們的CI構建環境並出現問題。TFS部署不使用WebDeploy

首先,我使用的VS和TFS 2012等等,因爲這些都是VS/TFS 2013

其次,我無法使用* .12.xaml模板,現在我配置爲使用只是defaulttemplate.11.xaml。最初,我使用WebDeploy作爲部署方法,這非常棒。從那以後,我們的網絡/服務器團隊已經重新配置我們的測試環境,以使用IIS共享配置以及DFS複製來保持所有內容的同步。因此,我不再能夠使用WebDeploy(我將這post傳遞給TFS管理員,但他們說不)。

是否有一個地方可以添加一些msbuild參數或生成後事件,我可以用一些參數發送* .cmd文件,以便我可以複製/部署代碼?

我讀過Hanselman(和其他所有抄襲他人)的帖子/博客,上面寫着「如果你使用xcopy,你做錯了,等等......」,但我相信我的情況是我不能使用Web部署。

更新:

所以我想我找到了我的答案。由於Web部署對我不起作用,我發現了一個名爲CopyDirectory的工作流活動,它聽起來完全像我所需要的。

我經歷了更新我的默認模板的過程,以將這個額外的步驟添加到構建過程中,順便說一下,它不工作得很好。在添加步驟,保存等之後,該步驟不會出現在我的構建輸出中。我放棄了一段時間,看看我們是否可以在我們的Jenkins構建服務器上做到這一點,在那裏得到了一些不同的錯誤,所以我回到TFS進行更改和提交。由於CI仍然在TFS中設置(授予,失敗),我注意到當我做出提交時,一個構建被啓動。我決定觀看一段時間,併成功完成!哇,好的。所以我檢查了構建日誌,發現它警告說「無法複製,確保源目錄存在,並且你有適當的權限」。

那麼,因爲我剛輸入這個值不正確,沒什麼大不了的,只是改成正確的Bui​​ldDetail.DropLocation,我們應該是金。

錯誤,在對源和目標值進行更改後再次構建後,我發現由於我試圖將文件部署到其他域,所以仍然失敗。

哦,除此之外,您不能通過複製命令步驟!真!但是,我發現了一些文檔,它說:「給你想複製的域上的tfs構建服務/帳戶權限。好吧,如果我的服務器團隊允許這樣做,那就太好了,但他們不這樣做。

回到原點......(這會變成一個關於我的博客抱怨TFS ...)

+0

其實不是,需要提供憑據,因爲應用程序正在部署到另一個域不是TFS問題。創建信任關係並解決部署問題。可能還有其他需要在遠程域中執行的活動。 –

+0

我知道這不是一個「TFS問題」,但如果TFS允許您將憑據傳遞給該複製活動,那將會很好。就信任而言,我們的服務器/ Web團隊表示這不是一種選擇。 – ganders

回答

1

我相信你可以使用ROBOCOPY做到這一點,你將要更新的構建模板,包括一個新的InvokeProcess活動的活動的文件名設置爲"RoboCopy"(包括引號),它的參數爲類似以下內容:

String.Format(" ""{0}"" ""{1}"" /E /R:10 /W:10 /NFL /NDL ", BinariesDirectory, BuildDetail.DropLocation) 

當然可以將robocopy標誌更改爲您的特定需求。

我不認爲你可以將憑據傳遞給robocopy,所以你可能仍然是SOL。

儘管一個可能的選擇是,因爲您的管理員不會在目標框上提供TFS構建用戶(即tfs服務)權限,您可以將TFS構建作爲不同的用戶運行, 。要做到這一點,我相信你只需登錄到你的TFS生成機器,去服務,找到Visual Studio Team Foundation Build Service Host 2012(或類似的東西),並將Log On As用戶從tfsservice更改爲任何用戶有權在您想要發佈的框上至。當然,您還需要爲該用戶授予執行構建系統所需的所有其他功能(下載源代碼等)的權限。

+0

我正在研究這樣的解決方案。我會讓你知道它是如何運作的... – ganders

+0

我更新了我的答案,以包含潛在的解決方法,以解決您的權限問題。 – deadlydog