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 分支合并的时候进行构建镜像与部署。

猜你喜欢

转载自www.cnblogs.com/luffyxin/p/12800889.html