定制Visual Studio 2012的Web发布管道(WPP)以用于构建服务器

4
我正在为一个大型企业服务基础架构创建构建和部署基础设施。我们使用 TFS Build 2012 作为构建服务器,使用 Visual Studio 2012 生成 WPP 部署包,并使用 MSDeploy 2.1 执行实际部署。(由于存在一些问题(如:WMSvc 中的 NTLM 认证出现故障等),我们无法使用 MSDeploy 3。)
我创建了一个 "Project.wpp.targets" 文件,并添加了以下属性:
<DeployOnBuild Condition="$(DeployOnBuild) == '' And '$(OutDir)' != '$(OutputPath)' ">true</DeployOnBuild>
<WebPublishMethod>Package</WebPublishMethod>
<DeployManagedPipelineMode>Integrated</DeployManagedPipelineMode>
<Disable_CopyWebApplication>True</Disable_CopyWebApplication>

当编译在构建服务器上进行时,OutDir将与OutputPath不同,并且WPP将被激活。构建输出以下文件:

Project.zip
Project.SetParameters.xml
Project.SourceManifest.xml
Project.deploy.cmd
Project.deploy-readme.txt

项目.zip文件中包含以下内容:

Archive.xml
Parameters.xml
systemInfo.xml

问题1 - SourceManifest.xml文件是什么,为什么它不在zip包中? 创建zip文件包进行部署的整个原因似乎是使其完全自包含。但是,SourceManifest文件是“松散的” - 我们不能再简单地将zip文件放在我们的部署文件共享上了。为什么它不在包中?它还指向构建服务器上的特定路径!

问题2 - Archive.xml文件是用于什么的?它似乎有些多余,与SourceManifest.xml类似 - 我看到一个provider、一些providers等等。在Microsoft文档中,他们提到了“manifest.xml”在包中。这个文件看起来像清单,但它被称为“archive.xml”。文件名重要吗?manifest.xml与archive.xml不同吗?它们如何与看起来相似但又不同的SourceManifest.xml相关联?

问题3 - systemInfo.xml是用来做什么的?它似乎列出了构建服务器上安装的所有IIS角色组件。例如,如果我在本地计算机上通过命令行运行构建,它会列出.NET 2.0和4.0已安装以及我的机器上各种IIS组件的True / False值。问题是这些设置对我实际想要部署的内容没有任何影响!MSDeploy会查看此文件吗?它的生成可以禁用吗?我绝对不希望来自构建服务器的配置工件影响生产环境!

1个回答

5
生成的zip包是自包含的,可以在不需要目录中的其他文件的情况下使用msdeploy.exe。
您可以通过设置GenerateSampleDeployScript=False来防止生成cmdSetParameters文件。您不能配置SourceManifest在构建后被删除,但是您可以手动安全地执行此操作。 SourceManifest.xml基本上是一种诊断工具。实际上,它是同步的-dest:package=Project.zip-source:manifest=Project.SourceManifest.xml archive.xml是软件包提供者内部表示的内容。该文件始终称为archive.xml,而提到manifest.xml的文档是错误的。
我实际上不确定如何使用systeminfo.xml。我不知道如何禁用功能,但我也从未遇到过其属性影响部署的情况。

我成功地通过在.wpp.targets文件中添加自定义目标来删除源清单文件: <Target Name="DeleteSourceManifest" AfterTargets="Package"> <Delete Files="$(PackageSourceManifest)" Condition="Exists('$(PackageSourceManifest)')" /> </Target>据我所知,systeminfo.xml从未被使用过。尽管如此,它生成的信息不正确还是有点烦人的。 - ShadowChaser
2
这是属于“Web Deploy - The missing manual”一书中的信息,清晰简洁。 - Snixtor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接