zoukankan      html  css  js  c++  java
  • DevOps实践之一:基于Docker构建企业Jenkins CI平台

    基于Docker构建企业Jenkins CI平台

    一.什么是CI

      持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    二.CI工具

           持续集成工具:jenkins

    构建工具:maven

    版本控制库:git

    镜像仓库:harbor

    三.CI流程

      

    工作流程:

    1. 开发人员提交代码到Git版本仓库;

    2. Jenkins人工/定时触发项目构建;

    3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;

    4. Jenkins在Docker主机创建容器并发布。

    环境规划如下:

    操作系统:centos7.6

    四.部署Git代码版本仓库

    1. 安装git仓库

           # yum install git -y

    2. 创建Git用户并设置密码

           # useradd git

      # passwd git

    3. 创建仓库

           # su - git

    # mkdir tomcat-java-demo.git

    # cd tomcat-java-demo.git

    # git --bare init

    4. 访问创建的这个仓库

           # git clone git@192.168.1.165:/home/git/tomcat-java-demo.git

    五.上传java项目代码(192.168.1.166)

           # cd /home/

           # git clone https://github.com/lizhenliang/tomcat-java-demo

           # cd /home/tomcat-java-demo

           修改私有镜像仓库地址:

           # vim .git/config

           url = git@192.168.1.165:/home/git/tomcat-java-demo.git

           本地代码提交到git镜像仓库

           # git add .

           # git commit -m 'all'

           # git push origin master

          

      备注:初次提交可能报错

          

      解决方案:

           # git config --global user.email "you@example.com"

           # git config --global user.name "Your Name"

    六.部署Harbor镜像仓库(192.168.1.165)

      参考:https://www.cnblogs.com/521football/p/10571304.html

    七.配置JDK和Maven环境(192.168.1.166)

           # tar -zxvf jdk-8u45-linux-x64.tar.gz

           # tar -zxvf apache-maven-3.5.0-bin.tar.gz

           # mv apache-maven-3.5.0 /usr/local/maven

           # mv jdk1.8.0_45/ /usr/local/jdk

           配置java环境变量

           vim /etc/profile

           export JAVA_HOME=/usr/local/jdk

    export PATH=$PATH:$JAVA_HOME/bin

    source /etc/profile

    # java -version

    java version "1.8.0_45"

    Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

    八.安装jenkins(192.168.1.166)

         1. 安装jenkins

           # tar -zxvf apache-tomcat-8.0.46.tar.gz

           # mv apache-tomcat-8.0.46 /usr/local/jenkins_tomcat

           # mv /home/jenkins.war /usr/local/jenkins_tomcat/webapps/ROOT.war

           # cd /usr/local/jenkins_tomcat

           # sh bin/startup.sh

           # tail -f logs/catalina.out

           日志中查看登录密码:cb2f3ddce17b494b847abf619a6c3ca5

           登录jenkins: http://192.168.1.166:8080

          

           可以跳过插件的安装…….

         2. 创建用户

      

      3.  安装插件

      更新jenkins官方源http替换https

           Jenkins---->插件管理--->Advanced --->Update Site

          

      修改后submit---> Check now

       安装插件

      系统管理--->插件管理--->Available---> 选择pipeline, SCM to job插件进行安装

    4.  配置git密钥(192.168.1.166)

           # ssh-keygen

           # ssh-copy-id git@192.168.1.165

    添加全局凭证

    Jenkins--->凭据--->系统--->全局凭据

      

    上图key粘贴进去即可:

    # cat ~/.ssh/id_rsa

    九.安装docker(192.168.1.166)

           参考:https://www.cnblogs.com/521football/p/10484390.html

    十.构建基础镜像(192.168.1.166)

    1. 构建tomcat基础镜像并上传harbor

           创建Dockerfile-tomcat

           # vim Dockerfile-tomcat

           FROM centos:7

    MAINTAINER xbl

    ENV VERSION=8.5.39

    RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y &&

        yum clean all &&

        rm -rf /var/cache/yum/*

    RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz &&

        tar zxf apache-tomcat-${VERSION}.tar.gz &&

        mv apache-tomcat-${VERSION} /usr/local/tomcat &&

        rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* &&

        mkdir /usr/local/tomcat/webapps/test &&

        echo "ok" > /usr/local/tomcat/webapps/test/status.html &&

        sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh &&

        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    ENV PATH $PATH:/usr/local/tomcat/bin

    WORKDIR /usr/local/tomcat

    EXPOSE 8080

    CMD ["catalina.sh", "run"]

          

    # docker build -t tomcat:v1 -f Dockerfile-tomcat .

    启动镜像

    docker run -d tomcat:v1

    2. tomcat基础镜像推送到harbor

           添加harbor可信任

           # vim /etc/docker/daemon.json

           {

    "registry-mirrors": ["http://f1361db2.m.daocloud.io"],

    "insecure-registries":["192.168.1.165"]

    }

    # systemctl restart docker.service

    harbor用户以及密码登录

           # docker login 192.168.1.165  -u xubaolong -pxxx

           # docker tag tomcat:v1 192.168.1.165/library/tomcat:v1

    # docker push 192.168.1.165/library/tomcat:v1

    十一.流水线发布测试(192.168.1.166)

    创建流水线:

     

     

    备注:此参数可以拓展:master(生产),dev(开发),test(测试)

     

    Pipeline工作流程:
    1. 从git仓库中拉取代码

    2. maven构建项目及打包

    3. 项目打包并推送镜像到仓库

    • 下载tomcat基础镜像
    • 增加构建后的war包到容器内
    • Docke构建并推送业务镜像到harbor仓库

    4. 部署到docker主机

    •  删除老业务镜像
    •  拉取业务镜像
    •  启动Docker镜像

    Pipeline脚本如下:

    node {   // 指定Slave标签

       // 拉取代码

       stage('Git Checkout') {

            checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'da6ba478-0899-4dcb-9a8f-0ec24dcd9022', url: 'git@192.168.1.165:/home/git/tomcat-java-demo.git']]])

       }

       // 代码编译

       stage('Maven Build') {

            sh '''

            export JAVA_HOME=/usr/local/jdk

            /usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true

            '''

       }

       // 项目打包到镜像并推送到镜像仓库

      stage('Build and Push Image') {

        sh '''

        REPOSITORY=192.168.1.165/project/tomcat-java-demo:${branch}

        cat > Dockerfile << EOF

        FROM 192.168.1.165/library/tomcat:v1

        MAINTAINER xbl

        RUN rm -rf /usr/local/tomcat/webapps/*

        ADD target/*.war /usr/local/tomcat/webapps/ROOT.war

    EOF

        docker build -t $REPOSITORY .

        docker login 192.168.1.165 -u xubaolong -p xxx

        docker push $REPOSITORY

        '''

       }

        // 部署到Docker主机

       stage('Deploy to Docker') {

            sh '''

            REPOSITORY=192.168.1.165/project/tomcat-java-demo:${branch}

            docker rm -f tomcat-java-demo |true

            # docker image rm $REPOSITORY |true

            docker pull $REPOSITORY

            docker container run -d --name tomcat-java-demo -p 88:8080 $REPOSITORY

            '''

       }

    }

    通过浏览器来访问tomcat-java-demo项目:http://192.168.1.166:88/

     

    备注:由于tomcat,jdk,maven二进制包安装,有需要的小伙伴可自行下载

    链接:https://pan.baidu.com/s/1XKWEVy-nPErNBQDCSRd-5w  密码:h8q4

  • 相关阅读:
    021.NET5_Autofac多种注入方式
    020.NET5_Autofac初识
    018-019 NET5_内置容器支持依赖注入+IServiceCollection的生命周期
    017.NET5_内置容器基本使用
    设计库和表从哪些方面考虑(MYSQL)
    MD5的如何加密空字符串的(PHP)
    Think php 5登陆注册session储存
    think php 5(命令行)创建控制器、model
    PHP面试题(个人总结)————(暂不更新)
    PHP中的curl库使用
  • 原文地址:https://www.cnblogs.com/521football/p/10431072.html
Copyright © 2011-2022 走看看