前置條件
準備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文章
646瀏覽量
32672 -
腳本
+關注
關注
1文章
382瀏覽量
14761 -
jenkins
+關注
關注
0文章
27瀏覽量
5117
原文標題:?gitlab+jenkins打造ceph的rpm自動編譯
文章出處:【微信號:cephbook,微信公眾號:Ceph對象存儲方案】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論