炼数成金 门户 大数据 存储 查看内容

gitlab+jenkins打造ceph的rpm自动编译

2019-4-22 17:51| 发布者: 炼数成金_小数| 查看: 32284| 评论: 0|原作者: 秦牧羊|来自: Ceph对象存储方案

摘要: 需要添加的插件:Gitlab Hook、Build Authorization Token Root、Gitlab Authentication、Gitlab。新建一个自由风格的软件项目,输入"rpmbuilid_ceph",之后在源码管理里面选择git,输入之前新建的gitlab项目信 ...

tm 存储 Hadoop 培训 源码

置条件
准备jenkins和gitlab的安装,这个过程请自行谷歌,介绍一下软件版本:

Jenkins ver. 2.164.2
gitlab 11.9.8
CentOS 7.4 64bit
jenkins 插件设置

需要添加的插件:Gitlab Hook、Build Authorization Token Root、Gitlab Authentication、Gitlab


gitlab新建ceph


源码包上传到gitlab
在 http://download.ceph.com/tarballs/ 下载对应的软件包版本,以12.2.12为例

解压软件包
[root@demohost1 supdev]# tar zxf ceph-12.2.12.tar.gz #解压
[root@demohost1 ceph-12.2.12]# cd ceph-12.2.12
[root@demohost1 ceph-12.2.12]# ls
admin    ceph-erasure-code-corpus  ChangeLog       CONTRIBUTING.rst  debian            do_freebsd.sh  fusetrace        make-apk.sh   man                  pom.xml     README.alpine.md    README.solaris     share                  udev
alpine   ceph-object-corpus        cmake           COPYING           doc               Doxyfile       INSTALL          make-debs.sh  mirroring            qa          README.FreeBSD      README.xio         src
AUTHORS  ceph.spec                 CMakeLists.txt  COPYING-GPL2      doc_deps.deb.txt  etc            install-deps.sh  make-dist     NEWS                 README      README.git-subtree  run-make-check.sh  SubmittingPatches.rst
bin      ceph.spec.in              CodingStyle     COPYING-LGPL2.1   do_cmake.sh       examples       keys             make-srpm.sh  PendingReleaseNotes  README.aix  README.md           seLinux            systemd
[root@demohost1 ceph-12.2.12]# find . -name ".gitignore"| xargs rm -f #关键步骤,剔除掉.gitignore,不然后面编译依赖检查会报错
初始化git,提交到gitlab仓库

[root@demohost1 ceph-12.2.12]# git init
Initialized empty Git repository in /home/supdev/ceph-12.2.12/.git/
[root@demohost1 ceph-12.2.12]# pwd
/home/demo/ceph-12.2.12
[root@demohost1 ceph-12.2.12]# git remote add origin http://gitlab.cephdemo.local/diluga/ceph.git
[root@demohost1 ceph-12.2.12]# git add --all .  
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj.
The file will have its original line endings in your working directory.

[root@demohost1 ceph-12.2.12]# git commit -m "Initial commit"
[master (root-commit) 85a9fab] Initial commit
 Committer: root <root@demohost1.h.chinabank.com.cn>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

The file will have its original line endings in your working directory.
 46084 files changed, 9316748 insertions(+)
 create mode 100644 .gitmodule_mirrors
 create mode 100644 .gitmodules
 ...
 create mode 100644 udev/60-ceph-by-parttypeuuid.rules
 create mode 100644 udev/95-ceph-osd.rules

[root@demohost1 ceph-12.2.12]# git push -u origin master
Username for 'http://gitlab.cephdemo.local': diluga
Password for 'http://diluga@gitlab.cephdemo.local':
Counting objects: 48328, done.
Delta compression using up to 32 threads.
Compressing objects: 100% (47048/47048), done.
Writing objects: 100% (48328/48328), 83.34 MiB | 8.29 MiB/s, done.
Total 48328 (delta 12162), reused 0 (delta 0)
remote: Resolving deltas: 100% (12162/12162), done.
To http://gitlab.cephdemo.local/diluga/ceph.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

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/bash
rm -rf ~/rpmbuild
/usr/bin/rpmdev-setuptree
cp -f ./ceph.spec ~/rpmbuild/SPECS
#git archive master --prefix=ceph-12.2.12/ | bzip2 > ceph-12.2.12.tar.bz2
mkdir ceph-12.2.12
mv * ceph-12.2.12
cp .gitmodules ceph-12.2.12
tar -cvjSf ceph-12.2.12.tar.bz2 ceph-12.2.12
cp ceph-12.2.12.tar.bz2 ~/rpmbuild/SOURCES/
cd ~/rpmbuild
/usr/bin/rpmbuild -bb SPECS/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内容。

ceph.spec 内容片断
Summary:        User space components of the Ceph file system
License:        LGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
%if 0%{?suse_version}
Group:          System/Filesystems
%endif
URL:            http://ceph.com/
Source0:        http://ceph.com/download/ceph-12.2.12.tar.bz2 #注意软件包名称 

声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!

欢迎加入本站公开兴趣群
软件开发技术群
兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流
QQ群:26931708

Hadoop源代码研究群
兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop
QQ群:288410967 

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2019-8-12 14:27 , Processed in 0.172711 second(s), 23 queries .

体彩七星彩开奖公告 福彩七乐彩纵向三行走势图 齐鲁风采23选5和值走势图 河北福彩排列7开奖结果 华东15选5除七走势图 体彩超级大乐透前后走势图 体彩超级大乐透前后走势图 福彩七乐彩走势图 福彩双色球走势图 江苏体彩七位数奇偶分析 福彩双色球历史开奖号码 江苏体彩七位数201分析 福彩双色球周四走势图 体彩排列5中奖规则 南粤风采36选7走势图 南粤风采36选7单期走势图 体彩排列5双期走势图 河北福彩20选5走势图 河北福彩20选5开奖结果 辽宁福彩35选7和值走势图