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

 

posted @ 2019-03-22 17:16 学无止尽,不忘初心 阅读(...) 评论(...) 编辑 收藏