【问题标题】:VSTS: Deploying to Azure based VMVSTS:部署到基于 Azure 的 VM
【发布时间】:2017-11-28 09:26:58
【问题描述】:

我正在使用 VSTS 设置测试管道,现在我的构建工作使用 Azure VM 作为构建代理,我还想部署到那台机器上。 我试过使用 Windows 文件复制和 IIS 部署任务,但 understand this isn't a very good solution for security reasons,所以想知道最好的任务是让机器上的构建/发布代理将工件复制到基于 Azure 的 VM 并在本地部署到它的 IIS 安装?

【问题讨论】:

    标签: azure azure-devops azure-pipelines-release-pipeline


    【解决方案1】:

    我建议您强烈重新考虑不要将您的应用程序部署到您的构建代理。这将使查找由于缺少 DLL 或文件而导致的问题变得极其困难,因为构建服务器拥有一切。我建议创建另一个 VM 以部署到或利用 Azure 的 PaaS 进行 Web 应用程序。

    综上所述,由于您在同一 VM 上本地工作,因此您可以简单地利用 Copy Files 任务将文件移动到它们需要的位置。要“部署”应用程序,您只需将网站的输出复制到 IIS 目录即可。

    另一种选择是创建一个 PowerShell 脚本,用于设置、配置应用程序并将其部署到本地计算机。在这种情况下,您可以简单地利用 PowerShell 任务。

    【讨论】:

      【解决方案2】:

      源代码(构建定义中的获取源代码部分)将在构建过程中自动下载到构建代理,因此您无需通过 Windows 文件复制任务将文件复制到该机器,简单的工作流程是:

      1. 添加 NuGet 任务以恢复包
      2. 添加 Visual Studio 构建任务(MSBuild 参数:/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageLocation="$(build.artifactstagingdirectory)\\web.zip" /P:PackageTempRootDir=""
      3. 添加 WinRM-IIS Web 应用部署任务:(Web 部署包:$(Build.ArtifactStagingDirectory)\web.zip

      正如virusstorm所说,您可以通过复制文件任务将文件复制到该机器上的其他路径。

      另一方面,默认情况下,如果您使用的是发布,则工件将被下载到目标机器,如果部署机器与构建代理机器不同,您可以考虑Deployment groups

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 2018-08-16
        • 2021-05-29
        相关资源
        最近更新 更多