【问题标题】:How do I manage development and deployment of my website as part of a group?作为组的一部分,我如何管理我的网站的开发和部署?
【发布时间】:2011-04-15 16:42:33
【问题描述】:

我一直在这里和那里阅读这个网站,看起来你们有一个很棒的社区。​​p>

就我的背景而言,我是一名大学二年级学生,熟悉 SQL、C++、Visual Basic 和一些 PHP。我的一个暑期学校项目涉及构建一个 Web 应用程序,该应用程序允许用户通过 Internet 登录并安排特定的时间段。通常,我是唯一一个参与项目的人,但在这种情况下,我将成为团队的一员。由于我们都是团队工作的新手,所以我想为我的团队设置源代码控制,这样我们就不会在某个地方都在共享驱动器上工作。此外,我想确保我们所有人都能够在托管我们网站实例的某种开发服务器中测试我们的更改。

我的实际问题是关于我们应该用来实现这一目标的工具集。作为一个团队,我们最熟悉 PHP 和 MySQL,因此我们最终将其用于代码和数据库。我过去曾将 SVN 用于我自己的个人用途,但我的小组成员对源代码控制不是很熟悉。我们可能会坚持使用 Excel 等简单的东西来进行项目管理和错误跟踪。理想情况下,我们希望这些工具是免费和开源的。

作为一个团队,我们应该如何管理实际应用程序的构建?是否有我可以使用的方法允许我们中的任何人将文件移动到我们的开发机器并跟踪是谁做的,这样我们就不会最终覆盖彼此的更改?如果这是不可能的,我们中的一个人将编写一些脚本来处理它——但我想避免基本上构建一个单独的软件应用程序,它只会用于管理我们的项目。我预见的另一个问题是更新在开发机器上运行的数据库。我们四个人之间有什么标准化的方法可以用来管理我们的 SQL 脚本吗?

我不希望这里有一个非常冗长的答案(毕竟,这是我们的项目!),但任何有用的提示将不胜感激。一旦我从假期回来,我期待着开始!谢谢!

