zoukankan      html  css  js  c++  java
  • 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 分支合并的时候进行构建镜像与部署。

  • 相关阅读:
    error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
    configure: error: Cannot find OpenSSL's libraries
    PHP编译configure时常见错误
    解决PHP编译cURL的reinstall the libcurl问题
    Linux环境PHP7.0安装
    PHP 7的一些引人注目的新特性简单介绍
    (转).net webconfig使用IConfigurationSectionHandler自定section
    Asp.Net MVC 使用FileResult导出Excel数据文件
    ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
    [老老实实学WCF] 第十篇 消息通信模式(下) 双工
  • 原文地址:https://www.cnblogs.com/luffyxin/p/12800889.html
Copyright © 2011-2022 走看看