[ 翻译 ] 持续集成(三)最佳实践

引言 这是持续集成系列的第三篇。在这篇文章里,我们将介绍实现一个CI流程的一些最佳实践。笔者也将会根据自己的行业经验介绍一些真实世界里的提醒和警告。 快速回放:在本系列的第一篇里,我们介绍了CI的基本概念以及它和敏捷开发及DevOps团队文化的关联。在第二篇里,我们介绍了CI服务器的概念以及它是如何将各种实现一个CI流程的行业标准实践无缝整合到一起。 如果你还没有读过前面的文章的话,笔者强烈建议在继续阅读本文之前先翻阅一下! Martin Fowler,在他的CI白皮书里提到了一些应当成为任何CI设定一部分的关键实践。这些建议多年来已然成为"这样"一组持续集成的最佳实践。同一主题的维基百科页面则对外展示了Martin Fowler所阐述的那些原则的本质。 下面,笔者将以自己个人的视角和大家一…

Read More

[ 翻译 ] 持续集成(二)CI服务器 & 工具集

【编者的话】这是持续集成系列的第二篇,在本文中,作者介绍了CI流程的具体实现。 引言 在持续集成(CI)系列的前面一篇文章里,我们关注了CI的基本概念,它是如何帮助企业减少集成软件时的错误,采用它带来的好处和遇到的难点,以及最后,它是如何助力敏捷开发和DevOps团队文化的推行。 我们还讨论了CI落地到开发流程最常用的一些方式,最终能够带来软件质量上的提高,更快的市场交付,更快的反馈周期以及更低的开发成本。 如果你还没有读过前面一篇文章的话,不妨在继续阅读本文之前先翻阅一下! 在本文中,我们会介绍到一些工具,它们将有助于为组织实现一个强大并有价值的CI流程。 持续集成服务器 实现一个CI流程的唯一必要条件便是得有一个自动构建系统。 然而,实际上,除了自动构建系统外,安装和配置一个“CI服务器…

Read More

[ 翻译 ] 持续集成(一):基础篇

引言 持续集成,简称CI,是一项由Grady Booch提出的技术,它鼓励开发者们持续不断地将他们的代码合并到主干源码仓库。 这些'合并'或者'提交',每一次并入到仓库通常都伴随着执行一系列的自动化任务:代码的编译,单元测试和集成测试的执行,评判代码质量是否下降的静态代码质量分析等等。 这些自动化任务有助于验证新代码的合理性,并分辨出新代码是否会造成任何破坏,例如,集成方面是否有遇到问题?最重要的是,开发者们可以在提交代码变更之后快速及时地收到这一反馈。 拥有CI设施和流程被视为是绝大多数现代软件公司的一个基本要求 —— 无论组织是否采用敏捷方法,DevOps,或者两者兼而有之。 由于能够为开发者和客户两者带来可观的收益,CI已然成为任何软件开发流程里的必要部分。这些可以看到的收益包括软件质…

Read More

[ 三年后的杂谈 ] 测试之Mock

引言 笔者最近开始补全测试方面的一些基础知识,由于也算是个人职业技能建设的一部分,权且也算作"三年小结"系列的一篇罢。 TIPS:测试领域的水非常深,本人只是班门弄斧,欢迎测试领域的大佬们拍砖~ Mock why mock 在软件测试的领域里,单元测试被视为一个项目代码覆盖率的重要衡量指标。我们在执行单元测试时,往往需要测试和关注的是自身组件代码的稳定性,而非外界依赖\服务的交互(这块的测试放到了集成测试的部分),也因此产生了伪造调用依赖/服务的需求。 通过mock,我们可以假装调用了xxx服务,或者xxx sdk的方法,甚至于可以借此测试一些复杂的场景,比如重试部分的代码是否符合预期等等。 mock in Python Python的mock库为我们提供了完善的功能,可以很好地实现伪造…

Read More

[ 读书笔记 ] Just for Fun

写在前面:阅读完Linus的自传《Just for Fun》,不敢私藏,分享一些个人的读书收获。 Colstuwjx 2017.09.30 贯穿全文的"生存、秩序、娱乐" Linus的生存哲学就是这简单的三个词,他认为人类社会里每件事物都是遵循这样的发展规律,最浅显的例子莫过于"性",最开始它是一种生存手段,必须通过"性"才能得以繁衍,随着人类秩序和文明的发展,婚姻制度建立了起来,它被认为是"性"的秩序化(当然,还有其他很多含义),而在当今现代文明下,"性"更像是一种娱乐手段,人们都在尽情享受这个娱乐化的时代。 就他这幅德性,以后可怎么去结识好女孩儿啊? Linus的母亲一直担心自己的孩子无法结识到好女孩,Linus的性格也的确是喜欢在屋子里鼓捣自己的电脑和编程,那个大学的半…

Read More

[ 杂谈 ] 三年后

三年前,鄙人刚毕业之际写了一个对自己职业发展规划的帖子,如今已经整整三年了,三年真的可以改变很多人,改变很多事情,且来回顾下鄙人这三年的经历、成长以及不足罢。 开发 成长 受益于转岗Tars的经历,鄙人的代码功力上升了一个层面,对Python的理解也不仅仅只是以前的脚本语言,开始理解元类、读懂Django的整个web处理过程,并学会参考像Sentry这样的高星项目实现一些项目需求; 在这个阶段,鄙人也开始调整自己的代码风格,开始学会把握产品需求; 来到B站后,这块也是小有突破,开始编写不仅仅只是运维自动化的工具系统,也涉及到了端对端的错误上报和舆情监控系统,也因此开始尝试使用Go语言来实现一些系统,包括正在实现的一个基于Mesos/K8S的容器混合调度平台 值得高兴的是,鄙人今年在开源社…

Read More