前置條件
準(zhǔn)備jenkins和gitlab的安裝,這個過程請自行谷歌
jenkins 插件設(shè)置
需要添加的插件:Gitlab Hook、Build Authorization Token Root、Gitlab Authentication、Gitlab
gitlab新建ceph
源碼包上傳到gitlab
在 http://download.ceph.com/tarballs/ 下載對應(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,不然后面編譯依賴檢查會報錯
初始化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 任務(wù)設(shè)置
新建一個自由風(fēng)格的軟件項目,輸入"rpmbuilid_ceph"
之后在源碼管理里面選擇git,輸入之前新建的gitlab項目信息,設(shè)置相應(yīng)的分支,這里選的是默認(rèn)master分支
Credentials部分,選擇“添加”,輸入gitlab的賬號和密碼如下
之后設(shè)置 構(gòu)建觸發(fā)器,選擇“Build when a change is pushed to GitLab”,記錄“GitLab webhook URL”,選擇在 “Push Events” 和 “Accepted Merge Request Events” 兩種事件類型的時候觸發(fā)webhook通知。
同時在Secret token 點(diǎn)擊“Generate”,記錄生成的token字段
最后選擇"構(gòu)建” -> "執(zhí)行 shell",輸入對應(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è)置
打開gitlab 對應(yīng)的項目,在 settings -> integrations
輸入之前的“GitLab webhook URL” 和 token,勾選 push和 merge 兩種類型的事件,如果沒用到SSL,則取消SSL認(rèn)證。
啟動編譯
回到j(luò)enkins對應(yīng)的"rpmbuild_ceph"任務(wù)列表,點(diǎn)擊“立即構(gòu)建”,開始編譯ceph的rpm包,
編譯過程可以通過點(diǎn)擊具體任務(wù),查看“控制臺輸出”,看到編輯的當(dāng)前進(jìn)度狀態(tài)。
編譯完成后,RPM包會存儲在jenkins節(jié)點(diǎn)的/root/rpmbuild/下。
總結(jié)
上面的設(shè)置需要注意的有3點(diǎn)
代碼提交到gitlab一定要剔除掉“.gitignore”,當(dāng)然你可以手工去修改具體內(nèi)容,不然后面編譯會報錯。
jenkins是基于gitlab的pull和merge事件來觸發(fā)后臺的自動編譯,所有后續(xù)在gitlab上面的代碼pull和merge操作都會觸發(fā)相應(yīng)版本的rpm包編譯,注意這里只針對源碼的master分支做了處理,各位根據(jù)實際情況進(jìn)行調(diào)整。
源碼里面的“ceph.spec”文件寫死了一些配置,如果你改變了編譯流程細(xì)節(jié),則需要修改對應(yīng)的配置內(nèi)容,比如源件包名稱必須是"ceph-12.2.12.tar.bz2",具體可以參考ceph.spec內(nèi)容。
-
編譯
+關(guān)注
關(guān)注
0文章
678瀏覽量
33940 -
腳本
+關(guān)注
關(guān)注
1文章
398瀏覽量
28430 -
jenkins
+關(guān)注
關(guān)注
0文章
33瀏覽量
5324
原文標(biāo)題:?gitlab+jenkins打造ceph的rpm自動編譯
文章出處:【微信號:cephbook,微信公眾號:Ceph對象存儲方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Gitlab安裝及集成LDAP
Ceph是什么?Ceph的統(tǒng)一存儲方案簡析
jenkins簡單的使用教程_jenkins安裝與配置

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

jenkins持續(xù)集成原理
Jenkins是什么_Jenkins常用功能_jenkins的使用總結(jié)

基于Jenkins+GitLab+Maven實現(xiàn)代碼自動打包編譯發(fā)布

Jenkins 與 SonarQube 集成部署,自動化代碼質(zhì)量監(jiān)控

基于 Docker 與 Jenkins 實現(xiàn)自動化部署

評論