docker+gitlab+jenkins從零搭建自動(dòng)化部署

介紹

本文主要通過docker+gitlab+jenkins來實(shí)現(xiàn)自動(dòng)化集成和部署的全過程唐断,并不會(huì)詳細(xì)的去介紹各種工具的功能踢京。

流程結(jié)構(gòu)

jenkins-gitlab CI流程

準(zhǔn)備工作

  1. 1臺(tái)測(cè)試服務(wù)器退客,用于安裝docker, 并在docker中配置jenkins论衍,部署代碼等。(公司準(zhǔn)備的是內(nèi)網(wǎng)測(cè)試機(jī))
  2. 新建一個(gè)vue項(xiàng)目掏父,然后推送到gitlab倉儲(chǔ)。

開始配置工作

docker

1. 在服務(wù)器上安裝docker
  1. 更新軟件庫
yum update -y
  1. 安裝docker
yum install docker -y
  1. 啟動(dòng)docker
 service docker start
  1. docker相關(guān)命令
 service docker restart  // 重啟docker服務(wù)
 service docker stop     // 停止docker服務(wù)
1. 在docker中安裝jenkins

一般我們習(xí)慣性的從docker遠(yuǎn)程倉儲(chǔ)直接pull 鏡像的最新版秆剪,而安裝最新版的jenkins鏡像, 鏡像啟動(dòng)后, 在安裝jenkins一系列的plugin 時(shí), 重重受阻, 各種失敗, 原因是docker hub 上最新的jenkins 只有2.60.1 版本赊淑,很多plugin 都是不支持的爵政。
在jenkins 的官方docker 鏡像博客里: docker hub 里面的jenkins 鏡像已經(jīng)不再維護(hù), 建議使用: Jenkins/jenkins 陶缺。

  1. 拉取jenkins鏡像
 docker pull jenkins/jenkins
  1. 啟動(dòng)jenkins
sudo docker run -d -u 0 --privileged  --name jenkins_gitlab -p 49003:8080 -v /root/jenkins_gitlab:/var/jenkins_home  jenkins/jenkins
  • -u 0

指的是傳入root賬號(hào)ID钾挟,覆蓋容器中內(nèi)置的賬號(hào)

  • -v /root/jenkins_gitlab:/var/jenkins_home
    指的是 將docker容器內(nèi)的目錄/var/jenkins_home映射到宿主機(jī)
    /root/jenkins_gitlab目錄上

  • --name jenkins_gitlab

將容器命名為 jenkins_gitlab

  • -p 49003:8080

端口映射,將容器的8080端口映射到宿主機(jī)的49003端口

  • --privileged

賦予最高權(quán)限

  • 整體含意
    運(yùn)行一個(gè)鏡像為jenkins/jenkinst的容器饱岸,命名為jenkins_gitlab掺出,使用賬root號(hào)覆蓋容器中的賬號(hào),賦予最高權(quán)限苫费,將容器的
    /var/jenkins_home映射到宿主機(jī)的
    /root/jenkins_gitlab目錄下汤锨,映射容器中8080端口到宿主機(jī)49003端口
  1. 查看jenkins

執(zhí)行完成后,等待幾十秒百框,等待jenkins容器啟動(dòng)初始化闲礼。
可以查看宿主機(jī) ' /root/jenkins_gitlab ' 下是否多了很多文件
這里訪問http://服務(wù)器ip:49003 查看jenkins是否啟動(dòng)成功
看到如下界面說明啟動(dòng)成功:


jenkins.png
  • 上圖需要輸入管理員密碼,以下命令查看琅翻,然后點(diǎn)擊continue繼續(xù)
cat /root/jenkins_gitlab/secrets/initialAdminPassword
  • 點(diǎn)擊安裝


    install.png

    install.png
  • 安裝成功后位仁,創(chuàng)建管理員賬戶


    creatAccount.png
  • 輸入賬號(hào)密碼信息后點(diǎn)擊保存(信息要填完),來到首頁


    image.png
  • 配置jenkins, 首先安裝相應(yīng)的插件
    點(diǎn)擊系統(tǒng)配置方椎,如果這個(gè)頁面有許多錯(cuò)誤出現(xiàn)聂抢, 按照提示,去安裝缺失的插件即可棠众,如果安裝特別慢也可以選擇手動(dòng)安裝琳疏,插件安裝方法如下:


    manageJenkins.png

    點(diǎn)擊插件管理


    manageJenkins2.png.png
manageJenkins3.png.png
  • 安裝ssh插件


    image.png

    成功安裝后,進(jìn)入系統(tǒng)管理--系統(tǒng)配置


    manageJenkins4.png

    configureSystem.png

選擇高級(jí)闸拿,輸入服務(wù)器IP空盼,用戶名,密碼新荤,然后點(diǎn)擊 Test Configuration

  • 安裝gitlab揽趾、gitlab hook插件(安裝步驟同上,具體講一些配置)
Jenkins-to-GitLab authentication
configureSystem2.jpeg

點(diǎn)擊add苛骨,填寫相應(yīng)的gitlab api token


configureSystem3.png

獲取gitlab的 access token


accessToken.png

