build pipeline

Table of Contents

file

  1. 提交代码到开发分支:
    在本地构建并通过单元测试之后,可以将代码提交到代码仓库的开发分支中。
  2. 自动构建:
    包括编译、链接、打包,在一些大型项目中,这个过程往往需要几十分钟以上。
  3. 自动代码检查:
    各种语言都有各自的代码静态检查工具,例如C++ 的 CppCheck、CppLint,Java的CheckStyle、PMD、FindBug,Python 的Pylint、Pyflakes、Pycodestyle 等。如果检查出严重的错误,并立即终止构建流水线,检查结果会生成检查报告。
  4. 自动执行单元测试:
    确保这次提交不会造成其他模块的单元测试失败,任何一条单元测试不通过,也会终止构建流水线,我们也会在这个阶段执行一个不依赖于外部环境的API 测试. 测试的结果会生成测试报告。
  5. 自动生成文档:
    利用 Doxygen、Javadoc、Sphinx 之类的自动文档生成工具, 分析代码并生成 API 和帮助文档。
  6. 自动部署在测试环境:
    利用Puppet、Ansible 之类的部署脚本将软件包部署到测试环境,注入预设的配置变量并启动服务。
  7. 自动执行功能测试:
    在测试环境中,自动运行所有需要依赖外部环境的 API 和 E2E(端到端)的测试,如果有一条测试不通过,也会终止构建流水线,自动测试的结果会生成报告。
  8. 将代码合并入主分支:
    这个点可以设置一个批准环节,由产品负责人决定是否立即合并到主分支,如果改动太大,自动化测试覆盖率不够,开发人员信心不足的话,可以暂时不并入主分支,在开发分支添加更多测试。
  9. 自动运行性能测试:
    性能测试分为基准性能指标测试和压力测试,各种压测参数需要事先设定,性能测试会生成性能测试和剖析报告,包括吞吐量(TPS)、最耗时模块和函数,以及对系统资源消耗的各种指标。
  10. 探索性测试:
    指望自动化测试把一切潜在问题找出来往往是不现实的,手工进行一些探索性测试在发布在产线之前是必不可少的。
  11. 自动部署到产品环境上:
    这个环节当然也是需要产品负责人批准的,由产品负责人根据测试报告来决定何时部署到产线上

Comments |0|

Legend *) Required fields are marked
**) You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Category: Uncategorized