实验环境
系统版本:16.04-4.4.0-21-generic
Jenkins版本:v2.140
Docker版本:18.09.0
Harbor版本:v1.5.3(centos7-3.10)
注:由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0
gogs版本:v1.6.3(centos7-3.10)
jdk版本:1.8.0_191
实验架构
安装三步曲
第一步安装Gogs
Gogs安装git和Gogs源码包
注:安装过程简单,不单独介绍了,不懂可以看上一篇文章Centos7 用gogs搭建git仓库,但是切记一定要有java项目的源代码,不然Jenkins无法通过以下方式下拉!
第二步安装harbor
Harbor安装docker和harbor
注:安装过程简单,不单独介绍了,不懂可以看上一篇文章Centos7安装Docker镜像仓库Harbor1.5.3
第三步安装Jenkins
1、Jenkins安装docke、jdk、jenkins和maven
注:具体安装方式不限,能达到实验效果即可,这里我不重复安装Jenkins了,不会的可以自行百度或者参考以上两篇文章,不许需要配置太多,如下图:
2、使用Jenkins构建
注:以上截图使用密钥认证和http都行,建议使用密钥!构建完可能会失败,因为配置不全,但是jenkins服务器会出现项目目录!
3、创建自动docker自动化目录
mkdir /root/.jenkins/workspace/smartloan-bms-dev/docker
mkdir -p /root/.jenkins/workspace/smartloan-bms-dev/docker/{conf,src}
注:这个目录里主要是为了存储shell自动脚本、Dockerfile、国内docker源和Jenkins打包生成目录!
4、创建shell脚本
vi /root/.jenkins/workspace/smartloan-bms-dev/docker/images.sh
##############指定解释器和脚本主要作用############# #!/bin/bash #maven build war to docker images ##############赋值java或者xx项目生成目录############# base_dir='/root/.jenkins/workspace/smartloan-bms-dev/' ##############赋值war包或者jar包生成目录############# war_dir="${base_dir}target/" ##############赋值生成的jar包或者war包名称行############## war_snaphost=
awk -F'[<>]' '/warPackageName/ {print $3}' ${base_dir}pom.xml
##############赋值生成的jar包或者war包名称################# war_name=echo $war_snaphost | awk -F- '{print $1"-"$2}'
##############赋值生成jar包或者war包的版本################# war_version=echo $war_snaphost | awk -F- '{print $3}'
##############赋值docker工作目录########################## docker_dir="${base_dir}docker/" ###############赋值ubuntu的docker国内源地址目录############ docker_conf_dir="${docker_dir}conf/" ##############赋值镜像存放目录######################### docker_src_dir="${docker_dir}src/" ###############赋值docker环境变量目录##################### docker='/usr/bin/docker' ################赋值docker镜像仓库######################## registry='hub.xyc.idc/' ################赋值docker镜像仓库项目名################## reg_name="feiyu/" ################检查新版本镜像是否存在#################### if $docker inspect ${registry}${reg_name}${war_name}:$war_version > /dev/null 2>&1 ;then /bin/echo "This version already exists , skipping !!!"
exit 1 fi ###############创建不存在的目录########################### test -e $docker_dir || mkdir -p $docker_dir test -e $docker_conf_dir || mkdir -p $docker_conf_dir test -e $docker_src_dir || mkdir -p $docker_src_dir ################拷贝jar包到指定目录################### \cp ${war_dir}$war_snaphost ${docker_src_dir}${war_name}.jar || exit 1 ################根据Dockerfile生成新镜像############### $docker build -t ${registry}${reg_name}${war_name}:$war_version $docker_dir && echo "shell -> docke build done" || exit 1; ################推送镜像到仓库######################## $docker push ${registry}${reg_name}${war_name}:$war_version && echo "shell -> docke push done" || exit 1; #################查看状态######################## echo "shell -> status "$?
5、创建Dockerfile文件
vi /root/.jenkins/workspace/smartloan-bms-dev/docker/Dockerfile
###镜像名smartloan-bms-dev FROM openjdk:8-jre MAINTAINER wangfeiyu@xingyoucai.com ###env ENV TZ=Asia/Shanghai ENV LANG en_US.UTF-8 ###拷贝jar包到指定目录 ADD src/smartloan-bms.jar /root/smartloan-bms.jar ###指定工作目录 WORKDIR /root/ ###运行命令 CMD java -jar /root/smartloan-bms.jar
6、将Ubuntu系统国内源文件放到conf目录下
vi /root/.jenkins/workspace/smartloan-bms-dev/docker/conf/sources.list
deb http://mirrors.163.com/debian/ jessie main non-free contrib deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb-src http://mirrors.163.com/debian/ jessie main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
7、Jenkins修改maven项目配置项
注:这里使用的是密钥认证和http都行,建议使用密钥!
8、点击立即构建查看控制台输出
注:以上截图说明构建成功!
9、验证
1)验证是否本地打包完成
ls /root/.jenkins/workspace/smartloan-bms-dev/docker/src/
2)验证本地是否构建了新的镜像
docker images
3)验证是否将新构建的镜像上传镜像仓库
访问网址:https://hub.xyc.idc/
注:以上验证说明一切工作正常!