• Docker教程---CI持续集成


    一、引言

      项目部署:

        1、将项目通过maven进行编译打包

        2、将文件上传到指定的服务器中

        3、将war包放到tomcat的目录中

        4、通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器

    二、CI介绍

      CI(continuous intergration)持续集成

      持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并测试。

      优点:

        快速发现错误

        防止代码偏离主分支

     三、实现持续集成

      1、创建一个全新的虚拟机,并且至少4G的运行内存 IP地址:10.0.0.11

      2、安装docker以及docker-compose

    systemctl disable firewalld
    systemctl stop firewalld
    setenforce 0
    yum -y install yum-utils device-mapper-persisten-data lvm2
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makacache fast
    yum -y install docker-ce
    systemctl start docker                  启动docker
    systemctl enable docker                 设置开机自启
    docker run hello-world                  测试
    安装docker-compose见上一篇文章

      3、docker-compose.yml文件去安装gitlab

    mkdir /opt/docker_gitlab
    vim docker-compose.yml
    
    version: '3.1'
    services:
     gitlad:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      container_name: "gitlab"
      restart: always
      privileged: true
      hostname: 'gitlab'
      environment:
       TZ: 'Asia/Shanghai'
       GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://10.0.0.11'
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['gitlab_shell_ssh_port'] = 22
      ports:
       - '80:80'
       - '443:443'
       - '22:22'
      volumes:
       - /opt/docker_gitlab/config:/etc/gitlab
       - /opt/docker_gitlab/data:/var/opt/gitlab
       - /opt/docker_gitlab/logs:/var/log/gitlab

      vim /etc/ssh/sshd_config 修改ssh监听端口号为60022,解决映射冲突
      Port 60022

      systemctl restart sshd   重启服务

      docker-compose up -d     docker构建gitlab服务(下载和运行是比较慢的)

       验证,默认使用80端口

      

           

         设置密码,并登录,默认账户是root,密码我设置得是password。

      4、安装gitlab-tunner

        使用IP:10.0.0.31

        安装apache-maven、jdk

    http://49.233.184.186/fdb/soft1/jdk-8u251-linux-x64.tar.gz?cr=2508131169&r=0.31045177099010024
    tar -zxvf jdk-8u251-linux-x64.tar.gz
    rm -rf jdk-8u251-linux-x64.tar.gz

    wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
    cp apache
    -maven-3.5.3-bin.tar.gz /usr/local/maven
    tar
    -zxvf apache-maven-3.5.3-bin.tar.gz
    rm -fr apache-maven-3.5.3-bin.tar.gz

        配置环境变量

    JAVA_HOME=/usr/local/java/jdk1.8.0_251
    MAVEN_HOME=/usr/local/maven/apache-maven-3.5.3
    PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:/usr/local/bin/

        安装gitlab-runner服务

    mkdir /opt/docker_gitlab-runner
    cd /opt/dcoker_gitlab-runner
    vim docker-compose.yml
    
    version: '3.1'
    services:
     runner:
      image: 'gitlab/gitlab-runner:v11.4.2'
      container_name: gitlab-runner
      restart: always
      volumes:
       - /opt/docker_gitlab-runner/config:/etc/gitlab-runner
       - /var/run/docker.sock:/var/run/docker.sock
    - /usr/local/maven/apache-maven-3.5.3:/usr/local/maven/apache-maven-3.5.3
      - /usr/local/java/jdk1.8.0_251:/usr/local/java/jdk1.8.0_251

      在宿主机启动docker程序后先执行,如果重启过docker,重新执行

    chown root:root /var/run/docker.sock

      在/opt/docker_gitlab-runner目录中执行

    docker-compose up -d --build

      添加容器权限,保证容器可以使用宿主机的docker

    docker exec -it gitlab-runner usermod -aG root gitlab-runner

    四、关联gitlab项目

      1、gitlab创建项目

            

      2、注册gitlab-runner

    [root@computer ~]# docker exec -it gitlab-runner gitlab-runner register
    Runtime platform                                    arch=amd64 os=linux pid=25 revision=cf91d5e1 version=11.4.2
    Running in system-mode.                            
                                                       
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):             项目集成CI地址
    http://10.0.0.11/ 
    Please enter the gitlab-ci token for this runner:                                  项目集成CI注册令牌
    ickaCtLRCympzbEwtyoH
    Please enter the gitlab-ci description for this runner:                            添加描述
    [b0e7c9960f0b]: testcijicheng
    Please enter the gitlab-ci tags for this runner (comma separated):                 添加tag
    deploy
    Registering runner... succeeded                     runner=ickaCtLR
    Please enter the executor: shell, virtualbox, kubernetes, docker, docker-ssh, parallels, ssh, docker+machine, docker-ssh+machine:   以什么方式执行,选sehll
    shell
    Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

    刷新页面,再次点击展开Runner

     

     

    五、整合项目入门测试

      1、创建maven工程,编写html页面

             

         创建一个简单的maven工程

               

               

         填写项目名称

              

        指定打包方式

        

        在webapp下面新建一个inde.html页面

               

               

       

      导入包

      

       

      

       创建一个本地的gitlab仓库

               

               

        添加到暂存区

               

          添加到本地gitlab仓库

         

              

     

      2、将maven工程推送到gitlab中

             

          

        输入刚才复制的http的路径

        

         接着输入账户和密码:root/password。

        

         刷新页面,就能看到刚提交的代码

     3、编写gitlab-ci.yml文件

           

             项目添加.gitlab-ci.yml文件

       

        添加一下内容

    stages:
      - test
    test:
      stage:
      script:
        - echo first test ci

        然后提交到到gitlab上,刷新gitlab服务器内容

             

      4、可以在gitlab中查看到gitlab-ci.yml编写的内容

          

          

    六、CI持续集成实现

      1、编写.gitlab-ci.yml

        找到mvn打包得路径,添加打包命令

    stages:
      - test
    test:
      stage:
      script:
        - echo first test ci
        - /usr/local/maven/apache-maven-3.5.3/bin/mvn package

        提交代码至gitlab上,自动执行流水线

          

       项目中创建一个docker目录

           

       

       在docker下创建一个Dockerfile文件

      

       添加如下内容

    FROM daocloud.io/library/tomcat:8.5.15-jre8
    COPY testci.war /usr/local/tomcat/webapps

      同级目录下创建docker-compose.yml文件

    version : "3.1"
    services:
      testci:
        build:
          restart:always
          container_name: testci
          ports:
            - 8080:8080

      在.gitlab-ci.yml下添加如下内容

      - copy target/testci-1.0-SNAPSHOT.war docker/testci.war           复制war
      - docker-compose down                                             先删除正在运行得容器
      - docker-compose up -d --build                                    启动一个新容器
      - docker rmi $(docker images -qf dangling=true)                   删除所有名字为none的镜像

      提交代码之后,访问浏览器:http://ip:8080端口就能看到项目效果了。

            

  • 相关阅读:
    数组常用遍历方法总结
    文本控制行数,超出省略号显示
    数据结构入门
    数论函数补充 公式推导
    几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
    COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution
    数论函数
    数论入门
    USACO1.4 1.5 搜索剪枝与数字 洛谷OJ P1214 P1215 P1217 P1218
    USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
  • 原文地址:https://www.cnblogs.com/aqicheng/p/13438559.html
Copyright © 2020-2023  润新知