VSTS 部署到多个应用程序服务

VSTS deployment to multiple app services

我使用带有 TFS 存储库的 VSTS 来托管我的代码。该解决方案是 Asp.Net 核心解决方案,包含几个项目。我在解决方案中有两个项目用于不同的应用程序服务 - 一个将部署到 Web 应用程序,另一个将部署到 API 应用程序。

问题是如何配置部署这些工件的单个构建定义/发布定义。目前,我有两个定义 - 每个定义一个,我想有一个。我该如何配置它?

  1. 您可以为这些项目创建具有相同名称的发布配置文件(右键单击项目=>发布)(包位置的相对路径,例如<DesktopBuildPackageLocation>..\..\a\WebApp</DesktopBuildPackageLocation>)。通过这种方式,Web 应用程序发布的结果将在 不同的文件夹 中。
  2. 指定 Visual Studio 构建任务的 MSBuild 参数将如下所示:/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:PublishProfile="[profile name]".
  3. 添加 Publish Build Artifacts 以发布这些 Web 应用程序发布的结果(例如发布路径:$(build.artifactstagingdirectory)
  4. 创建新的发布定义
  5. 添加两个部署应用任务(例如 Azure 应用服务部署)
  6. 指定要部署的相应包

更新:

使用多个Publish Tasks来发布一个包也可以(不需要publish profile)。

  1. 从 "ASP.NET Core (.NET Framework)" 构建模板开始。默认情况下,为解决方案中的所有函数应用程序创建一个包。
  2. 修改生成解决方案任务 msbuild 参数,以便为每个 Function App 项目创建一个包

    发件人:
    /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageAsSingleFile=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"


    /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)" /p:DeployIisAppPath="Default Web Site"

  3. 运行 构建并查看发布工件,您应该在包中看到多个 zip 文件,每个函数应用一个

  4. 现在,对于您要部署的每个 Function App,将一个 'Deploy Azure App Service' 任务添加到您的 Release 定义中

  5. 将 'Deploy Azure App Service' 任务、包或文件夹更新为:
    $(System.ArtifactsDirectory)/**/Your.Project.FunctionApp.zip