首页 文章

使用命令行工具发布Azure移动服务

提问于
浏览
0

我们使用.Net后端开发了Azure Mobile服务 . 我们可以从VisualStudio发布它,但我们希望自动化从构建机器发布服务的过程 .

我们希望将构建和发布过程分开,因此结合构建和发布的解决方案there对我们来说是不够的 .

Azure Mobile Services是否有任何powershell /命令行工具,类似于New-AzureDeployment / Set-AzureDeployment(ref:"Deploying cloud services to Azure with Powershell")?

2 回答

  • 0

    对于Azure移动服务,您可以通过git进行部署 - 该机制是您将"production"代码检入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/

  • 2

    我终于设法使用MSDeploy.exe工作了 . 我发现使用“/ p:DeployOnBuild = true”运行msbuild,但没有“/ p:PublishProfile”实际上并不发布移动服务,而是创建包含内容的文件夹,可以使用msdeploy发布 .

    使用msdeploy发布移动服务应遵循的步骤:

    在建设过程中:

    • 添加/ p:DeployOnBuild = true到构建移动服务的msbuild命令

    • 发布文件夹在obj \ Release \ Package中创建 . 此文件夹包含PackageTmp文件夹以及应在发布期间使用的一些文件(.cmd,.xml,.zip) . 但是我无法使用这些文件 . 在我的情况下,PackageTmp文件夹是我需要的,我将此文件夹复制到构建过程的输出 .

    在发布过程中:

    • (仅一次)从Azure管理门户下载移动服务的发布配置文件(.publishsettings文件)(“仪表板”选项卡上的链接)

    • 运行运行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
    

    或者,可以将提到的PackageTmp文件夹的内容压缩为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

相关问题