我有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命令,该命令允许我将目录内容“合并”到该网站中。

问题:

  • MSDeploy是否可能?
  • 如果无法实现,是否可以在WebDeploy软件包的站点内更改目录命名,以便在我想注入(inject)其他文件时更直观一些?
  • 最佳答案

    您可以使用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进行拉取。

    关于deployment - WebDeploy:合并内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35524799/

    10-13 09:31