4

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

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

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

以下是一些细节: - 在 CakePHP + MySQL 上开发 - 托管在 Media Temple (gs) - 开发人员同时使用 Mac OS (Coda) 和 Windows (Dreamweaver)

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

4

3 回答 3

3

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

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

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

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

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

于 2009-10-09T22:21:07.940 回答
2

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

所以你像往常一样在开发分支上做你的工作,当你准备好时,你将一个副本剪切到生产分支。同步生产服务器,您就可以上线了。如果出现问题,您可以随时重新同步到旧版本。

对于额外的点,您可以添加一个暂存分支,以便您可以捕获所有在您的代码中更改的内容。然后将它们添加到部署脚本中,该脚本将根据需要调整生产系统。

于 2009-10-09T22:23:37.403 回答
2

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

我会推荐以下几点:

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

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

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

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

于 2009-10-09T22:42:24.410 回答