0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

​详解gitlab+jenkins如何打造ceph的rpm自动编译

电子工程师 来源:fqj 2019-04-24 11:06 次阅读

前置条件

准备jenkins和gitlab的安装,这个过程请自行谷歌

jenkins 插件设置

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

​详解gitlab+jenkins如何打造ceph的rpm自动编译

​详解gitlab+jenkins如何打造ceph的rpm自动编译

gitlab新建ceph

​详解gitlab+jenkins如何打造ceph的rpm自动编译

源码包上传到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:rootYournameandemailaddresswereconfiguredautomaticallybasedonyourusernameandhostname.Pleasecheckthattheyareaccurate.Youcansuppressthismessagebysettingthemexplicitly:gitconfig--globaluser.name"YourName"gitconfig--globaluser.emailyou@example.comAfterdoingthis,youmayfixtheidentityusedforthiscommitwith:gitcommit--amend--reset-authorThefilewillhaveitsoriginallineendingsinyourworkingdirectory.46084fileschanged,9316748insertions(+)createmode100644.gitmodule_mirrorscreatemode100644.gitmodules...createmode100644udev/60-ceph-by-parttypeuuid.rulescreatemode100644udev/95-ceph-osd.rules[root@demohost1ceph-12.2.12]#gitpush-uoriginmasterUsernamefor'http://gitlab.cephdemo.local':dilugaPasswordfor'http://diluga@gitlab.cephdemo.local':Countingobjects:48328,done.Deltacompressionusingupto32threads.Compressingobjects:100%(47048/47048),done.Writingobjects:100%(48328/48328),83.34MiB|8.29MiB/s,done.Total48328(delta12162),reused0(delta0)remote:Resolvingdeltas:100%(12162/12162),done.Tohttp://gitlab.cephdemo.local/diluga/ceph.git*[newbranch]master->masterBranchmastersetuptotrackremotebranchmasterfromorigin.

jenkins 任务设置

新建一个自由风格的软件项目,输入"rpmbuilid_ceph"

​详解gitlab+jenkins如何打造ceph的rpm自动编译

之后在源码管理里面选择git,输入之前新建的gitlab项目信息,设置相应的分支,这里选的是默认master分支

​详解gitlab+jenkins如何打造ceph的rpm自动编译

Credentials部分,选择“添加”,输入gitlab的账号和密码如下

​详解gitlab+jenkins如何打造ceph的rpm自动编译

之后设置 构建触发器,选择“Build when a change is pushed to GitLab”,记录“GitLab webhook URL”,选择在 “Push Events” 和 “Accepted Merge Request Events” 两种事件类型的时候触发webhook通知。

​详解gitlab+jenkins如何打造ceph的rpm自动编译

同时在Secret token 点击“Generate”,记录生成的token字段

​详解gitlab+jenkins如何打造ceph的rpm自动编译

最后选择"构建” -> "执行 shell",输入对应的rpm编译打包脚本,点击保存,完成jenkins设置。

​详解gitlab+jenkins如何打造ceph的rpm自动编译

脚本如下

#!/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+jenkins如何打造ceph的rpm自动编译

输入之前的“GitLab webhook URL” 和 token,勾选 push和 merge 两种类型的事件,如果没用到SSL,则取消SSL认证

​详解gitlab+jenkins如何打造ceph的rpm自动编译

启动编译

回到jenkins对应的"rpmbuild_ceph"任务列表,点击“立即构建”,开始编译ceph的rpm包,

​详解gitlab+jenkins如何打造ceph的rpm自动编译

编译过程可以通过点击具体任务,查看“控制台输出”,看到编辑的当前进度状态。

​详解gitlab+jenkins如何打造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

    文章

    607

    浏览量

    32320
  • 脚本
    +关注

    关注

    1

    文章

    370

    浏览量

    14616
  • jenkins
    +关注

    关注

    0

    文章

    25

    浏览量

    5110

原文标题:​gitlab+jenkins打造ceph的rpm自动编译

