7

我正在考虑一个列表,我可以将其推荐给其他开发人员,例如:

  1. 一个构建脚本,例如makefile,将构建和测试整个项目
  2. 构建系统所需的所有组件都需要源代码控制

有人有这样的清单吗?按优先顺序?


更新 - 添加了一些仅供参考的细节

有问题的系统由 C++ 和 makefile、Java 和导致 WAR 的 ant 以及 powerbuilder 和 C# gui 组件组成。所有代码都是强制的。

所以我正在寻找通用以及特定语言的最佳实践。

4

8 回答 8

7

对我来说,#1 规则是这样的:

主分支是神圣的——它必须始终是可构建的,能够通过 BVT,并且基本上是可用的。

任何允许进入导致构建或 BVT 中断的主分支的代码都会暴露过程中的错误。该过程应允许伙伴构建/测试单个分支系统,或要求子分支在合并到主分支或其他此类保护措施之前构建并通过 BVT。

于 2009-04-14T21:26:52.580 回答
3

查看软件配置管理中的高级最佳实践

于 2009-04-15T17:39:32.257 回答
1

这在很大程度上取决于您在什么环境中构建?

  • 是 C/MakeFile 吗?
  • 是 Java/JUnit/Ant 吗?
  • 是 .NET/NUnit/NAnt 吗?
  • 是 .NET/MSUnit/MSBuild 吗?
  • 是鲁比吗……
  • 是蟒蛇吗...
  • 是PHP吗

这些中的每一个在方法和设置上都不同。因此,在您获得帮助之前,我们需要了解您的设置。

于 2009-04-14T21:27:42.577 回答
1

我的第一件物品:

  • 经常更新,经常提交,

或者,正如 Jeff 所说:提前入住,经常入住

于 2009-04-14T21:31:36.983 回答
1

系统必须自己构建,自己测试,自己下载+构建依赖。我有一个 makefile 下载、构建和部署运行时环境,该环境已为我的主干版本“认证”。这个 makefile 也被提交到存储库中。

请记住提交另一个非常重要且最容易被忽视的事情(一共三个):

  • 创建数据库布局的 SQL 代码(在上面放一个版本!)。
  • 调出数据库布局版本的 SQL 代码(升级)
  • 降低数据库布局版本的 SQL 代码(降级)
于 2009-04-14T22:42:52.663 回答
0

作为一名 SCM 经理,我可以在这个问题上给您的最佳答案是“这取决于”。您的列表和列表中项目的重要性顺序将取决于您的项目要求、您使用的语言和开发人员级别。

在您放在一起的任何列表中,您可能想要考虑对我很重要(或 #1)的一件事是,您的工具的主干或主分支受到非常严格的控制,只有极少数人有权导入或提交更改它。这将在发布时省去很多麻烦。

可以在您放在一起的任何列表中的项目是:

  • 何时办理登机手续(每天、每周、更频繁、更少)
  • 构建完成时(每天、每周等)
  • 使用双存储库(工程与生产)
  • 允许存储库中的二进制文件
  • 允许存储库中的第三方软件
  • 构建存储库所需的所有项目
  • 当导入或提交到主干时
  • 使用一个文件导出和构建
  • 允许签入有/没有错误报告信息
  • 执行签到评论标准

该列表可以继续,具体取决于您的具体要求,但我认为您对这里的内容有所了解。

于 2009-04-14T22:08:38.797 回答
0

如果您通过了“乔尔测试”中的这些问题,那么您应该走在正确的道路上:

你使用源代码控制吗?
你做日常构建吗?
你有错误数据库吗?
在编写新代码之前你会修复错误吗?

我的 #1 是:您可以一步构建吗?

乔尔测试

于 2009-04-14T21:34:15.680 回答
0

“获取最新”和“构建”的整个过程应该是顺畅、轻松、快速和可靠的。

如果不是,开发人员往往会跳过获取最新版本并继续处理他们过时的副本,这是您要避免的事情。

这或多或少是迈克尔所说的——但我想强调的是,除了分支是神圣和稳定的——整个过程应该快速而简单

有点像 Google 的理念,即下载\安装应该快速简单

于 2009-04-15T01:53:12.610 回答