我试图在VSTS中配置构建和发布管道,以便我可以将构建推送到各种环境。为实现此目的,我将利用parameters.xml文件进行MSDeploy,并使用Tokenizer任务覆盖之后在SetParameters.xml文件中设置的标记。
当我部署到站点时,它确实到达目标计算机并在那里部署,但路径不正确。它不是复制到我在parameters.xml中指定的Web应用程序的虚拟目录,而是采用包中的路径并复制它(因此,C:\ agent_work ...)。 / p>
我知道tokenizer和至少部分parameters.xml和SetParameters.xml正在工作并正确转换连接字符串,因为生成的web.config确实具有正确的值,但是IIS Web应用程序名称参数不是&#39 ;似乎工作正常。
如果我创建自己的发布配置文件并在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>
发布任务环境变量配置
Name = IISWebApplicationName
值=网站名称
MSDeploy配置
目标提供商:自动
目标计算机:https:// {server}:8172 / msdeploy.axd?site = $(IISWebApplicationName)
MSDeploy Commmand
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
答案 0 :(得分:0)
您可以使用IIS Web App Deploy任务将Web应用程序部署到IIS,然后您只需要直接指定带有变量的网站名称。
另一方面,IIS Web App Deployment Using WinRM extension中的WinRM:IIS Web App部署任务工作正常(不需要配置部署组。)