最近在将公司的持续集成架构做一个系统的调整,调整过程中受到了RDC团队大量的帮助,所以利用国庆时间写了几篇RDC的分享,希望能让更多的人了解和用好RDC这个产品。
我会把我最近3个月的使用体会分成5个部分:使用RDC的动机、PHP项目集成、JS项目集成、JAVA项目集成、Docker类项目集成这5个分支来写
因为近期RDC的迭代比较频繁,所以我的分享会比较的浅,点到为止,仅供参考,目录:
1、RDC如何耦合进我们的业务
2、如何构建一个基于Composer的PHP项目
3、如何构建一个基于NodeJS的前后端项目
4、如何构建一个基于Maven的Java项目
5、RDC + 容器服务完成持续集成
一、现状
在没有切入RDC之前,我们公司的持续集成主要是通过Jenkins完成,定时构建、打包、制作docker镜像,然后通过API发布到docker集群。
这套方案的优点在于:
1.只要技术能力过硬,几乎可以通过jenkins的自定义脚本实现99%的功能。相对更自由一些。
2.可以通过分布式的构建节点来降低构建压力和提高稳定性,适合大并发的构建场景。
缺点也很明显:
1.没有过多技术精力的团队,只能使用jenkins自带的功能、扩展插件来实现相关功能,较为繁琐且jenkins的界面和操作有时候确实有点反人类的,属于用起来很简单,要用好很难。
2.需要投入额外的部署、构建节点,成本,成本~
3.因为公司的服务基于docker部署,而jenkins+docker的构建和部署并非特别的好用。更关键的问题是安全,需要将相关集群的证书打入构建和部署节点,一旦被攻击,可能公司/团队就没了~
二、RDC结合阿里云容器服务实现自动迭代
阿里云目前提供了Docker的集群服务,分为3种类型,一种是阿里云自己基于原生集群改造的版本、Swarm Mode、K8S,后两个是新支持的,目前来说体验体验就好,不太建议在生产环境用。
具体的阿里云容器服务我就不介绍了,感兴趣的朋友可以去cs.console.aliyun.com开通并使用。
那么让RDC自动部署到容器服务需要如下的步骤:
1.先修改应用的流程,进入项目—-流水线,找到下图界面,点击某个流水线的修改按钮:
2.调整部署规则,可以按需要删除或添加新的部署点,环境选择已有环境,如果此处没有可用的环境,请进入 应用—–环境—-配置,进行设置,可以指定每个环境对应的docker集群、应用、服务、蓝绿发布规则等。
3.调整完成后,保存即可,然后重新运行一次流水线,就OK啦。其实还有一些更高级的用法,比如加开关,日常部署全自动,正式部署由特定权限者手动点确认才能部署等。
是不是超级简单!
部署到Docker集群的几个小坑:
1.比如你的容器应用由(nginx+code)组成,而你在RDC中部署目标设置为code,更新后可能出现nginx的link目标还是上一次的集群IP,导致fpm转发失败。这个问题,小概率出现,不知是容器的问题还是RDC的问题,大概1000次部署,遇到1次。
2.如果你的应用名称为中文,比如:门户网站前端应用,通过RDC自动部署后,容器应用名会变成?????,对使用没影响,就是看上去怪怪的,应该是2个产品的编码没协调好。
三、后记
几个分享就说到这里了,在写分享的过程中发现一些功能经常在迭代,导致反反复复修改文章,如果你在看的时候发现文章和配套搭配不了,请重新按官方文档进行理解吧~
5篇分享写的比较浅,主要用作入门,后面有时间会再写3篇进阶分享,主要聊聊如何用RDC等工具链完成一整套的持续集成工作。
文章原文出处:qipangzi.com (个人博客)