2016-02-11 275 views
15

我們剛剛安裝了TFS 2015(更新1)內部部署,並且正在嘗試使用新的TFS構建系統創建持續集成/構建系統。構建工作正常,並給了我一個綠燈,但當我看着默認構建它只建立bin目錄中的二進制文件,並且似乎沒有簡單的方法將本地應用程序部署到本地服務器。使用TFS 2015構建和部署Web應用程序構建

對於文件系統副本和PowerShell腳本,有兩個部署選項,並且使用它們將文件複製到新服務器當然很容易,但由於構建只構建了二進制文件,因此我不看到一個工具來收集網絡工件(cshtml,圖像,腳本,CSS等)。

詳盡的谷歌搜索後,我只找到了一個物品,其在談到這一點:

http://www.deliveron.com/blog/building-websites-team-foundation-build-2015/

然而,這種使用WebDeploy,並創建一個相當混亂的部署包。

如何以最簡單的方式將本地站點(標準MVC Web應用程序,事實上,我的測試使用由創建項目嚮導創建的默認樣板站點)與工件完成一個本地服務器?我不想在服務器上安裝WebDeploy,而寧願使用PowerShell或其他東西來部署最終的工件。

該構建只是標準的Visual Studio構建模板,包含4個步驟(構建,測試,索引&發佈,發佈構建工件)。

+0

這是怎麼回事?我試圖確保如果以下測試步驟失敗,則不會發生部署。你能做到嗎? –

+1

@ one.beat.consumer - 您應該將您的編譯/測試從部署分成兩個獨立的階段,然後您可以將相同的代碼部署到您的測試/ qa/prod環境中。 –

+0

謝謝。 「釋放」功能正如您所提及的部署軟件包。我遇到的麻煩是將構建步驟中的測試執行分離出來,因爲我發現的唯一用於XUnit的示例是構建的定製。我從那以後找到了xunit.runner.visualstudio NuGet包,它允許我適當地自定義測試步驟。但是,它現在需要兩個構建 - 第一個構建測試準備,第二個構建測試通過時創建的部署包。 –

回答

15

我們用「Visual Studio中建立」的步驟和論據爲的MSBuild我們使用以下行:

/p:DeployOnBuild=True /p:PublishProfile=$(DeploymentConfiguration) 

在變量標籤頁DeploymentConfiguration已進行配置。它必須是發佈配置文件的名稱(pubxml文件的文件名)。如果文件名稱爲Build.pubxml,則發佈配置文件爲Build。

例如:

/p:DeployOnBuild=True /p:PublishProfile=Build 
+3

@Sabastian - 謝謝。我的問題是,如果以下Visual Studio Test構建步驟中的事件失敗,如何防止此部署? –

-5

我們對40多個應用程序使用WebDeploy/MSDeploy並喜歡它。我們在所有服務器上都安裝了WebDeploy,因此我們可以更輕鬆地進行部署,但您也可以使用Web Deploy On Demand功能,該功能不需要預先安裝WebDeploy。

1

I wanted to add that Ben Day has an excellent write-up that helped us package quickly and then release to multiple environments through Release Manager

他的MSBuild參數是這樣的:

/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=$(build.artifactstagingdirectory)\for-deploy\website 

這和接受的答案之間的區別在於,此參數設置階段的文物夾中的一切,然後將其保存爲構建的一部分。然後,我們可以重複部署相同的代碼。

我們將web.env.config文件與for-deploy文件夾一起捕獲,然後在發佈過程中使用xdt變換,以確保我們部署到的任何環境都可以更新一切。它適用於我們所有的Web項目。

+1

可以在發佈配置文件中設置發佈目錄,它不需要在命令行上指定。因此,它可以更容易版本化 –

+0

這是一個很好的觀點。對於我們的環境(也許我們在這裏很少見?),我們選擇此方法來覆蓋任何發佈配置文件,以便將該網站捕獲爲構建工件,然後通過TFS Release Manager部署到多個目標。 –

相關問題