4

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

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

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

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

我们遇到的问题是因为这两个文件夹被排除在 Visual Studio 项目中,TeamCity 没有部署它们。

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

任何指针将不胜感激。

谢谢

点开发

4

3 回答 3

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 尝试部署的确切内容进行一些控制

于 2014-04-15T22:44:23.597 回答
1

我建议使用类似于此博客文章中描述的方法: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 文件夹的标准位置。

希望这可以帮助。

于 2013-11-13T18:39:11.777 回答
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 中进行测试。

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

于 2013-11-15T09:19:40.570 回答