使用TeamCity部署umbraco

时间:2013-11-13 09:23:30

标签: continuous-integration teamcity umbraco

Stack上的第一篇文章,请温柔!

我们正在进入与TeamCity的持续集成。我们已经设置了一个类似的TeamCity项目:

  • 解决方案构建(构建整个解决方案) - .Sln文件
    • 调试到Dev Server(在Debug配置中构建.csproj并使用MSDeploy部署到测试服务器)
    • 发布到生产(在发布配置中构建.csproj并使用MSDeploy部署到生产服务器)

在我们一把umbraco Visual Studio项目(这是一个Web应用程序不标准的网站项目类型)我们从计划中排除的umbraco_client和一把umbraco文件夹,主要是因为他们已经被编译并且不需要重新编译通过我们的过程。但是这两个文件夹都包含在SVN仓库中。

我们遇到的问题是,因为这两个文件夹是从Visual Studio项目中排除的,所以TeamCity不会部署它们。

所以我的问题归结为“你如何在SVC中包含文件夹,文件夹在SVN中,但是从Visual Studio项目中排除?”。

任何指针都会非常感激。

由于

dotdev

3 个答案:

答案 0 :(得分:2)

我们一直在使用TeamCity作为umbraco。这是我们最近在内部开发服务器上所做的事情:

/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=OurDevServer/msdeployagentservice
/p:AllowUntrustedCertificate=True
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=umbraco_site
/p:IgnoreDeployManagedRuntimeVersion=True
/p:FilesToIncludeForPublish=AllFilesInProjectFolder
/p:SkipExtraFilesOnServer=True
/p:ExcludeFoldersFromDeployment="media;App_Data\Logs;App_Data\preview"
/p:IncludeSetAclProviderOnDestination=False
/p:AuthType=NTML /p:UserName=

他们解决您遇到的问题的关键是

/p:FilesToIncludeForPublish=AllFilesInProjectFolder

默认情况下,它设置为" AllFilesInProject"。将FilesToIncludeForPublish与ExcludeFoldersFromDeployment结合使用可以让您对TeamCity尝试部署的内容进行一些控制

答案 1 :(得分:1)

我建议使用类似于此博客文章中描述的方法:http://blog.iqit.dk/2013/11/using-package-restore-in-umbraco-projects

你没有提到nuget,所以假设你使用zip或web pi在你的解决方案中设置Umbraco,但你仍然可以使用msbuild中列出的目标或者在构建你的web应用程序时添加到web应用程序.csproj解。它需要在Svn仓库或构建服务器上的某处安装Umbraco和Umbraco_client文件夹才能将其复制。

作为替代方案,我还建议您下载UmbracoCms nuget,因为它包含msdeploy管道的扩展,其中包含msdeploy zip包中的两个提到的文件夹。但同样也是基于nuget安装,因此是Umbraco文件夹的标准位置。

希望这有帮助。

答案 2 :(得分:0)

我的TeamCity构建基于Troy Hunt的优秀“你正在部署它错误”系列 - 这是一个很好的一步一步的指南,用于集成基于Visual Studio的项目和TeamCity。 http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity.html

从SVN中排除umbraco和umbraco_client文件夹;复杂的Umbraco构建可能会将Umbraco文件夹中的更改更改为默认构建,例如添加Umbraco事件处理程序,添加新的Umbraco部分,更改后台选项卡。我不认为umbraco_client会改变,除非你改变富文本编辑器等等 - 但这是可能的。所以我不确定排除这些特定文件夹是否正确。通常也会讨论排除媒体文件夹 - 但如果一切都在那里,它确实使TeamCity配置更简单。

但要回答您的问题,您可以将它们从构建中排除并将它们复制到构建服务器上;然后添加一个“命令行”运行器构建步骤,只需在构建步骤开始之前将它们复制回原位。

我通常会添加一个源控件更改步骤来触发重建,并在TeamCity中为Umbraco项目创建两个构建步骤。一个是'Visual Studio(sln)'运行器,用于检查sln文件是否正确设置了每个引用和第三方产品(这应该消除'它适用于我的机器'问题);第二个是复制csproj构建过程的'MSBuild'运行器。使用具有正确权限的第二个构建步骤(如果您正在部署的计算机上打开端口,或者您正在部署到与您相同的计算机上),则可以在Visual Studio或DOS中对此进行测试。 p>

这两个构建步骤应该能够部署到登台服务器上的IIS网站;如果在您的实时或UAT服务器上打开了正确的端口,则可以添加第三个构建步骤并向前部署(如果前两个构建步骤正常运行)。