..
从交付角度审视 jenkins
之前做过一段时间的2B产品的交付,感觉并没有像2C产品交付那样容易。同时最近使用 jenkins 比较多,发现 jenkins 在软件部署,升级上都比较方便,有一些值得学习的地方。
支持系统
因为是使用 java + groovy 开发,所以 jenkins 支持所有能够运行 JVM 虚拟机的系统,包括 windows 和 unix like.
安装方式
使用包管理用具安装
- yum
- apt
- pacman
- 用户自定义 jar , war 运行
升级方式
和安装方式一样,升级也使用包管理工具进行升级,版本之间的差异使用升级脚本解决,可以参考 deb,或者 rpm 包的制作方式.插件之间如果存在版本兼容问题,jenkins 会在插件管理界面提示出来。
进程管理
使用系统自带的进程管理工具
- service
- systemd
这样做的好处避免了手动执行 java 命令启动进程,或者 kill 关闭进程,与操作系统上其他系统保持一致的运行规则,也支持开机自动启动。
系统依赖
jenkins 的安装包内置 java 虚拟机,所以基本只要下载了 deb 以后就能安装,安装非常简单。运行期间,配置信息使用 xml 格式保存在本地磁盘,所以不需要安装数据库。jenkins 的配置都保存在 JENKINS_HOME 中,所以对于运维来说,备份文件非常简单。
扩展方式
jenkins 使用插件的方式来扩展本身的功能, 提供开放 api , 用户可以开发自定义插件.插件安装可以从网络安装(可指定网站源), 也可以手动上传插件包。
服务扩容
jenkins 使用 master + slave 的架构,master 管理配置,调度任务, slave 负责执行任务。
服务配置
jenkins 支持灵活的 DSL 配置满足复杂需求。
缺点
- 因为配置是基于文件保存,数据检索慢,所以加载 blue ocean 界面非常慢
- 因为使用 master + slave , 不支持多个 master , 所以存在单点问题