使用 TeamCity 部署 umbraco



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

我们刚刚进入与TeamCity的持续集成。我们已经设置了一个团队城市项目,如下所示:

    解决方案生成
  • (生成整个解决方案) - 。Sln 文件
      调试
    • 到开发服务器(在调试配置中生成 .csproj 并使用 MSDeploy 部署到测试服务器)
    • 发布
    • 到生产环境(在发布配置中生成 .csproj,并使用 MSDeploy 部署到生产服务器)

在我们的 Umbraco Visual Studio 项目(这是一个 Web 应用程序,不是标准的 Website 项目类型)中,我们从项目中排除了 umbraco_client 和 umbraco 文件夹,主要是因为它们已经编译并且不需要通过我们的进程重新编译。但是,这两个文件夹都包含在SVN存储库中。

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

所以我的问题归结为"如何在TeamCity构建包中包含文件夹,其中文件夹位于SVN中,但从Visual Studio项目中排除

任何指示将不胜感激。

谢谢

多特德夫

我们一直在使用 TeamCity for 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_DataLogs;App_Datapreview"
/p:IncludeSetAclProviderOnDestination=False
/p:AuthType=NTML /p:UserName=

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

/p:FilesToIncludeForPublish=AllFilesInProjectFolder

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

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

你没有提到 nuget,因此假设你在解决方案中使用 zip 或 web pi 设置 Umbraco,但在生成解决方案时,你仍应该能够使用 msbuild 中列出的目标或添加到 Web 应用程序 .csproj 中。它要求你在 Svn 存储库或构建服务器上的某个位置拥有 Umbraco 和 Umbraco_client 文件夹,以便将其复制进来。

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

希望这有帮助。

我的TeamCity基于Troy Hunt的优秀"You're Deploy it Wrong"系列,这是集成基于Visual Studio的项目和TeamCity的优秀分步指南。 http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity.html

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

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

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

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

最新更新