109

如何为持续集成平台选型?

 6 years ago
source link: http://mp.weixin.qq.com/s/ND_yL3AqFm_5Dl1whcHgzg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何为持续集成平台选型?

Original 许江 whoami 2018-01-03 10:30 Posted on

新的一年,开始研发新的产品。由于新团队成员,所以需要构建一套持续集成平台。

我从事的是开源软件事业,所以需要访问互联网上面大量的软件包,每天都有上百个容器的创建和销毁,一切都是为了自动化,更高效率的交付产品。让大家专注工作于正确的方向上,更快的迭代产品,专注coding,而不会被固定的流程化操作的打断工作进度。

说几点需求点

  • 办公网络慢、导致编译效率低?

  • 无本地仓库,构建程序效率低下?

  • 很多资源无法访问?

  • 通过VPN可以直接访问公司内网?

  • 灵活的代码版本管理仓库?

  • 自动化构建、测试、发布?

  • 开发专注于coding

  • 升级公司机房网络带宽,提升,比如:50M

  • 使用本地仓库,提高构建效率

  • 无法访问国外资源,通过架设VPS

  • 无时无刻进入工作状态,提供访问公司内网的穿透工具

  • 选择一个灵活的源码管理工具

  • 建立一个持续集成平台,自动化完成代码的构建,测试,发布,预览

  • 优化整体流程,避免重复的劳动,尽量自动化

  • 让开发专注于coding、review中

  • 通过容器技术来统一运行环境,减少基础环境重复构建的麻烦

  • 通过容器技术,持续得发布版本,动态回滚

  • 统一的源码版本管理机制,每个发布的版本,具备可回溯性

注意: VPS比较敏感,其实就是一句命令的事,只要你有国外的服务器。:> 私我

在构建这些基础环境之前,你需要有一个完整的研发计划,涉及哪些技术栈分析。

语言方面:JAVAnodejsJavaScript为主,自动化部分使用PythonShellgroovy、ruby。

构建工具:ant、maven、ivy、gradle、sbt、npm、git

技术框架:Angular、Spring Boot、BootStrap、Jquery

支持系统:Ubuntu、centos、redhat

Image
2 资源列表
  • 内网私服,提供各种package快速访问

  • 容器,提供定制的操作系统版本

  • 持续集成服务器,完成代码的自动化pull、build、test、run、push

  • 源码服务器,提供源代码托管

  • 容器镜像服务器,提供本地定制化容器镜像存储服务

  • 虚拟化测试集群,提供自动化测试所需资源

需要5台服务器,若干台测试服务器。

私服,可以通过虚拟化服务器提供,底层最好提供raid容错,防止硬盘损坏数据丢失。

容器,提供本地容器平台,可以自动去中央仓库同步没有的容器镜像。

虚拟化,参考:我为什么弃用OpenStack转向VMware vsphere

以上服务器都可以使用云主机,针对私服、源码服务器、镜像服务器底层存储使用云硬盘(带有分不知容错的存储软件),保障数据安全。其他服务器随意使用虚拟机即可。

使用5台服务器,组成一个集群,初步具备基础硬件资源,可以开始搭建软件资源。

3 技术选型

根据技术栈和所需要的资源列表,我们完成技术选型的工作。

对于持续集成平台,涉及大量的环节,我们需要优化的点很多,下面我们先完成技术的选择。

  • 持续集成工具,选择Jenkins

  • 容器技术,选择Docker

  • 灵活的代码版本管理工具,选择GitLab

  • 镜像管理工具,选择harbor

  • 私服,选择Jfrog

  • 虚拟化,选择vmware vsphere、openstack

  • 源码二进制管理,选择Apache

  • 任务追踪管理,选择Jira

  • 团队协作,Confluence

  • 自动化运维工具,选择SlatStack、puppet

由于我们参与的软件是apache项目,所以我们使用Atlassian全家桶。

同质化的产品也非常的多,我选型的过程中调用过很多软件,目前非常可喜的是大部分软件都提供Docker安装预览,可以体验一下功能,我主要还是选择主流的软件,或者用户体验非常好的产品,可以帮助我节省时间,毕竟我们主要的精力是研发产品。

经过使用很多软件,大浪淘沙,最后剩下的都是精品。

Image

把这些软件很好的串联起来,可以完成企业持续集成平台的构建工作。

我们内部还有一套自动化构建各种平台的软件包框架,一键构建rpm、deb软件包。还提供通过docker自动化测试软件包的正确性、一键发布软件包到线上,可以很好的把持续集成平台串联起来。

通过定制Ubuntu、Centos不同版本的Docker镜像,直接自动化传参数启动不同的docker系统版本进行流水线式的自动打包发布,测试。

通过钩子程序,发现有代码更新自动化的拉取最新合并的代码构建、测试、生成测试报告,邮件反馈给开发此功能的开发人员。

欢迎关注微信公众号[whoami],阅读更多内容。

Image

原创文章,转载请注明: 转载自Itweet的博客
本博客的文章集合: http://www.itweet.cn/blog/archive/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK