基于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

DevOps实践之一:基于Docker构建企业Jenkins CI平台的更多相关文章

  1. 基于 Docker 构建企业 Jenkins CI平台

    持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...

  2. 基于Docker构建企业Jenkins CI平台

  3. 使用Docker构建企业Jenkins CI平台

    在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部 ...

  4. 视频私有云实战:基于Docker构建点播私有云平台

    私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...

  5. 基于Kubernetes构建企业Jenkins master/slave CI/CD平台

    搭建平台目的: k8s中搭建jenkins master/slave架构,解决单jenkins执行效率低,资源不足等问题(jenkins master 调度任务到 slave上,并发执行任务,提升任务 ...

  6. 基于docker构建flink大数据处理平台

    https://www.cnblogs.com/1ssqq1lxr/p/10417005.html 由于公司业务需求,需要搭建一套实时处理数据平台,基于多方面调研选择了Flink. 初始化Swarm环 ...

  7. 基于docker构建jenkins和svn服务(转)

    码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...

  8. (转)基于OpenStack构建企业私有云(1)实验环境准备

    原文:https://www.unixhot.com/article/407 https://www.cnblogs.com/kevingrace/p/5707003.html-----完整部署Cen ...

  9. Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务

    本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...

随机推荐

  1. CSS 外边距合并。

    <div id = "parent"> <div id = "child"> demo </div> </div> ...

  2. 双网卡+mitmproxy+iptables搭建SSL中间人(支持非HTTPS协议)

    "想要解决一个问题,最根本方法的就是了解这一切是如何工作的,而不是玄学." --ASCII0X03 最近学习发现现在很多现成的安卓SSL中间人工具和教程都只针对HTTPS流量,比如 ...

  3. 洛谷 P1129 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  4. Rocketmq 集群

    写在前面 Rocketmq采用apache rockemq 4.2.0release版本. 源码路径(http://mirrors.shu.edu.cn/apache/rocketmq/4.2.0/r ...

  5. SpringMVC中Json数据格式转换

    1    @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为 ...

  6. .deb软件包的安装和软件的卸载

    前言: .deb格式的软件包是Debian和Ubuntu等Linux发行版软件安装包的文件扩展名. 使用.deb格式软件安装包安装软件 命令如下: sudo dpkg -i package_file. ...

  7. 《javascript语言精粹》读书笔记 Item2 对象

    第三章 对象 JavaScript的简单数据类型包括数字.字符串.布尔值(true和false).null值和undefined值.其他 数字.字符串和布尔值"貌似"对象,因为它们 ...

  8. 玩转spring mvc(六)---自定义异常跳转页面

    本文主要是关于如何在出现异常 如404时,跳转到自定义的异常页面,当然这不是spring的知识,但可以整合进去. 在web.xml中新增如下代码,里边的路径可以根据实际情况进行修改 <!-- 7 ...

  9. 十九. 想快速开发app,需要找外包吗?

    健生干货分享:第19篇 摘要:最近和两位准备开发app的创业者聊天,他们之前没有移动互联网的相关经验,有的是想法和资金.他们在纠结:想快速开发app,需要找外包吗? 最近和两位想开发app的创业者聊天 ...

  10. redis list命令操作

    1.将值追加到列表 RPUSH key value [value ...]summary: Append one or multiple values to a listsince: 1.0.0 12 ...