5

这个问题的答案可能只是标准的错误跟踪软件,如 jira 或fogbugz,但我有点希望那里有人知道我所描述的更好的系统。

我最近的项目需要大量的设置才能进入我可以实际开始编码部分的位置。例如:

  • 在我启动 SSH 之前,需要执行一系列复杂的公司内部命令。
  • 确保进行外部调用的任何第三方类都设置了内部公司代理选项 - 同时还确保在生产环境中安装时不会设置这些设置
  • 确保在尝试安装 pear 包之前设置了代理。
  • 其他类似的事情,主要涉及内部 IT 安全并使其与模块和包一起使用。

就个人而言,这些事情都不是什么大不了的事,我已经给自己写了很多关于我所做的确切命令和补充的笔记,但它们目前在一个普通的文本文档中,很难记住确切的位置是什么我需要的很远。我们还有几名新员工即将开始工作,我宁愿给他们一个更轻松的时间来设置他们的编程环境。

就像我说的,它们并不完全是“编程怪癖”,而只是在认真开始编程之前不断的摆弄。关于为我自己和后代的理智记录这些事情的最佳方式有什么想法吗?

4

4 回答 4

7

我们使用 wiki 来托管这样的说明。让每个人都知道一个可以访问信息的公共位置并在步骤发生变化时保持最新状态变得容易。

如果有部分可以自动化,那是个好主意,但如果需要非标准设置,我们总是为开发环境设置创建一个页面,而有人必须重复。

于 2010-05-01T02:56:34.933 回答
6

将这些任务中的每一个封装成某种脚本(bash、python、applescript、autohotkey,任何适合该任务的东西)。

然后创建各种元脚本来调用它们。例如“set_up_everything.bash”。

本质上:与其花时间写下你需要做的所有事情,不如花时间编写一个脚本/程序来完成你需要做的所有事情。

如果脚本写得很干净,它们也会成为文档的最终形式(就像任何程序一样)。

编辑:

重读您的问题,这也有力地解决了您关于帮助新团队成员跟上进度的观点:让他们运行脚本,然后砰!如果脚本不起作用(由于环境的差异等),它们仍然提供了一个很好的逐步说明需要执行的操作和命令。

于 2010-05-01T00:01:16.683 回答
2

编写脚本来自动执行此操作。花费在这方面的时间会一次又一次地收回成本——您将每天节省时间,并节省将新开发人员带入团队的时间。

对于这些工具,您可能需要一个独立于代码库的单独“bin”项目。从较简单的任务开始,然后逐步填写所有部分。可以使用正确的令牌对安全地编写 SSH 脚本。capistrano 或 chef 等工具非常受欢迎。方法是一次处理一小块,而目标——也许你不会实现——是完全自动化的。

几年前,这听起来像是疯狂的谈话。但是这些天来,我们的每个项目都可以毫不费力地签出并运行。(副作用是持续集成的设置很简单。)甚至可以使用单个按钮从 AWS 预置服务器、安装和操作系统、所有需要的工具、从 github 签出我们的应用程序并部署它。前几天刚做的!有信心!

于 2010-05-06T06:42:18.427 回答
1

计划 A:通过建立一个您可以控制的适当测试环境来消除对外部系统的依赖。这可能涉及设置虚拟数据库、模拟 SOAP 服务器 (SoapUI Mockservices) 等。您应该尝试将所有外部设备视为黑匣子,您可以使用这些模拟/虚拟/存根服务进行控制,只需最少的重新配置(例如交换 .ini 文件)。
理想情况下,它将是一个插入式环境“设备”,例如包含所需的任何数据库、可执行文件等的目录 zip 文件。也许在闪存驱动器上。

不,我也不在这样一个乌托邦式的环境中生活和工作!但正如我所设想的那样,这是应该如何完成的。

计划 B:假设您不能执行上述操作,那么您将不得不针对“实时”网络和服务器等外部设备进行测试。即,您的数据库查询针对其他人的测试数据库服务器运行,并且您希望其中的数据与您上次测试时的数据相同。因此,您需要至少有一组可以运行的测试,以确保外部环境与上次相同。可能是昨天,上个月,去年。假设您需要从 HR 测试数据库中检索员工记录。好的,所以有一个测试应用程序可以确保它可以连接、登录、查询记录,并将结果集与“最后一次已知的良好”结果集进行比较。现在你可以走了。如果你还没有走那么远,请完成它(修复你的登录名、端点、主机名、代理、设置帐户,升级驱动程序等。)在您担心编码/测试/演示系统的其余部分之前。这将节省大量时间,并且应该防止新开发人员因无用而在 3 天后放弃并退出。

更新:无论您做什么,都将其检查到版本控制中,以便您可以返回、比较等。

于 2010-05-05T15:39:10.820 回答