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,然后您只需直接用变量指定网站名称即可。
- Configure Deployment group
- 编辑发布定义
- 在部署组
上添加 运行
- 添加 IIS Web App Deploy 任务并指定网站名称
另一方面,IIS Web App Deployment Using WinRM extension 中的 WinRM:IIS Web 应用程序部署任务运行良好(无需配置部署组。)
我正在尝试在 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,然后您只需直接用变量指定网站名称即可。
- Configure Deployment group
- 编辑发布定义
- 在部署组 上添加 运行
- 添加 IIS Web App Deploy 任务并指定网站名称
另一方面,IIS Web App Deployment Using WinRM extension 中的 WinRM:IIS Web 应用程序部署任务运行良好(无需配置部署组。)