未从TeamCity部署带有MSBuild的WebDeploy
我正在尝试使用MSDeploy,使用TeamCity将MVC项目部署到服务器上。在powershell中的计算机上执行此操作时,请使用以下命令:未从TeamCity部署带有MSBuild的WebDeploy,msbuild,visual-studio-2012,teamcity,msdeploy,webdeploy,Msbuild,Visual Studio 2012,Teamcity,Msdeploy,Webdeploy,我正在尝试使用MSDeploy,使用TeamCity将MVC项目部署到服务器上。在powershell中的计算机上执行此操作时,请使用以下命令: msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0 /p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true 它构建项目并将其部署到服务器(D
msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true
它构建项目并将其部署到服务器(DevServer发布概要文件中定义的信息)上。输出在末尾显示了一个MSDeployPublish
部分,在该部分中,我看到了从源代码开始Web部署任务…
,然后有行告诉我更新了哪些文件,等等
当我在TeamCity上使用MSBuild构建步骤在同一个文件上使用相同的参数(来自同一个工作目录)运行此操作时,它会构建项目,但不会发布它。相反,它有来自构建过程的常规输出(corecomile、\u copyfilemarkedcopylocal、GetCopyToOutputDirectoryItems、CopyFilesToOutputDirectory),但实际上并不去发布任何内容
我需要对TeamCity中的安装程序进行哪些更改,以使其以与从我的计算机使用MSBuild相同的方式发布和部署
(TeamCity 7.1、MSBuild 4.0、WebDeploy 3.0、Visual Studio 12、IIS 7.Related to)我使用MSBuild.exe打包到zip,使用MSdeploy.exe在单独的步骤中进行部署 要在命令行上部署package.zip文件,请执行以下操作:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" -verb:sync
-source:package="C:\Build\MyAppName.Debug.zip"
-dest:auto,wmsvc=webservername,username=webdeploy,password=*******
-allowUntrusted=true
此命令也值得详细说明:
-动词:sync:使网站从源同步到目标
-source:package=“C:\Build\MyAppName.Debug.zip”:源是一个MSBuild zip文件包
-dest:auto,wmsvc=webservername:使用包文件中的设置部署到服务器。用户帐户是具有权限的操作系统级帐户。指定了主机名,但未指定IIS网站名(该名称以前在项目属性的MSBuild项目文件中指定)
您可以根据配置修改参数。我喜欢这种方式,因为通过单独的步骤,更容易调试问题
使用TeamCity构建步骤和命令行运行程序
更新:
如果您想了解如何使用MSBuild构建ZIP包的示例,请尝试以下操作:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
MyWebApp/MyWebApp/MyWebApp.csproj
/T:Package
/P:Configuration=Debug;PackageLocation="C:\Build\MyWebApp.Debug.zip"
这在您的本地PC和CI服务器上应该同样有效。我们使用TeamCity MSBuild步骤进行Web部署,配置如下:
Build File Path: Server.csproj
Command Line Parameters:
/p:Configuration=%configuration%
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://%web.deploy.server%:8172/MsDeploy.axd
/p:DeployIisAppPath=%web.deploy.site%
/p:AllowUntrustedCertificate=True
/p:Username=
/p:AuthType=NTLM
我们使用集成认证;根据您的计划进行必要的更改。我认为,它的价值在于它从头开始构建一切,而不依赖于预构建的包。从你发布的要点中,我注意到你做了一些数据库发布,我们不使用WebDeploy,因此我无法提供任何指导。希望这能有所帮助。以下是最终对我有效的配置设置:
/p:Configuration=CONFIG-NAME
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://SITE-URL/MsDeployAgentService
/p:username="USERNAME"
/p:password=PASSWORD
/p:AllowUntrustedCertificate=True
/P:CreatePackageOnPublish=True
/p:DeployIisAppPath=SITE-URL
/p:MSDeployPublishMethod=RemoteAgent
/p:IgnoreDeployManagedRuntimeVersion=True
我有完全相同的问题!我已将我使用的解决方案发布在: 基本内容包括:
- 在生成服务器上安装Azure SDK 1.8
- 强制/P:PublishProfileRootFolder值以确保MSBuild可以找到发布配置文件
VisualStudioVersion=11.0
),则会在我的计算机上显示此信息)。您是否能够在服务器上的命令行上本地运行TeamCity安装?您可能会获得额外的输出。无需发布数据库,只需在web.config中使用不同的连接字符串,具体取决于构建配置。通过上述方法(以及可能使用任何WebDeploy?)可以免费获得的东西是,它可以为您执行。出于某种原因,WebDeploy没有在同一解决方案中部署引用项目的dll。我还不得不放弃使用PublishProfile,而是使用上述附加参数。。真可惜。不确定为什么我们不能在此场景中使用PublishProfiles?除了您的修复之外,我还必须添加一个值为11.0的system.VisualStudioVersion参数。我们在项目中混合使用Visual Studio 2012和2013,但只有11.0在TeamCity中工作。如果我将其设置为12.0,则会再次忽略发布配置文件。