搭建一套基于Docker Jenkins CI CD devOpts環(huán)境

0.前言

在互聯(lián)網(wǎng)時(shí)代,對于每一家公司,軟件開發(fā)和發(fā)布的重要性不言而喻赖草,目前已經(jīng)形成一套標(biāo)準(zhǔn)的流程,最重要的組成部分就是持續(xù)集成(CI)及持續(xù)部署剪个、交付(CD)秧骑。本文基于Jenkins+Docker+Github實(shí)現(xiàn)一套CI自動化發(fā)布流程。
??本文想介紹下,對于沒有接觸過CI腿堤,CD的同學(xué)阀坏,如何基于Jenkins+Docker+Github搭建一套自動化發(fā)布流程,本文會以一個(gè)簡單Java Web項(xiàng)目為例子笆檀,每次Push代碼到github上忌堂,jenkins都會重新拉取代碼,并跑完UT IT測試酗洒,然后將最新的war包構(gòu)建好士修,發(fā)布到docker的容器上。

image.png

1. 環(huán)境搭建

1.1 Docker安裝

我的環(huán)境是CentOS7.5樱衷,首先在server上安裝Docker棋嘲。具體步驟可以參照以下文章:
Docker入門安裝使用教程

1.2 Jenkins安裝

  1. docker 安裝jenkins非常方便執(zhí)行下面的腳本就OK了

docker run --name devops-jenkins --user=root -p 8080:8080 -p 50000:50000 -v /opt/data/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts

  1. registry安裝,做這一步的目的是作為開發(fā)者矩桂, 自然會自己制作一些鏡像沸移, 在公司內(nèi)網(wǎng)分發(fā), 或者開發(fā)團(tuán)隊(duì)制作鏡像侄榴, 然后交付給測試團(tuán)隊(duì)進(jìn)行測試雹锣, 這就需要一個(gè)內(nèi)部分發(fā)鏡像的服務(wù)器, 這個(gè) Docker 團(tuán)隊(duì)自然也想到了癞蚕, 并且提供了一個(gè)鏡像 retistry 蕊爵, 先把這個(gè)鏡像拉倒本地

docker run --name devops-registry -p 5000:5000 -v /opt/devdata/registry:/var/lib/registry -d registry

  1. 啟動完jenkins后通過瀏覽器輸入地址:

http://部署jenkins主機(jī)IP:端口

  1. 根據(jù)提示從輸入administrator password 或者可以通過啟動日志

docker logs devops-jenkins


image.png
  1. 進(jìn)入插件安裝界面,連網(wǎng)等待插件安裝桦山,安裝完插件后攒射,進(jìn)入創(chuàng)建管理員界面,輸入完管理員賬號后恒水,點(diǎn)擊continue as admin 就安裝完成了会放,如果需要安裝一些自己想要的插件,則可以Manage jenkins=>Manage Plugin進(jìn)行修改钉凌。


    image.png

1.3 Java 項(xiàng)目介紹

這個(gè)就不詳細(xì)介紹了鸦概,就是利用Eclipse簡單的建了一個(gè)簡單的Maven(Spring Boot)項(xiàng)目,包含了一個(gè)簡單的Controller和UT甩骏,IT測試case窗市,項(xiàng)目結(jié)構(gòu)如下:

image.png

Github地址如下:https://github.com/Syfhehe/CI-CD-Demo

2. Jenkins Pipeline

2.1 Jenkins Pipeline 打通 Github集成的橋梁。

  1. Maven配置
    進(jìn)入Jenkins-->Global Tool Configuration饮笛,添加一個(gè)Maven咨察。
image.png
  1. 進(jìn)入Github --> Setting -->Develper Settings --> Personal Access Token --> Generate new token,生成一個(gè)新的Token福青。
    image.png

    自己先保存此token摄狱,如果丟失脓诡,之后再也無法找到這個(gè)token
image.png

3.為了讓Pipeline捕獲倉庫中的事件(例如push)媒役,應(yīng)該在GitHub上正確設(shè)置Jenkins GitHub webhook祝谚。

在Payload URL中設(shè)置xxx/github-webhook/,如下所示:


image.png
  1. 登錄Jenkins酣衷,進(jìn)入系統(tǒng)管理 --> 系統(tǒng)設(shè)置 --> GitHub --> Add GitHub Sever交惯,添加一個(gè)Github Server
    image.png

    API URL 輸入 https://api.github.com,Credentials點(diǎn)擊Add添加穿仪,Kind選擇Secret Text,具體如下圖所示席爽。
    image.png

    設(shè)置完成后,點(diǎn)擊TestConnection,提示Credentials verified for user UUserName, rate limit: xxx,則表明有效啊片。