【问题讨论】:

    标签: php mysql svn deployment


    【解决方案1】:

    我建议您的团队使用源代码控制来同步您的代码。您可以设置自己的服务器,也可以只使用免费提供程序,例如 githubGoogle codebitbucket

    如果您决定使用其中一个网站,一个不错的功能是它们还提供免费的问题跟踪,因此您可以使用它来代替 Excel。

    管理 SQL 脚本的最佳方法是将它们分解为单独的文件,并将它们置于源代码控制之下。您可以创建.sql 文件,或使用工具来管理这些更改 - 例如,查看Ruby on Rails' Migrations。这可能需要一些努力来设置,但是如果您正在处理任何规模的项目,您稍后会感谢自己...

    【讨论】:

      【解决方案2】:
      1. 制定一个计划,如果只有你一个人,你会怎么做。
      2. 将计划拆分为大约需要 3-4 小时才能完成的任务。确保每项任务都有一个可衡量的目标。
      3. 分配任务。如果可能,请尝试对它们进行排序,以最大限度地提高开发人员的效率。
      4. 教他们使用源代码管理。向他们解释他们将在几年后使用这个(可能不是 svn,而是 SOMETHING),所以他们现在不妨学习一下。此外,这将有助于他们以后进行的每个小组项目。
      5. 制作用于构建和运行测试的脚本。还要编写您的部署脚本。这将确保您拥有与测试相同的机制,这会增加测试中发现的缺陷数量。 (这与让它们存在但在测试中未发现相反。)
      6. 您提到了更新开发数据库。经常在现场刷新时转储开发数据库是完全合理的。您可能想要制作 3 个环境。开发、分期和生产。开发数据库将包含伪造的测试数据。暂存数据库会有一个 live 的副本(最近可能在几天内。)当然 live 就是 live。
      7. Excel 可以作为“错误数据库”正常工作。考虑将其放入您操纵和提交的源代码控制中。这将使您对一段时间内发生的事情有一个很好的了解,并且您可以更快地纠正错误。

      【讨论】:

      • 我刚刚意识到...这个列表看起来与 Joel 测试惊人地相似。
      【解决方案3】:

      就源代码/版本控制而言,我建议使用颠覆。他们可能会使用一些 GUI 工具,甚至是 webDAV 来访问 SVN。这将允许用户协作编辑文件,并为您提供有关谁编辑了什么、何时以及为什么编辑的详细信息……SVN 在合并碰巧同时保存的文件方面也做得很好。

      这不是最简单的概念,但一旦你开始跑步,它就不是很复杂。

      我建议大家阅读第一章来自:http://svnbook.red-bean.com/en/1.5/

      他们应该对正在发生的事情有一个很好的了解。

      我也很想知道人们对数据库的看法

      【讨论】:

        【解决方案4】:

        作为一个团队,我们应该如何管理实际应用程序的构建?有没有我可以使用的方法,让我们中的任何人都可以将文件移动到我们的开发机器并跟踪谁做了这件事,这样我们就不会最终覆盖彼此的更改?

        听起来您正在寻找build management。在 PHP 的情况下,真正的“构建”就像源文件的集合一样简单,因为该语言是被解释的;没有编译。

        碰巧我是BuildMaster 的开发人员之一,该工具基本上可以解决您在问题中列出的所有问题......而且听起来它在您的情况下在社区下也是免费的版许可证。我将尝试解决您的一些个人痛点以及如何使用 BuildMaster 作为解决方案。

        源代码管理

        按照其他人的建议,您必须使用它。部署的诀窍是设置某种形式的continuous integration,这样每次有人签入时,都会创建一个新的“构建”。在 BuildMaster 中,您可以为所需的任何源代码控制提供程序进行设置。

        问题/错误跟踪

        Excel 可以,但不是最佳解决方案。您可以使用大量免费的问题跟踪工具来管理您的错误和功能。使用 BuildMaster,您可以通过版本号将您的错误和功能列表与应用程序链接,以便您可以随时在工具中查看它们。如果需要,它还可以自动修改问题状态并添加描述。

        部署

        使用 BuildMaster,您可以为您的开发环境创建自动化部署计划,例如:

        1. 获取最新源代码
        2. 创建工件
        3. 将文件复制到开发机器
        4. 部署配置文件
        5. 更新数据库

        最好的部分是,一旦您为其他环境设置了这些(glowcoder 的第 6 点),推送所有代码和数据库更新就像单击按钮一样简单。

        我预见到的另一个问题是更新在开发机器上运行的数据库。我们四个人之间有什么标准化的方法可以用来管理我们的 SQL 脚本吗?

        数据库更新

        毫不奇怪,BuildMaster 也使用更改脚本模块来处理这些问题。当您的团队成员创建脚本(例如ALTER TABLE ADD [Blah] INT NOT NULL)时,他可以将其上传到 BuildMaster,然后在您创建的任何环境中运行它。

        最好的部分是您可以在自动化部署中添加一个步骤,而无需再担心它。正如贾斯汀所提到的,您可以将.sql 文件用于您的目标代码(存储过程、视图、触发器等),并在每次构建时执行这些文件,因为它们本质上是代码。您可以将它们保留在源代码管理中。

        配置文件

        您可能忽略(但不可避免地会遇到)所有这些方面的一个方面是处理配置文件。使用 PHP,您可能有一个 .htaccess 文件、一个 php.ini 文件、一个 prepend.php 或滚动您自己的自定义配置文件。由于根据定义,配置文件需要在您的个人计算机和开发计算机之间进行更改,因此如果不进行一些黑客攻击,从源代码管理中获取它们是不必要的:

        if (DEV) {
            // do one thing
        }
        else if (PROD) {
            // do another
        }
        

        使用 BuildMaster,您可以模板化配置文件并将它们与环境相关联,以便自动部署它们。它还将为您保留更改历史记录。

        自动化测试

        如果您想要完整的 ALM 效果,您可以在自动构建期间自动对您的代码进行单元测试,并在任何失败时通知您,以便您尽快知道某些内容已损坏。


        对“冗长”的回复表示歉意,但我觉得通过观察未来可能遇到的问题,您已经领先于游戏,并且真的相信 BuildMaster 将使您的团队的所有这些部署工作变得简单这样您就可以专注于有趣的部分,编码!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-28
          • 2013-03-14
          相关资源
          最近更新 更多