【问题标题】:Best way to make sure correct version of file is deployed?确保部署正确版本的文件的最佳方法?
【发布时间】:2008-11-03 20:29:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: deployment cvs versioning


    【解决方案1】:

    如果你要写一些分发脚本,应该比较简单

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

    2) 我建议从您的 makefile(或您使用的任何构建系统)中调用脚本 像这样的

    make dist
    

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

     cvs up -An 
    

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

    grep -c ^[MCAR] 
    

    如果 count > 0 你有问题。

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

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

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

    【讨论】:

    • 使用 '^[MARC] ' 防止文件名中的大写字符导致误报...
    【解决方案2】:

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

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

    说了这么多,我会设计成可以指定版本号,如果没有版本号就推送最新的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 2019-02-12
      相关资源
      最近更新 更多