【问题标题】:Release pipeline deploy multiple websites from single zip file发布管道从单个 zip 文件部署多个网站
【发布时间】:2020-10-29 15:29:02
【问题描述】:

我正在尝试在 Windows VM 上构建和部署位于同一存储库中的两个应用程序。

我希望它将所有 Web 应用程序部署到与站点名称匹配的虚拟应用程序中。

我的构建步骤只是一个标准的基本 vsbuild:

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

... standard stuff ...

- task: VSBuild@1
  inputs:
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)\WebApp.zip"'                  
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

这会生成一个名为 webapp.zip 的 zip 文件。查看 zip 文件,它具有以下结构

D_C
 -> a
  -> 1
   -> s
    -> app1
     -> release
      -> netcoreapp2.1
       -> PubTmp
        -> Out
         -> <expected content>
    -> app2
     -> release
      -> netcoreapp2.1
       -> PubTmp
        -> Out
         -> <expected content>

子问题 - 为什么我得到 obj 文件夹而不是 bin 文件夹?

同样,我的发布只是一个带有单个任务“iis web app deploy”的单个任务。现在,我只是将其保留为默认网站。

将部署任务保留为默认设置,我没有获得子文件夹或虚拟应用程序,它会将 app1 转储到网站主机文件夹的根目录中

我尝试定义两个发布任务,将 app1 和 app2 都指定为虚拟应用程序,尽管表面上它似乎可以工作(我得到一个名为 app1 的文件夹和一个名为 app2 的文件夹),这两个文件夹都包含 app1 的代码.

虽然它显然是指 TFS 而不是 devops,但 https://devblogs.microsoft.com/devops/deploying-an-azure-web-site-using-the-new-build-system-in-visual-studio-online/ 完美地描述了我正在尝试做的事情,但似乎没有工作。

【问题讨论】:

  • 你能展示你的部署任务吗?
  • buildConfiguration 是否设置为 Release
  • 嗨@Immortal Blue。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this

标签: iis azure-devops


【解决方案1】:

发布管道从单个 zip 文件部署多个网站

根据我的测试,IIS web app deploy 任务将部署Out 文件夹下的文件。

vsbuild生成一个zip文件夹,我们无法将zip文件夹中的两个应用分类部署。

由于您的网站在同一个 zip 文件中,您可以添加 Extract files 任务来提取 zip 文件。

然后你可以直接使用解压后的文件夹(app1 -> Out and app2 -> Out)来部署。

这是一个例子:

在 IIS 部署任务中,您可以将输出文件夹设置为Package or Folder

例如:

需要直接硬编码对应的文件夹路径。

例如

   $(System.ArtifactsDirectory)\Destination folder name\Content\C_C\xxxxx\s\MvcMovie\MvcMovie\obj\Release\netcoreapp2.2\PubTmp\out

另一方面,您可以更改 VSBuild 参数。

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

然后它将为相应的应用程序生成两个zip文件。

在这种情况下,它可以使您的部署过程更加清晰。

【讨论】:

  • 为迟到的接受表示一千个道歉 - 工作变得狂躁,生活也是如此。似乎我的假设是错误的,即“PackageAsSingleFile”会神奇地允许在另一端取消选择(老实说,这似乎并不牵强)。我之前曾尝试将其设置为 false,但我认为我使用的其他一些设置打破了这一点。反正。我现在有 n 个 zip 文件,每个文件都是单独控制和部署的。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多