系統(tǒng)配置好后篱瞎,我們進(jìn)行項(xiàng)目的配置

  1. 首先,新建一個(gè)項(xiàng)目


    creat-item.png
  2. 創(chuàng)建成功后痒芝,進(jìn)入項(xiàng)目的配置頁面俐筋,選擇Source Code Management 進(jìn)行代碼倉庫的配置


    gitlab.png
注意
  • 如果倉庫地址選擇http方式,一定要寫服務(wù)器的ip地址严衬,使用域名時(shí)會(huì)報(bào)錯(cuò)


    source-code.png
  • 認(rèn)證的時(shí)候澄者,可以選擇username,password或者是gitlab api token的方式進(jìn)行,點(diǎn)擊add進(jìn)行認(rèn)證配置。如果是前者粱挡,配置完成后一定要重新去選擇一下你剛才配置的用戶名和密碼赠幕,因?yàn)槟J(rèn)選中的不是你新填寫的。

用戶名询筏,密碼認(rèn)證


credential.png

gitlab api token認(rèn)證

  1. 源碼管理配置完成后劣坊,我們可以移步 Build Environment,我們來搭建構(gòu)建環(huán)境,選擇Send files or execute commands over SSH after the build runs屈留,輸入我們需要執(zhí)行的ssh腳本局冰,同時(shí)服務(wù)器上進(jìn)行相關(guān)的nginx配置


    build-environment.png

    事例的shell腳本如下

sudo docker stop nodeapp || true \
 && sudo docker rm nodeapp || true \ 
cd /root/jenkins_gitlab/workspace/vuejenkinsdemo  \
&& ls \
 && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_gitlab/workspace/vuejenkinsdemo:/home/project/ node \
&& pwd \
&& cd /root/jenkins_gitlab/workspace/vuejenkinsdemo \
&& ls \
&& npm i \
&& npm run build \
&& ls \

  1. 配置完成后,點(diǎn)擊save灌危,進(jìn)入到項(xiàng)目的執(zhí)行頁面


    build.png

    console-output.png
  2. 到此康二,我們已經(jīng)實(shí)現(xiàn)了手動(dòng)一鍵部署

  3. 接下來我們配置GitLab webhook,實(shí)現(xiàn)自動(dòng)部署

GitLab-to-Jenkins authentication
  • 進(jìn)入到項(xiàng)目配置頁面勇蝙,選擇build triggers沫勿,配置如下,gitlab webhook url 如圖所示,然后點(diǎn)擊advanced,找到secret token味混,點(diǎn)擊生成产雹,獲得secret token的值


    build-triggers.png

    secreat-token.png
  • 移步gitlab, 找到項(xiàng)目,選擇setting-->integrations翁锡,配置完成后選擇add webhook,然后點(diǎn)擊下方test,提示成功后蔓挖,去jenkins構(gòu)建頁面可以看到有任務(wù)正在構(gòu)建,也可以根據(jù)構(gòu)建結(jié)果進(jìn)行錯(cuò)誤排查


    gitlab-webhook1.png

    gitlab-webhook2.png

    gitlab-webhook3.png
注意
  • 當(dāng)點(diǎn)擊test時(shí)馆衔,由于本地化的原因瘟判,報(bào)了500錯(cuò)誤,修改方式是應(yīng)該允許來自鉤子和服務(wù)的對(duì)本地網(wǎng)絡(luò)的請(qǐng)求角溃,
    方式一:


    gitlab-configuration.png

    方式二:

curl -X PUT --header "PRIVATE-TOKEN:pKt5yVfsysShHg_r4xkT" http://gitlab.univ.com/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true

其中拷获,PRIVATE-TOKEN是在gitlab中獲取的access token.但是這個(gè)需要權(quán)限。如果沒有權(quán)限設(shè)置的話减细,讓gitlab的管理員幫忙設(shè)置一下就可以了匆瓜。

  1. 到此,我們已經(jīng)完成了一個(gè)簡單的項(xiàng)目自動(dòng)化部署過程未蝌。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驮吱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子树埠,更是在濱河造成了極大的恐慌糠馆,老刑警劉巖嘶伟,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怎憋,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绊袋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門毕匀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人癌别,你說我怎么就攤上這事皂岔。” “怎么了展姐?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵躁垛,是天一觀的道長。 經(jīng)常有香客問我圾笨,道長教馆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任擂达,我火速辦了婚禮土铺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘板鬓。我一直安慰自己悲敷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布俭令。 她就那樣靜靜地躺著后德,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抄腔。 梳的紋絲不亂的頭發(fā)上探遵,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音妓柜,去河邊找鬼箱季。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棍掐,可吹牛的內(nèi)容都是我干的藏雏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼作煌,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼掘殴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粟誓,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤奏寨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鹰服,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體病瞳,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揽咕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了套菜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲善。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逗柴,靈堂內(nèi)的尸體忽然破棺而出蛹头,到底是詐尸還是另有隱情,我是刑警寧澤戏溺,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布渣蜗,位于F島的核電站,受9級(jí)特大地震影響旷祸,放射性物質(zhì)發(fā)生泄漏袍睡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一肋僧、第九天 我趴在偏房一處隱蔽的房頂上張望斑胜。 院中可真熱鬧,春花似錦嫌吠、人聲如沸止潘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凭戴。三九已至,卻和暖如春炕矮,著一層夾襖步出監(jiān)牢的瞬間么夫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工肤视, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留档痪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓邢滑,卻偏偏與公主長得像腐螟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子困后,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345