2015-10-05 43 views
0

我們開發了帶有.Net後端的Azure移動服務。我們可以從VisualStudio發佈它,但我們希望自動化該過程以從構建機器發佈該服務。使用命令行工具發佈Azure移動服務

我們希望將構建和發佈過程分開,所以將建築和發佈相結合的解決方案描述爲 there對我們來說是不夠的。

是否有任何適用於Azure移動服務的PowerShell /命令行工具,類似於New-AzureDeployment/Set-AzureDeployment(ref: "Deploying cloud services to Azure with Powershell")?

回答

0

我終於設法使用MSDeploy.exe工作。我發現使用「/ p:DeployOnBuild = true」但沒有「/ p:PublishProfile」運行msbuild實際上不會發布移動服務,但會創建包含內容的文件夾,並可以使用msdeploy發佈。

步驟應遵循使用msdeploy發佈移動服務:

在構建過程:

  1. 添加/號碼:DeployOnBuild = true來的msbuild命令建立移動服務
  2. 發佈文件夾在obj \ Release \ Package中創建。該文件夾包含PackageTmp文件夾以及一些應該在發佈期間使用的文件(.cmd,.xml,.zip)。但是我無法使用這些文件。在我的情況下,PackageTmp文件夾是我需要的,我將這個文件夾複製到構建過程的輸出。

在出版過程:

  1. (僅一次)下載發佈配置文件(.publishsettings文件)從Azure管理門戶的移動服務(提供鏈接儀表盤選項卡上)
  2. 運行批處理哪些運行msdeploy.exe:


    @echo off 
    if "%MSDeployPath%" == "" (
    for /F "usebackq tokens=1,2,*" %%h in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy" /s ^| findstr -i "InstallPath"`) do (
    if /I "%%h" == "InstallPath" ( 
    if /I "%%i" == "REG_SZ" ( 
    if not "%%j" == "" ( 
    if "%%~dpj" == "%%j" ( 
    set MSDeployPath=%%j 
    )))))) 

    "%MSDeployPath%"\msdeploy.exe -verb:sync -source:contentPath=<path_to_PackageTmp_folder> -dest:ContentPath=<mobile_service_site>,PublishSettings=<path_to_downloaded_publishsettings_file>,AuthType='Basic' -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension 

或者,可以以壓縮提到PackageTm的內容p文件夾成一個zip和發佈行更改爲:


    "%MSDeployPath%"\msdeploy.exe -verb:sync -source:package=<path_to_zip_file> -dest:ContentPath=<mobile_service_site>,PublishSettings=<path_to_downloaded_publishsettings_file>,AuthType='Basic' -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension 

有幾次我不得不發佈後重新啓動移動服務。可以通過Azure CLI輕鬆完成。

希望以上可以幫助別人,想:-)

自動移動服務部署的過程,幫助過我的文章誰把一切做到:Azure Mobile Service deployment with Team City part 4. Deploying Azure Mobile Services

2

對於Azure移動服務,您可以通過git進行部署 - 機制是將您的「生產」代碼檢入到git存儲庫中。這可以作爲持續集成測試的一部分自動執行 - 請參閱以下演練:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-store-scripts-source-control/。這可能是您自動化的最佳選擇。

您也可以使用azure命令行工具。有關詳細信息,請參閱以下演練:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-manage-command-line-interface/

+0

謝謝您的回答。然而,它看起來像兩篇文章描述JavaScript後端,而不是。網絡後端:-( –

+0

有關.NET後端明確的文章,請參閱http://blogs.msdn.com/b/azuremobile/archive/2014/02/21/mobile-services-net-support-source-control .aspx –

+0

我已經嘗試了上面文章中描述的方法,所有的git命令都應該在解決方案目錄中執行,所以它們使用移動服務源,而不是編譯後的二進制文件,在我的例子'git push origin master'中執行了msbuild,這就是我想要避免的。 我認爲目前沒有隻能在二進制文件上運行的發佈方法,類似於雲服務。 無論如何,我要感謝Adrian的支持。:-) –