MSDeploy 未在目标位置更新正确路径

MSDeploy Not Updating Correct Path at Destination

我正在尝试在 VSTS 中配置构建和发布管道,以便我可以将构建推送到各种环境。为实现这一点,我正在利用 MSDeploy 的 parameters.xml 文件,并使用 Tokenizer 任务覆盖之后在 SetParameters.xml 文件中设置的标记。

当我部署到站点时,它确实到达了目标计算机并部署到那里,但是路径不正确。它没有复制到我在 parameters.xml 中指定的 Web 应用程序的虚拟目录,而是采用包中的路径并复制(因此,C:\agent_work.. .).

我知道标记器和 parameters.xml 和 SetParameters.xml 的至少一部分正在工作并正确转换连接字符串,因为生成的 web.config 确实具有正确的值,但是IIS Web 应用程序名称参数似乎不起作用。

如果我创建自己的发布配置文件并在 DeployIisAppPath 中对站点名称进行硬编码并改为使用它来打包,我确实使它起作用了。不过,这并不理想,因为我想将网站名称作为参数。

这里是所有相关文件。如果您需要更多信息,请告诉我。提前致谢!

parameters.xml

<parameters>
  <parameter name="IIS Web Application Name"
           description="Please specify the IIS Web Application Name"
           defaultValue="__IISWebApplicationName__">
    <parameterentry  kind="ProviderPath"
                     scope="IisApp"
                     match="@defaultValue">
    </parameterentry>
  </parameter>
</parameters>

VS 解决方案生成任务参数

/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true
/p:PackageLocation=$(build.artifactstagingdirectory) 
/p:AllowUntrustedCertificate=true 
/p:IncludeSetAclProviderOnDestination=False 
/p:DeployOnBuild=true 
/p:AllowUntrustedCertificate=true 
/p:WebPublishMethod=Package 
/p:SkipInvalidConfigurations=true 
/p:DisableAllVSGeneratedMSDeployParameter=true

SetParameters.xml打包后

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="__IISWebApplicationName__" />
</parameters>

发布任务环境变量配置

名称 = IISWebApplicationName

值 = 站点名称

MSDeploy 配置

目标提供商:自动

目标计算机:https://{server}:8172/msdeploy.axd?site=$(IISWebApplicationName)

MSDeploy 命令

msdeploy.exe -verb:sync -source:package='C:\agent\_work\r4\a\{buildName}\drop\{packageName}' -dest:auto,computerName='https://{server}:8172/msdeploy.axd?site=Site Name',userName='xxx',password='xxx',authType='basic',includeAcls='False' -allowUntrusted -setParamFile=C:\path\to\param\file -verbose

您可以使用IIS Web App Deploy任务将Web App部署到IIS,然后您只需直接用变量指定网站名称即可。

  1. Configure Deployment group
  2. 编辑发布定义
  3. 在部署组
  4. 上添加 运行
  5. 添加 IIS Web App Deploy 任务并指定网站名称

另一方面,IIS Web App Deployment Using WinRM extension 中的 WinRM:IIS Web 应用程序部署任务运行良好(无需配置部署组。)