【问题标题】:Development and Production Workflow开发和生产工作流程
【发布时间】:2010-12-05 11:59:14
【问题描述】:

我已经看到网上解决了这个问题的一部分,但我仍然感到困惑,所以我想我应该问问 Stack Overflow 的聪明人。

我们是一家小型初创公司,目前我们从开发 -> 生产 的工作流程涉及 ftp-ing 和仅上传开发代码。

开发代码处于颠覆控制之下——尽管我们没有利用主干/标签/分支,因为我不知道如何最好地使用这种结构。我觉得应该与不需要我复制粘贴文件夹和文件的实时站点无缝集成。

这里有一些细节: - 在 CakePHP + MySQL 上开发 - 在 Media Temple (gs) 举办 - 开发人员同时使用 Mac OS (Coda) 和 Windows (Dreamweaver)

所以我的问题是:如何设置适当的可扩展工作流?

【问题讨论】:

    标签: svn cakephp workflow production


    【解决方案1】:

    我认为要考虑的关键是包含尽可能多的流程和工作流,以提高代码质量并减少部署工作量。关键是在您的代码库安定下来后开始创建其中的一些东西。在一切都在迅速变化的早期,您将花费更多的时间来更新脚本,而不是使用脚本节省的时间。

    我会推荐以下几点:

    1. 创建自动构建脚本。 可以使用许多不同的技术和脚本语言(我更喜欢 Ant)从源代码控制中提取文件、自动增加版本号、添加标签并创建部署包。这可能需要花费大量精力来设置和解开开发人员当前正在执行的任务,但从长远来看,这将获得巨大的回报。它应该将您的开发人员从重复的构建任务中解放出来,让他们专注于解决您的技术问题。如您所知,开发人员会厌倦一遍又一遍地做同样的事情,而当您厌倦时,您就会开始犯错误。

    2. 自动安装。当事物仍处于快速发展阶段时,这是一个边际优势,但从长远来看,它将释放可以更好地用于其他地方的资源。至少,你应该有一个安装包和安装步骤来部署你的代码。

    3. 暂存环境。您可能会争辩说,在您的用户群足够大以至于当您部署代码时生产系统消失时他们开始尖叫之前,这不是必需的。拥有一个允许您测试更改而不会让您的用户群感到不适的系统非常重要。但是,当然,这也需要一些 QA 工作。在部署之前,您肯定需要进行一些测试。开发人员总是认为他们是对的,从来没有错过任何事情,但他们永远不应该被相信。总是有不同的代码路径或一些他们从未想过的新点击排列。

    4. 备份您的 SVN。这应该不言而喻,但我在一家公司工作,我们的源存储库两年多没有备份。您可以通过执行 svndump 进行备份,然后将生成的文件复制到另一个位置。您也可以只备份存储库所在的文件夹,然后在出现问题时恢复。

    【讨论】:

    • 您有关于如何备份 SVN 存储库的链接吗?它就像从服务器复制文件夹一样简单,还是有更多的东西?谢谢!
    • 我喜欢暂存环境的想法,所有测试都可以在其中进行。但这意味着我需要一种自动化的方式让 svn 在 3 个(开发、登台、产品)之间同步。只是想知道这个链接是如何在 svn 上工作的?
    【解决方案2】:

    我过去这样做的一种方法是让生产代码实际上是一个实时颠覆客户端,拉出“生产”分支。

    因此,您在开发分支上照常工作,一旦准备好,您就将副本剪切到生产分支。同步生产服务器,您就可以上线了。如果出现问题,您可以随时重新同步到旧版本。

    对于额外的点,您可以添加一个暂存分支,这样您就可以捕获所有在您的代码中没有发生变化的事情。然后将它们添加到部署脚本中,该脚本将根据需要调整生产系统。

    【讨论】:

    • 这听起来很有趣。但是你是如何连接两个开发和生产分支的呢?即当您说“剪切副本”时,这是什么意思?
    【解决方案3】:

    您的工作流程似乎适合没有 QA 的小型组织。我建议你投入一些资源到

    1) 构建生产版本并制定版本方案,以便您可以准确跟踪生产版本。标记每个版本,以便您可以跟踪它。

    2) 构建安装程序。不要求助于手动复制文件夹,因为您可能会犯错误。安装程序还可以轻松跟踪生产中出现问题的时间。

    3) 在部署之前对生产进行一些 QA。即使是一点点质量检查也有很长的路要走。开发人员不是优秀的测试人员,因为他们可能偏向于程序的“功能”。

    4) 在你真正需要使用分支之前,不要打扰它。只有这样,您需要哪种结构才会变得清晰。颠覆red-book 对如何构建分支有一些想法。

    【讨论】:

    • 您能解释一下“构建安装程序”吗?这会类似于 Capistrano 的目标吗? capify.org/index.php/Capistrano 我们的生产代码和开发代码之间的区别在于 CakePHP 框架中的一些配置和路由文件。目前我只是尽量避免上传这些文件,因为它们在两种环境中都不同。
    • “构建”过程可以是任何适合您环境的过程。例如。我的部署脚本(位于网络服务器上),从我的存储库更新代码,清空 app/tmp/cache 文件夹,设置权限等。对于特定于环境的文件(数据库详细信息、某些配置等)被忽略通过版本控制,我在最初部署时手动编辑这些。
    • Capistrano 非常适合您描述的情况。它将处理将文件从源代码控制系统复制到生产环境。
    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 2015-10-18
    • 1970-01-01
    • 2011-08-24
    • 2015-12-16
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    相关资源
    最近更新 更多