【问题标题】:Deploying umbraco with TeamCity使用 TeamCity 部署 umbraco
【发布时间】:2013-11-25 19:51:01
【问题描述】:

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

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

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

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

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

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

任何指针将不胜感激。

谢谢

点开发

【问题讨论】:

    标签: continuous-integration teamcity umbraco


    【解决方案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 文件夹的标准位置。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我的 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 服务器上打开了正确的端口,您可以添加第三个构建步骤并继续部署(如果前两个构建步骤运行正常)。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多