使用docker搭建gitlab以及ci平臺,完整版本(使用springboot項目演示)

總體步驟歸納

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

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

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

使用的是一個開源庫git

github.com/sameersbn/d…github

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

  • 肯定你安裝好了docker和docker-compose
    1
  • 下載官方docker-compose文件 wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml 修改兩個地方
    2
    gitlab_port就是你訪問的端口地址,gitlab_host則是你配置的虛擬機ip 這時你的目錄結構應該是這樣的
    3
    cd至gitlab目錄下執行命令docker-compose up等待docker鏡像安裝完成 完成後等待幾分鐘gitlab初始化,訪問http://yourdomain:10080,重置密碼
    4
    這裏我已經建好項目了,到此 第一步搭建gitlab服務已經完成接下來是第二步

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

  • 新建dev分支
    5
    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分支時 觸發構建docker

  • 搭建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這裏 shell

6
註冊完畢後
7
能夠看到這裏有顯示,你應該只有一個 接下來是將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項目至對應路徑springboot

3. 最後一步啦

如今項目的某個接口返回數據是這樣的bash

image.png

咱們修改一下服務器

image.png
提交至dev分支
image.png
能夠看到剛剛咱們提交的請求已經出如今項目主頁了,咱們合併他
image.png

選擇對應的job查看,已經在跑了 app

image.png

curl一下

image.png

小夥伴們還不趕忙試試?

相關文章
相關標籤/搜索