1

我工作的公司编写了很多小的 Perl 和 Bash 脚本来将数据处理成可用于我们软件的东西。像任何代码一样,这些脚本可以更改。我为他们提供 CVS 是因为文件版本控制而不是存储库版本控制。无论如何,我正在考虑一个部署工具来让脚本从开发到生产。生产服务器将拥有自己的简单版本控制系统,如果其中一个脚本的 md5 总和与数据库中的不匹配,它将不会运行该脚本并向相关方发送电子邮件。

我想强制程序员部署脚本的最新 CVS 版本。如果它不是最新的,它应该死掉一条消息,告诉他们必须先检查他们的版本。我意识到在某些情况下您可能需要部署旧文件。这些将是例外,可以这样处理。

最好的方法是什么?它就像做'cvs diff'一样简单吗?

4

2 回答 2

1

如果您要编写某种分发脚本,它应该相对简单

1) 脚本应提交到您的 cvs 存储库中

2)我建议从您的makefile(或您使用的任何构建系统)中调用脚本,如下所示

make dist

dist 规则将调用您的脚本。
3) 脚本将执行

 cvs up -An 

例如,通过将输出重定向到 grep 来分析输出以查找 M 或 C 或 A 或 R 状态。

grep -c ^[MCAR] 

如果 count > 0 你有问题。

4)如果发现上述之一失败,则构建脚本

5)如果不创建 tar 或您正在使用的任何其他形式的分发

要部署旧版本,您可以将 -A 作为参数默认设置为 -A 并被覆盖,例如被 shell 变量覆盖为 -r tag-3.14.4 。

于 2008-11-03T20:46:39.787 回答
0

我研究了一个进行部署的内部工具。它是为企业设计的(并符合 SOX 法规),因此它依赖于批准来部署代码。

因此,我们部署了开发人员在请求中指定的代码版本,而不是最新版本。原因是开发人员可能需要进行更改,进行测试,同时进行其他更改。这些较新的更改尚未经过测试 (QA) 阶段,但开发人员的原始版本已完成,因此我们将部署该版本。

综上所述,我会以可以指定版本号的方式设计它,如果没有版本号,则推送最新的。

于 2008-11-03T21:03:17.710 回答