持續(xù)集成 gitlab-ci+arteryDocker

最近學(xué)習(xí)了下docker ,聽了一次卷宗團(tuán)隊(duì)王凱同學(xué)關(guān)于gitlab-ci的分享,加上公司有arterydocker這個(gè)平臺(tái)。所以決定嘗試配置一套自動(dòng)集成部署。

下面的內(nèi)容主要分為幾個(gè)部分:

1. 新的流程
2. 關(guān)于gitlab-ci介紹
3. docker的簡單介紹
4. arteryDocker簡單介紹
5. gitlab-ci +arteryDocker具體配置
6. 遇到的問題

如果只是需要了解,請(qǐng)看1,2,3。 如果需要具體嘗試 請(qǐng)看剩下幾條。

1.新的流程

新流程

當(dāng)前由于arteryDocker平臺(tái)不支持命令啟動(dòng)更新部署應(yīng)用 所以 暫時(shí)只能支持到 每次提交自動(dòng)生成鏡像 并且自動(dòng)推送到arteryDocker倉庫,需手動(dòng)點(diǎn)擊平臺(tái)上應(yīng)用的重新部署按鈕,從而完成部署。arteryDocker平臺(tái)在7月底版本應(yīng)該會(huì)支持遠(yuǎn)程調(diào)用重新部署啟動(dòng)應(yīng)用。到時(shí)可實(shí)現(xiàn)全部自動(dòng)化。

2.關(guān)于gitlab-ci介紹

gitlab-ci介紹

3.docker的簡單介紹

docker簡單介紹

推薦書籍:
docker --從入門到實(shí)踐

4.arteryDocker簡單介紹

借ADC上關(guān)于arteryDocker的介紹

ArteryDocker平臺(tái)是以docker為底層核心開發(fā)的一套集部署、管理、調(diào)度、運(yùn)維于一體的系統(tǒng),它實(shí)現(xiàn)了傳統(tǒng)的項(xiàng)目與docker進(jìn)行完美結(jié)合。

優(yōu)勢:

? 封裝
    應(yīng)用發(fā)布包包含了所有所需要的環(huán)境
? 高效
    容器技術(shù)比虛擬機(jī)更加輕量,資源開銷少,利用率高
? 智能
    應(yīng)用占用資源在允許的范圍內(nèi)按需占用,系統(tǒng)能夠及時(shí)有效統(tǒng)治警告,錯(cuò)誤信息
? 安全
    所有應(yīng)用與外界網(wǎng)絡(luò)隔離,任何端口都需要進(jìn)行路由的端口映射

我理解的arteryDocker平臺(tái)是將docker很多功能做到可視化,并且增加一些命令的封裝,將用戶的操作盡可能的簡單化。

詳細(xì)介紹請(qǐng)見

5. gitlab-ci +arteryDocker具體配置

本文基于 centos7 gitlab 8.8.5 gitlab-ci-runner 1.11.2 docker 17.05.0
流程如下
1. 配置runner服務(wù)器環(huán)境(包含runner,maven,jdk,docker)
2. 書寫dockerfile
3. 配置gitlab-ci.yml
4. arteryDocker平臺(tái)使用
一、 配置runner服務(wù)器環(huán)境(包含runner,maven,jdk,docker)

  1. 安裝maven,安裝jdk (命令網(wǎng)上一大堆)
  2. 安裝 runner

gitlab-ci介紹

  1. 安裝docker (注意與runner在一臺(tái)服務(wù)器上安裝)
    docker --從入門到實(shí)踐中centos安裝docker章節(jié)。
    安裝后 記得 啟動(dòng)docker 服務(wù)
    service docker start
    還有記得把gitlab-runner這個(gè)用戶 加入docker組中 否則 docker-runner執(zhí)行腳本 關(guān)于操作docker會(huì)報(bào)無權(quán)限。具體操作見第一個(gè)問題解決方案

4 . 整體流程

每次合并后,gitlab-ci找到指定runner 執(zhí)行 .gitlab-ci.yml,gitlab-ci.yml見下圖

.gitlab-ci.yml

runner 調(diào)用maven去打包,將打好的war包和項(xiàng)目中寫好的dockerfile放入同一目錄,然后將調(diào)用docker命令生成鏡像,推送到artery平臺(tái),跟arteryDocker了解后,7月底的版本 arteryDocker會(huì)支持遠(yuǎn)程調(diào)用更換應(yīng)用鏡像、重新部署。

5 . 注意
① . runner執(zhí)行命令時(shí)使用的是gitlab-runner這個(gè)用戶執(zhí)行的,一個(gè)是需要將該用戶加入docker的group,否則執(zhí)行命令報(bào)沒有權(quán)限,第二個(gè)是需要將maven 本地repository的所有者改為gitlab-runner,不這樣mvn操作時(shí)會(huì)報(bào)一堆不讓刪除等等的錯(cuò)誤。
② . 關(guān)于dockerfile的書寫 要注意dockerfiel文件名大小寫的問題
③. 關(guān)于config中的配置 如果沒有使用配置服務(wù),或者獲取時(shí)候沒有從環(huán)境變量中獲取,則要將config.properties放入數(shù)據(jù)卷中,啟動(dòng)時(shí)通過ENTRYPOINT將config文件替換。

Dockerfile
dzjz-entrypoint.sh

6. 遇到的問題

http://www.lxweimin.com/p/941a0a034e4d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • 一、持續(xù)集成(Continuous Integration) 要了解GitLab-CI與GitLab Runner...
    tsyeyuanfeng閱讀 98,091評(píng)論 17 134
  • 作為程序員,代碼是一定要寫的,而且要天天寫。在好多地方見過這樣一種說法: 只會(huì)寫程序的程序員不是好程序員 當(dāng)然,我...
    cjzhao閱讀 16,418評(píng)論 19 89
  • 本文以Gitlab來講解Git使用以及持續(xù)集成, 持續(xù)集成采用的是Gitlab CI. 其他代碼托管網(wǎng)站,如Git...
    x1596357閱讀 5,444評(píng)論 0 6
  • 咸亭小筑, 望春波湖水, 意語斷橋。 歸來或問, 風(fēng)有零落誰? 一遠(yuǎn)長山, 西京猶望, 君知當(dāng)歸否...
    半空風(fēng)清閱讀 209評(píng)論 4 2