天天看點

【工作效率】使用docker搭建gitlab以及ci平台,完整版本(使用springboot項目示範)

整體步驟概括

  • 準備兩台虛拟機,最小安裝,配置ip能ping通外網即可,安裝docker
  • 一台虛拟機跑gitlab,一台跑gitlab runner和springboot項目
  • 将springboot項目打成systemctl系統服務
  • 編寫gitlab.ci自動建構你的springboot項目

自動建構的基本思路是當dev分支合并到master分支時,觸發建構,自動釋出,下面是詳細步驟

1.通過docker、docker-compose搭建gitlab

使用的是一個開源庫

https://github.com/sameersbn/docker-gitlab

這一步基本參考這個庫就能搭建成功了

  • 确定你安裝好了docker和docker-compose
  • 下載下傳官方docker-compose檔案

    wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

修改兩個地方

gitlab_port就是你通路的端口位址,gitlab_host則是你配置的虛拟機ip

這時你的目錄結構應該是這樣的

cd至gitlab目錄下執行指令

docker-compose up

等待docker鏡像安裝完成

完成後等待幾分鐘gitlab初始化,通路

http://yourdomain:10080,

重置密碼

這裡我已經建好項目了,到此 第一步搭建gitlab服務已經完成接下來是第二步

2.注冊gitlab-runner完成項目自動建構

  • 建立dev分支

checkout你的dev分支,開發隻對dev分支操作,master分支則用于ci建構

  • 編寫gitlab-ci.yml
pages:
  stage: deploy
  script:
    - cd /gitlab-project/demo
    - git pull
    - mvn package
    - systemctl restart demo
  only:
    - master           

可以看到ci隻針對master分支,即dev分支merge至master分支時 觸發建構

  • 搭建runner伺服器

    前面說到需要準備兩台伺服器,一台搭建gitlab,一台搭建runner

gitlab-runner比較簡單,查一查如何安裝即可,安裝完畢輸入

gitlab-ci-multi-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
#這裡輸入你的gitlab域名
# executor輸入shell           

域名和token在Specific Runners這裡

注冊完畢後

可以看到這裡有顯示,你應該隻有一個

接下來是将springboot項目做成系統服務systemctl這部分内容自己百度,貼一下自己的demo.service

Description=demo

[Service]
WorkingDirectory=/gitlab-project/demo
PrivateTmp=true
Type=simple
ExecStart=/usr/java/jdk1.8.0_181-amd64/bin/java -jar /gitlab-project/demo/target/demo-0.0.1-SNAPSHOT.jar -java.io.tmpdir=/gitlab-project/tmp --spring.config.location=/gitlab-project/demo/target/classes/application.yml

ExecStop=kill -9 `ps -ef|grep java|grep -v grep|grep demo|awk '{print $2}'`

[Install]
WantedBy=multi-user.target           

gitlab-project/demo是這個demo項目的路徑,在進行ci前 你應該git clone項目至對應路徑

3. 最後一步啦

現在項目的某個接口傳回資料是這樣的

我們修改一下

送出至dev分支

可以看到剛剛我們送出的請求已經出現在項目首頁了,我們合并他

選擇對應的job檢視,已經在跑了

curl一下

小夥伴們還不趕緊試試?