2.2 建立一個(gè)Github有push事件只锻, Jenkins Pipeline 就會自動運(yùn)行的Jenkins Item

1.在我們之前建的Java項(xiàng)目的Git倉庫的根目錄創(chuàng)建并保存一個(gè)名為 Jenkinsfile 的文本文件。
復(fù)制以下聲明式流水線代碼并粘貼到 Jenkinsfile 文件中:

pipeline {
   agent any

   stages {
       stage ('Compile Stage') {

           steps {
               withMaven(maven : 'Maven-3.6.1') {
                   sh 'mvn clean compile'
               }
           }
       }

       stage ('Testing Stage') {

           steps {
               withMaven(maven : 'Maven-3.6.1') {
                   sh 'mvn test'
               }
           }
           post {
               always {
                   junit 'target/surefire-reports/*.xml' 
               }
           }
       }
       
   }
}

2.在Jenkins上創(chuàng)建一個(gè)Pipeline紫谷。名字隨便齐饮。


image.png

3.勾選GitHub hook trigger for GITScm polling ,這樣每次push就會執(zhí)行一遍jenkinsfile的腳本笤昨。


image.png

如果希望pipeline執(zhí)行Jenkinsfile的腳本沈矿,還需進(jìn)行以下設(shè)置,這里的Credentials就是在上一章生成的咬腋。
image.png
  1. 保存退出,然后隨便push一點(diǎn)修改到github睡互,你就會發(fā)現(xiàn)Jenkins Pipeline會自動build根竿。


    image.png

5.這樣CI-CD的前半部分:CI,就算完成了就珠。

To Be Continue.....

參考文檔:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寇壳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子妻怎,更是在濱河造成了極大的恐慌壳炎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逼侦,死亡現(xiàn)場離奇詭異匿辩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)榛丢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門铲球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晰赞,你說我怎么就攤上這事稼病⊙∏龋” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵然走,是天一觀的道長援制。 經(jīng)常有香客問我,道長芍瑞,這世上最難降的妖魔是什么晨仑? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮啄巧,結(jié)果婚禮上寻歧,老公的妹妹穿的比我還像新娘。我一直安慰自己秩仆,他們只是感情好码泛,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澄耍,像睡著了一般噪珊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上齐莲,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天痢站,我揣著相機(jī)與錄音,去河邊找鬼选酗。 笑死阵难,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芒填。 我是一名探鬼主播呜叫,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殿衰!你這毒婦竟也來了朱庆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤闷祥,失蹤者是張志新(化名)和其女友劉穎娱颊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凯砍,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箱硕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悟衩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颅痊。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖局待,靈堂內(nèi)的尸體忽然破棺而出斑响,到底是詐尸還是另有隱情菱属,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布舰罚,位于F島的核電站纽门,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏营罢。R本人自食惡果不足惜赏陵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲漾。 院中可真熱鬧蝙搔,春花似錦、人聲如沸考传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僚楞。三九已至勤晚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泉褐,已是汗流浹背赐写。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膜赃,地道東北人挺邀。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像跳座,于是被迫代替她去往敵國和親端铛。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 教程:https://www.yiibai.com/jenkins/ 本節(jié)內(nèi)容: Jenkins介紹 安裝部署Je...
    達(dá)微閱讀 9,015評論 2 77
  • 1躺坟、傳統(tǒng)我們的項(xiàng)目開發(fā)模式是產(chǎn)品調(diào)研提出需求,開發(fā)團(tuán)隊(duì)研究決定開發(fā)方案選型乳蓄。然后開始一個(gè)周期的開發(fā)咪橙,模塊開發(fā)完成之...
    張熙閱讀 12,400評論 2 42
  • Jenkins Pipleline插件介紹 ![sttp://upload-images.jianshu.io/u...
    燕京博士閱讀 3,192評論 0 11
  • 前言 在日常開發(fā)中,經(jīng)常會有發(fā)布的需求虚倒,而且經(jīng)常會碰到各種環(huán)境美侦,比如:開發(fā)環(huán)境、測試環(huán)境魂奥、生產(chǎn)環(huán)境菠剩。雖然可以使用手...
    tinylk閱讀 38,799評論 34 77
  • 之前剛來上大學(xué)時(shí),我們中有四個(gè)談異地戀的耻煤,當(dāng)然也有我具壮。后來又有一個(gè)室友也談戀愛了准颓,而且也是異地戀,姑且叫她...
    飠兒閱讀 284評論 0 0