前置條件
準(zhǔn)備jenkins和gitlab的安裝,這個(gè)過(guò)程請(qǐng)自行谷歌
jenkins 插件設(shè)置
需要添加的插件:Gitlab Hook、Build Authorization Token Root、Gitlab Authentication、Gitlab


gitlab新建ceph

源碼包上傳到gitlab
在 http://download.ceph.com/tarballs/ 下載對(duì)應(yīng)的軟件包版本,以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#關(guān)鍵步驟,剔除掉.gitignore,不然后面編譯依賴檢查會(huì)報(bào)錯(cuò)
初始化git,提交到gitlab倉(cāng)庫(kù)
[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 任務(wù)設(shè)置
新建一個(gè)自由風(fēng)格的軟件項(xiàng)目,輸入"rpmbuilid_ceph"

之后在源碼管理里面選擇git,輸入之前新建的gitlab項(xiàng)目信息,設(shè)置相應(yīng)的分支,這里選的是默認(rèn)master分支

Credentials部分,選擇“添加”,輸入gitlab的賬號(hào)和密碼如下

之后設(shè)置 構(gòu)建觸發(fā)器,選擇“Build when a change is pushed to GitLab”,記錄“GitLab webhook URL”,選擇在 “Push Events” 和 “Accepted Merge Request Events” 兩種事件類(lèi)型的時(shí)候觸發(fā)webhook通知。

同時(shí)在Secret token 點(diǎn)擊“Generate”,記錄生成的token字段

最后選擇"構(gòu)建” -> "執(zhí)行 shell",輸入對(duì)應(yīng)的rpm編譯打包腳本,點(diǎn)擊保存,完成jenkins設(shè)置。

腳本如下
#!/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設(shè)置
打開(kāi)gitlab 對(duì)應(yīng)的項(xiàng)目,在 settings -> integrations

輸入之前的“GitLab webhook URL” 和 token,勾選 push和 merge 兩種類(lèi)型的事件,如果沒(méi)用到SSL,則取消SSL認(rèn)證。

啟動(dòng)編譯
回到j(luò)enkins對(duì)應(yīng)的"rpmbuild_ceph"任務(wù)列表,點(diǎn)擊“立即構(gòu)建”,開(kāi)始編譯ceph的rpm包,

編譯過(guò)程可以通過(guò)點(diǎn)擊具體任務(wù),查看“控制臺(tái)輸出”,看到編輯的當(dāng)前進(jìn)度狀態(tài)。

編譯完成后,RPM包會(huì)存儲(chǔ)在jenkins節(jié)點(diǎn)的/root/rpmbuild/下。
總結(jié)
上面的設(shè)置需要注意的有3點(diǎn)
代碼提交到gitlab一定要剔除掉“.gitignore”,當(dāng)然你可以手工去修改具體內(nèi)容,不然后面編譯會(huì)報(bào)錯(cuò)。
jenkins是基于gitlab的pull和merge事件來(lái)觸發(fā)后臺(tái)的自動(dòng)編譯,所有后續(xù)在gitlab上面的代碼pull和merge操作都會(huì)觸發(fā)相應(yīng)版本的rpm包編譯,注意這里只針對(duì)源碼的master分支做了處理,各位根據(jù)實(shí)際情況進(jìn)行調(diào)整。
源碼里面的“ceph.spec”文件寫(xiě)死了一些配置,如果你改變了編譯流程細(xì)節(jié),則需要修改對(duì)應(yīng)的配置內(nèi)容,比如源件包名稱必須是"ceph-12.2.12.tar.bz2",具體可以參考ceph.spec內(nèi)容。
-
編譯
+關(guān)注
關(guān)注
0文章
696瀏覽量
35275 -
腳本
+關(guān)注
關(guān)注
1文章
411瀏覽量
29270 -
jenkins
+關(guān)注
關(guān)注
0文章
34瀏覽量
5516
原文標(biāo)題:?gitlab+jenkins打造ceph的rpm自動(dòng)編譯
文章出處:【微信號(hào):cephbook,微信公眾號(hào):Ceph對(duì)象存儲(chǔ)方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Gitlab安裝及集成LDAP
ansible playbook+jenkins如何實(shí)現(xiàn)自動(dòng)新增域名
Ceph是什么?Ceph的統(tǒng)一存儲(chǔ)方案簡(jiǎn)析
jenkins簡(jiǎn)單的使用教程_jenkins安裝與配置
jenkins有什么用_jenkins如何自動(dòng)部署
jenkins持續(xù)集成原理
Jenkins是什么_Jenkins常用功能_jenkins的使用總結(jié)
基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布
Jenkins 與 SonarQube 集成部署,自動(dòng)化代碼質(zhì)量監(jiān)控
基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署
?詳解gitlab+jenkins如何打造ceph的rpm自動(dòng)編譯
評(píng)論