09月26, 2018

rpm自动化打包工具

运维开发团队为了能够让开发人员方便快捷的安装开发依赖包,以提高开发人员的开发效率。特意为开发人员提供了一款可以自助制作rpm包的全自动打包工具。利用该自助打包工具,开发人员可以在最短的时间内随心所欲的制作出满足特定需求rpm包。

背景与需求

安装软件的方式大致可以分为三种。编译安装软件、yum安装软件和通过编译源码定制rpm包。编译安装软件,可以定制化安装目录、按需开启功能等,但是需要查找并实验出适合的编译参数,耗时较长。yum安装软件,实现全自动安装,不需要为依赖问题发愁,但是自主性太差,软件的功能、存放位置不易变更。编译源码,根据自己的需求定制rpm包,然后搭建内网yum仓库,利用yum安装,结合了前两种方法的优点,避免了各自的缺点,是中大型互联网企业自动化运维的必要技能。因此提供一款简单、快捷的rpm自助打包工具成为运维开发组的的一个重要的okr。


RPM自助打包工具简介

rpm自助打包工具。是一种将用户提供的文件和执行脚本转化为rpm包的打包工具。提供了文件的分发和脚本的自动执行功能。是一种基于fpm工具而制作的一个网站系统。打包网址:http://autorpmbuild.aiops.qihoo.net/

工作原理

rpm自动化打包工具充分利用了S3存储和fpm工具的优势。首先将制作的文件夹通过S3上传至S3存储,在服务端利用S3下载到本地。其次通过http协议将rpm包的基本信息上传到服务端,服务端将信息进行分析和组合,为fpm工具提供参数信息。最后通过fpm工具形成rpm包。fpm工具详解可以参考:https://github.com/jordansissel/fpm alt


核心功能特性

源文件上传工具-wshell

用户需在配置好的样板机上安装使用,可以方便灵活的打包文件并上传备份至hulk对象存储,减轻用户维护成本。

Step01 - 工具安装

   yum install addops-auto-wshell

Step02 - 按照源文件结构规范制作src文件夹

alt

src文件夹规范详见wiki:http://wiki.add.corp.qihoo.net/pages/viewpage.action?pageId=6500791

Step03 - 使用wshell制作src压缩包

   wshell build name-version-release

例:wshell build pika30-3.0.2-1

Step04 - 使用wshell上传src压缩包

   wshell put name-version-release

例:wshell put pika30-3.0.2-1.tar.gz

rpm自助打包平台

rpm自助打包平台提供了制作rpm包所需的基本信息。包括基本选项如版本号、打包人、rpm包基本信息描述和高级选项如安装前执行脚本、安装后执行脚本、卸载前执行脚本和卸载后执行脚本。

alt

Step01 - 填写rpm metadata

alt

按需填写完信息后点击“提交”,开始构建rpm

Step02 - rpm构建进度查询

当rpm包还在制作中时,显示

   rpm building..

当rpm包制作完成时,显示

   addops-auto-xxx-version-release.x86_64.rpm has been packaged,please test!!!。

Step03 - rpm包测试

当rpm包制作完成时,页面显示rpm测试包的安装地址:

rpm –i http://k2198v.add.bjyt.qihoo.net:80/+包名。  

Step04 - 发布上线

将rpm包发布到yum源中


Q&A

Q: 通过这个平台可以同时做 CentOS 6 和 CentOS 7 的 rpm 包吗?

A: 可以的,目前我们支持 el6 和 el7 两个操作系统版本的自助打包需求,平台左上角显示当前制作 rpm 包的适用操作系统版本。点击该区域即可进行切换。

Q: 为什么要添加 addops-auto- 这个前缀?

A: 由于目前yum源中已经大量存在以 addops 为前缀的rpm包,出于避免用户自助制作的 rpm 包与 addops yum 源中的 rpm 包冲突,我们会在用户自定义制作的 rpm 包增加 addops-auto- 前缀。

Q: 为什么利用 yum 安装时检测不到最新打的包?

A: 由于 yum 工具安装时会有缓存存在的现象,为了不影响新包的安装,可以在安装新包之前清除 yum 缓存,方法为 yum clean all。

Q: 安装过程中与以 addops- 为前缀的同名包冲突怎么办?

A: 这是由于当前主机中已经安装了相同包名的 rpm 包,需要将以 addops- 为前缀的包删除之后再重新安装以 addops-auto- 为前缀的 rpm 包。高级用户还可以在安装前的执行脚本中加入卸载以 addops- 为前缀的包的 shell 命令完成上述操作。

总结与展望

rpm自动化工具在很大程度上改变了之前延续的打包方法,使得打包更小白化,每一位没有接触过打包的程序员都可以在很短的时间内实现rpm包的定制。目前该系统支持多个用户的源码包备份、并发打包和进度查询,但是源码包的制作还不是很友好,随着用户量的增大,未来将优化源码包的制作工具,提高打包效率。

参考文档

http://wiki.add.corp.qihoo.net/pages/viewpage.action?pageId=6499917

http://easydoc.qihoo.net/doc?project=1d1b49835cbb989968925b2553243a0a&config=title_menu_toc

http://wiki.add.corp.qihoo.net/pages/viewpage.action?pageId=6500791

https://github.com/jordansissel/fpm

本文链接:https://www.opsdev.cn/post/rpm_autobuild.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。