美文网首页配置管理软件研发
配置管理之构建管理(2)

配置管理之构建管理(2)

作者: 研发效能D_laofo | 来源:发表于2017-04-27 09:42 被阅读0次

易理解的构建脚本

为什么要把构建脚本单拿出来重点说?因为我发现在工作中,尤其是存活时间长的公司,基本上都有一个研发都不愿意触碰的构建脚本。这些脚本一般有以下特点

  • 语法晦涩诡异,各种暗魔法,各种黑科技
  • 所做的事情名目繁多,令人抓头
  • 脚本的参数一大串,只有少数人知道代表着什么,怎么传
  • 脚本里都是写死的变量、地址、用户信息
  • 通常都是一个有着 N 多功能的大文件

研发遇到这样的脚本,第一反应就是:“嗯,好的,我本地已经编译通过,代码提交到代码库了。剩下的事情就交给你们配置管理了。”然后一边叼着烟卷、喝着咖啡当大爷去了。只有配置管理苦逼兮兮的把代码获取下来,然后用构建脚本跑。

构建过程不要求有多么完备,所有的功能都塞到一个文件里去完成。看得人是会很累的。

构建脚本模块化

如何写好一个易理解的构建脚本呢?

  • 首先写最基本的编译部分,这部分不依赖任何其它额外的东西,运行这部分就是为了纯粹的编译。之所以就是可以让研发人员在本地也可以自己运行来编译。如果他本地都编译不成功,提交到构建服务器上也是跑不过的。先让他们自我审查一下。
  • 把构建分成几步,分别由不同的脚本完成
    • 建立工作空间(或清理工作空间)
    • 环境初始化
    • 获取代码
    • 编译、链接
    • 打包
    • 上传
    • 清理
    • md5,数字签名(可选)
  • 脚本要有明确的参数以及含义说明
  • 构建脚本的质量。构建脚本要有明确的版本发布概念、以及相应质量保证。我们经常看到研发人员的业务代码有很多的质量保证措施,包括代码审查,风格检查、代码安全扫描等等,唯独构建脚本没有。

都在说 Devops,很多时候都是 ops 多一些, Dev 少一点。

构建脚本配置化

构建脚本的大多数值应都是固定的,降低不可配置的部分。如果有不可配置的部分也要单独出来,这样一旦出错也容易排查。
之所以很多研发不愿意触碰构建脚本,就是构建脚本太复杂了,很多他们不需要的功能都糅杂到了一起,研发很难在很短的时间内找到一个理解的途径,一个快速运行的方法。从这一点上说 xml 和 yml 格式的构建脚本是最好的。

构建脚本语言

dirty but quick - shell

为什么大多数构建脚本都是解释型语言写的? 这是因为在项目建立之初,需要一种快速实现项目编译的方法,三两行的 shell 就可以完成,谁还会去写个 C 语言的?随着工程规模变大,要做的事情也越来越多,随之三两行的构建脚本,变成了一堆三两行的构建脚本。

  • 脚本语言上手容易。写个简单的构建脚本,几分钟就可以弄出个原型来。C 语言呢?估计还在 include 各种库。
  • 容易改变且改变后不需要编译。解释型语言在规模不是很大的时候容易调试。出现问题直接修改,修改完毕后立刻可以运行。不需要编译一遍。如果编译构建脚本?那是不是还必须为这些构建脚本弄台专有的服务器?
  • 跨平台,容易部署。对于 Linux 服务器,基本上写了一个 shell 脚本,分发到服务器上就可以执行;Windows 上可以看看 Powershell 和 Python,不推荐写 bat 脚本。如果是 java 写的构建脚本,是不是每台构建服务器上还得需要装个 jre?有人说变编译型语言执行起来速度快啊。说实话,节约的那点时间,真的无法比拟脚本语言带来的各种好处。

构建系统

仅仅有一个简单的构建脚本是不够的,就像上面列出来的,还需要做很多编译之外的事情,比如环境设置、打包、上传、操作数据库等等。我们还需要一个构建系统。没有人来帮忙? 那只能配置管理团队自己撸了。如果真的现实情况如此,那么能快速实现的 Ruby, Python 则是不错的选择。

小结

写一个简单明了容易理解且功能丰富各种大而全的构建脚本是不可能完成的。但我们可以把各种功能分拆的相对清晰一点、通过各种模块来完成,这点还是可以做到的。

如果要真的需要推荐些工具和语言,那么我觉得 python 在各个平台各种语言环境下都是需要的。 Linux 还需要 shell; Windows 平台使用微软推荐的做法就可以,选择其它的反而揪心。

相关文章

  • 配置管理之构建管理(2)

    易理解的构建脚本 为什么要把构建脚本单拿出来重点说?因为我发现在工作中,尤其是存活时间长的公司,基本上都有一个研发...

  • #☕️后端# 3. Maven

    Maven 项目管理工具 构建项目(Builds) 依赖管理(Dependencies) 配置管理(SCMs) 发...

  • 配置管理之构建管理(1)

    变更管理很多都是流程、授权相关的事,配置管理从中可以做一些事情,但是我个人觉得构建管理才是最有意思的。 配置管理怎...

  • 配置管理之构建管理(4)

    怎么能提高研发的效率呢?快速的编译构建出产品绝对是最有效的措施之一。 急速的构建速度 再快的构建速度研发人员都不嫌...

  • 配置管理之构建管理(3)

    插播个今天刚发生的事。某神在没数据备份,运维只做了个快照的情况下直接操作线上 gitlab 服务器,结果把某个目录...

  • 配置管理之构建管理(5)

    迅速解决构建问题 - 总有被修改的构建环境- 总会含有 bug 的脚本- 再好的硬盘也会遇到无法读写- 再好的内存...

  • 项目管理之配置管理

    1.配置管理的概念 2.配置管理的功能 3.典型的配置项有哪些 4.如何进行配置管理计划 5.如何执行配置管理过程...

  • 配置管理员

    负责在项目整个生命周期进行配置管理活动,具体有: 1.编写配置管理计划; 2.建立和维护配置管理系统; 3.建立和...

  • 配置管理之发布管理(2)

    用一个不可变、易识别的 ID 标识可发布版本 可发布版本的标识不可变且易识别很重要。易识别是只说的时候好指代,看的...

  • 配置管理之部署管理(2)

    回滚过程要迅速、禁得起考验这个怎么讲?就是我随时都可以轻松地回滚到某个版本。这里有这么几点要把握。任性。只要我发现...

网友评论

    本文标题:配置管理之构建管理(2)

    本文链接:https://www.haomeiwen.com/subject/isnwzttx.html