CI 持续集成
现在越来越多的公司开始走向微服务的架构,我们面临着巨大的挑战,
原先的单体架构 -> 微服务
单一 统一部署 -> 服务自治,独立部署
服务数量 10 -> 100+
- 服务数量爆发式增加, 部署需要自动化,人力成本.
- 迭代较短,频繁发布,需要对整个流程把控,质量监控
- 服务器权限管理, 流程不统一,不规范
总结我们的需求
自动化
可 信赖
可管理
这里所一个粗略的流程,只是主干和基本机构的搭建. 作为一个技术愿景的 demo:
安装 Jenkins
Docker 方式安装:
https://jenkins.io/doc/book/installing/#downloading-and-running-jenkins-in-docker
https://jenkins.io/doc/tutorials/build-a-node-js-and-react-app-with-npm/
docker run \ |
按文档走即可安装成功.
Credentials
这里需要几个账号:
- 部署的账号应该是统一的,用来和服务器进行访问. (需要 ssh 配置)
- 开发者登录账号,不同的人应该可以有不同的权限管理
对 于统一账号 要进入 jenkins 容器进行配置.
docker exec -it jenkinsContainer /bin/bash |
在被部署服务器上 /root/.ssh/authorized_keys 文件里添加 publickey
在 jenkins 系统内为这个人添加 privatekey
配置 PipeLine
pipeline { |
把 Jenkinsfile 和 code 放在一起,类似 dockerfile
Build
后续可优化/调研
- commit hook
- 是否可以暂停 pipeline, 通过手工确认继续 (比如手工测试环节)
- 如何其他服务进行连接,是否会正常等待对方结束,如何判断结束是否失败
- 打包方式变为 push docker image 到自有仓库
- 通知方式
注:
如果起了 jenkins 的 docker, 下次再启动数据不会清除的,如果想重新走安装流程.
需要
docker volume ls 看那个jenkins-data
的 volume,要干掉这个