gitlab+docker+maven+springboot 自動化CI/CD


一、安裝Gitlab

 

  參考 https://about.gitlab.com/installation

  1.准備工作

  以Centos7為例,准備一台至少內存為 4G 的機器

  2.安裝依賴軟件

  

sudo yum install -y git vim gcc glibc-static telnet
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

  3.設置gitlab安裝源

  

vi /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

  4.安裝Gitlab

sudo yum install -y gitlab-ce

# 安裝完成后可以使用下面的命令進行啟動配置

sudo gitlab-ctl reconfigure

# 查看狀態

gitlab-ctl status

  5.登錄和修改密碼

  

  根據提示修改初始密碼,然后創建賬號,再創建一個項目,就算安裝完成了。

 二、GitLab CI 服務器的搭建

  現在我們換一台機器安裝  

  1.安裝Docker

  // todo

    2.安裝gitlab ci runner

  

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

yum install gitlab-ci-multi-runner -y

# 查看是否運行正常

gitlab-ci-multi-runner status
  

 # 設置docker 權限

  usermod -aG docker gitlab-runner

  service docker restart

  gitlab-ci-multi-runner restart

  3.注冊一個runner

  

 

   

  進入到demo 里面,點擊如圖位置

 ps: demo 項目是一個maven 管理的 springboot 項目,可以自行創建

  

 

 

    這兩個值后面會用到,先進入到這個頁面,然后開始注冊runner

   

   gitlab-ci-multi-runner register
  # 如下圖所示配置

  

 

   192.168.31.188 這個機器是安裝docker 和 gitlab ci 的機器

  注冊好之后,可以看到

  

 

    然后我們重啟一下runner ,就可以正常使用了。

   gitlab-ci-multi-runner restart

  

 

   現在為止,gitlab 的工作是准備好了。

三、配置項目

  安裝下maven 和 jdk

  

  主要是Dockerfile 和 .gitlab-ci.yml 這兩個文件

  Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8086
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 

   .gitlab-ci.yml:cache:

  key: maven-repository-cache
  paths:
    - /usr/local/maven/repo
variables:
  MAVEN_OPTS: "-Dmaven.repo.local=/usr/local/maven/repo"
# 本次構建的階段:build package
stages:
  - compile
  - package
  - dock
# 構建 Job
build:
  stage: compile
  tags:
    - maven
  script:
    - echo "=============== 開始編譯構建任務 ==============="
    - mvn compile
# 打包
package:
  stage: package
  tags:
    - maven
  script:
    - echo "=============== 開始打包任務  ==============="
    - mvn package -Dmaven.test.skip=true
  artifacts:
    paths:
      - target/*.jar

dock:
  stage: dock
  tags:
    - maven
  script:
    - docker build -t xin-demo  .
    - if [ $(docker ps -aq --filter name=demo) ]; then docker rm -f demo;fi             
    - docker run -d -p 8086:8086 --link=mysqldx:mysql --name demo xin-demo                

 

  // 如果容器已經存在的話,就先刪除

 - if [ $(docker ps -aq --filter name=demo) ]; then docker rm -f demo;fi 
 
 // 這里可以將maven 打包好的文件傳遞給下一個 stage ,然后下一步的docker 就可以根據 這個 jar 包 和Dockerfile 構建鏡像
 artifacts: paths: - target/*.jar
 // 這里--link 連接到了另一個mysql 容器的網絡,在項目里面可以使用 mysql 代替 mysql的 ip 地址
 // eg: jdbc:mysql://mysql:3306/test
- docker run -d -p 8086:8086 --link=mysqldx:mysql --name demo xin-demo

 

 

 

 

 

 

 

  然后我們將代碼提交到 gitlab ,就可以進行自動 CI/CD了。

  

 

 

 

     

    docker 會自動運行容器,然后我們可以請求下項目里面的接口測試下。

    

    

 

     可以看到已經可以正常返回了。這樣我們就可以把代碼提交到gitlab 上之后讓它自己進行自動的 測試部署了,很方便吧。當然不一定每次修改了都要進行構建鏡像發布,我們把stage運行做一個限制,讓它只在master 分支合並的時候進行構建鏡像與部署。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM