前置条件
准备jenkins和gitlab的安装,这个过程请自行谷歌
jenkins 插件设置
需要添加的插件:Gitlab Hook、Build Authorization Token Root、Gitlab Authentication、Gitlab
gitlab新建ceph
源码包上传到gitlab
在 http://download.ceph.com/tarballs/下载对应的软件包版本,以12.2.12为例
解压软件包
[root@demohost1supdev]#tarzxfceph-12.2.12.tar.gz#解压[root@demohost1ceph-12.2.12]#cdceph-12.2.12[root@demohost1ceph-12.2.12]#lsadminceph-erasure-code-corpusChangeLogCONTRIBUTING.rstdebiando_freebsd.shfusetracemake-apk.shman
pom.xmlREADME.alpine.mdREADME.solarisshare
udevalpineceph-object-corpuscmakeCOPYINGdocDoxyfileINSTALLmake-
debs.shmirroring qa
README.FreeBSDREADME.xiosrcAUTHORSceph.spec
CMakeLists.txtCOPYING-GPL2doc_deps.deb.txtetc
install-deps.shmake-distNEWS
READMEREADME.git-subtreerun-make-check.shSubmittingPatches.rstbinceph.spec.in
CodingStyleCOPYING-LGPL2.1do_cmake.shexampleskeys
make-srpm.shPendingReleaseNotesREADME.aixREADME.md selinux
systemd[root@demohost1ceph-12.2.12]#find.-name".gitignore"|xargsrm-f#关键步骤,剔除掉.gitignore,不然后面编译依赖检查会报错
初始化git,提交到gitlab仓库
[root@demohost1ceph-12.2.12]#gitinitInitializedemptyGitrepositoryin/home/supdev/ceph-12.2.12/.git/[root@demohost1ceph-12.2.12]#pwd/home/demo/ceph-12.2.12[root@demohost1ceph-12.2.12]#gitremoteaddoriginhttp://gitlab.cephdemo.local/diluga/ceph.git[root@demohost1ceph-12.2.12]#gitadd--all.Thefilewillhaveitsoriginallineendingsinyourworkingdirectory.warning:CRLFwillbereplacedbyLFinsrc/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj.Thefilewillhaveitsoriginallineendingsinyourworkingdirectory.[root@demohost1ceph-12.2.12]#gitcommit-m"Initialcommit"[master(root-commit)85a9fab]InitialcommitCommitter:root
jenkins 任务设置
新建一个自由风格的软件项目,输入"rpmbuilid_ceph"
之后在源码管理里面选择git,输入之前新建的gitlab项目信息,设置相应的分支,这里选的是默认master分支
Credentials部分,选择“添加”,输入gitlab的账号和密码如下
之后设置 构建触发器,选择“Build when a change is pushed to GitLab”,记录“GitLab webhook URL”,选择在 “Push Events” 和 “Accepted Merge Request Events” 两种事件类型的时候触发webhook通知。
同时在Secret token 点击“Generate”,记录生成的token字段
最后选择"构建” -> "执行 shell",输入对应的rpm编译打包脚本,点击保存,完成jenkins设置。
脚本如下
#!/bin/bashrm-rf~/rpmbuild/usr/bin/rpmdev-setuptreecp-f./ceph.spec~/rpmbuild/SPECS#gitarchivemaster--prefix=ceph-12.2.12/|bzip2>ceph-12.2.12.tar.bz2mkdirceph-12.2.12mv*ceph-12.2.12cp.gitmodulesceph-12.2.12tar-cvjSfceph-12.2.12.tar.bz2ceph-12.2.12cpceph-12.2.12.tar.bz2~/rpmbuild/SOURCES/cd~/rpmbuild/usr/bin/rpmbuild-bbSPECS/ceph.spec
gitlab webhook设置
打开gitlab 对应的项目,在 settings -> integrations
输入之前的“GitLab webhook URL” 和 token,勾选 push和 merge 两种类型的事件,如果没用到SSL,则取消SSL认证。
启动编译
回到jenkins对应的"rpmbuild_ceph"任务列表,点击“立即构建”,开始编译ceph的rpm包,
编译过程可以通过点击具体任务,查看“控制台输出”,看到编辑的当前进度状态。
编译完成后,RPM包会存储在jenkins节点的/root/rpmbuild/下。
总结
上面的设置需要注意的有3点
代码提交到gitlab一定要剔除掉“.gitignore”,当然你可以手工去修改具体内容,不然后面编译会报错。
jenkins是基于gitlab的pull和merge事件来触发后台的自动编译,所有后续在gitlab上面的代码pull和merge操作都会触发相应版本的rpm包编译,注意这里只针对源码的master分支做了处理,各位根据实际情况进行调整。
源码里面的“ceph.spec”文件写死了一些配置,如果你改变了编译流程细节,则需要修改对应的配置内容,比如源件包名称必须是"ceph-12.2.12.tar.bz2",具体可以参考ceph.spec内容。
- 编译
+关注
关注
0文章
642浏览量
32636 - 脚本
+关注
关注
1文章
381浏览量
14750 - jenkins
+关注
关注
0文章
26浏览量
5113
原文标题:gitlab+jenkins打造ceph的rpm自动编译
文章出处:【微信号:cephbook,微信公众号:Ceph对象存储方案】欢迎添加关注!文章转载请注明出处。
发布评论请先登录
相关推荐
评论