WebDeploy:合并内容

时间:2016-02-20 14:43:50

标签: deployment msbuild teamcity webdeploy

我有2个版本(在TeamCity中):

使用WebAPI生成网站后端的人。

我用WebDeploy打包该网站:

/p:DeployOnBuild=True /p:PublishProfile="Default" /p:ProfileTransformWebConfigEnabled=False

这为我提供了一个很好的WebDeploy.zip

现在我有了第二个版本,它构建并编译了一个网站前端。

前端和后端由不同的团队开发,因此在不同的时间产生工件。

我希望能够在合并前端的情况下部署后端版本。

现在我有2个选项,要么重建后端,前端依赖于前端(这会创建一个新的不需要的版本),要么是其他东西(这是我真正想要的)。

我希望,在给定Web部署包的情况下,合并前端文件,将网站部署到IIS。

现在我可以手动解压缩webdeploy包并手动重建它。然而,那里的路径是基于它所建立的位置的路径(我无法控制)。

示例:C_C\TeamCity\...blabla...\obj\Release\Package\PackageTmp\Web.config

这使得很难在不解析WebDeploy包的根目录中找到的archive.xml的情况下找到结构。

这是可能的,但理想情况下我想要一个允许我合并的MSBuild命令。进入本网站的目录内容。

问题:

  1. MSDeploy可以实现吗?
  2. 如果无法做到这一点,是否可以更改目录命名以确保WebDeploy包的内容更为直接,以便在我想要注入其他文件时?

1 个答案:

答案 0 :(得分:1)

您可以使用dirPath提供程序将程序包部署到本地目录,添加文件然后重新打包。首先,您需要创建目标清单,因为WebDeploy使用源清单创建包。您可以创建一个" DestManifest.xml"文件包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <dirPath path="c:\repackagewebdeploy" />
  <auto />
  <auto />
</sitemanifest>

然后,您可以调用MSDeploy来解包和重新打包。

msdeploy -verb:sync -source:package=c:\packagePath\package.zip -dest:manifest=[path to destination manifest]
[copy files]
msdeploy -verb:sync -source:dirPath=c:\repackagewebdeploy -dest:package=c:\packagePath\newPackage.zip 

这假设您不需要其他setAcl提供程序。我们通常不需要这些,所以我忽略了它们,但您可以使用清单将它们添加回最终包中,而不是直接使用dirPath。