文章出处:【微信号:cephbook,微信公众号:Ceph对象存储方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    VM虚拟机搭建Linux常用的命令

    第十章----VM虚拟机搭建Linux整合Gitlab+Jenkins+Nginx+Tomcat自动化部署方案总结
    发表于 04-08 10:26

    基于服务器安装node环境的步骤

    jenkins+gitlab+vue进行自动化构建部署项目打包
    发表于 05-22 11:06

    Gitlab安装及集成LDAP

    https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
    发表于 07-09 06:28

    ansible playbook+jenkins如何实现自动新增域名

    ansible-playbook+jenkins实现自动新增域名
    发表于 06-03 11:58

    Ceph是什么?Ceph的统一存储方案简析

    Ceph是什么?Ceph是一个开源的分布式存储系统,可大规模扩展、高性能、无单点故障,在普通的服务器上可以支持到PB级容量,商用机器上支持的容量可以达到EB级别。Ceph的竞争力市面上提供云存储
    发表于 10-08 15:40

    jenkins有什么用_jenkins如何自动部署

    Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。
    发表于 12-20 19:06 3.6w次阅读
    <b class='flag-5'>jenkins</b>有什么用_<b class='flag-5'>jenkins</b>如何<b class='flag-5'>自动</b>部署

    jenkins自动化部署

    本文详细介绍Jenkins的简单使用—jenkins自动化部署。
    的头像 发表于 02-06 11:27 4297次阅读
    <b class='flag-5'>jenkins</b><b class='flag-5'>自动</b>化部署

    jenkins持续集成原理

    本文详细介绍了jenkins持续集成原理。持续集成就是为解决程序代码提交质量低,提交内容导致原有系统的bug,按时或按需自动编译版本,自动进行自动
    的头像 发表于 02-06 11:43 3780次阅读

    Jenkins是什么_Jenkins常用功能_jenkins的使用总结

    本文详细回答了Jenkins是什么,Jenkins常用功能以及jenkins的使用总结。Jenkins 是一个可扩展的持续集成引擎。Jenkins
    发表于 02-06 14:44 2.8w次阅读
    <b class='flag-5'>Jenkins</b>是什么_<b class='flag-5'>Jenkins</b>常用功能_<b class='flag-5'>jenkins</b>的使用总结

    Prelink的交叉编译和使用详解

    Prelink的交叉编译和使用详解
    的头像 发表于 06-20 12:03 3024次阅读
    Prelink的交叉<b class='flag-5'>编译</b>和使用<b class='flag-5'>详解</b>

    autobuild-ceph远程部署Ceph自动构建Ceph

    autobuild-ceph.zip
    发表于 05-05 11:09 2次下载
    autobuild-<b class='flag-5'>ceph</b>远程部署<b class='flag-5'>Ceph</b>及<b class='flag-5'>自动</b>构建<b class='flag-5'>Ceph</b>

    极狐GitLab的安装指南

    极狐 GitLab 测试了搭载 Ampere Altra 处理器的腾讯 SR1 实例,从 15.2.0 开始正式支持 ARM。极狐 GitLab 原文如下。
    的头像 发表于 08-18 11:17 1954次阅读

    Jenkins+Docker一键自动化部署SpringBoot最简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 11-23 10:16 1019次阅读

    Jenkins+Docker一键自动化部署SpringBoot应用最精简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 11-06 16:27 512次阅读
    <b class='flag-5'>Jenkins</b>+Docker一键<b class='flag-5'>自动</b>化部署SpringBoot应用最精简流程

    基于Jenkins+GitLab+Maven实现代码自动打包编译发布

    Jenkins是一个独立开源的持续集成和持续交付工具,用于自动化构建、测试和部署软件项目。
    的头像 发表于 11-20 09:57 1217次阅读
    基于<b class='flag-5'>Jenkins+GitLab</b>+Maven实现代码<b class='flag-5'>自动</b>打包<b class='flag-5'>编译</b>发布