实验环境

系统版本: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

Ubuntu16.04安装Jenkins

Centos7x3.10安装Jenkins

注:具体安装方式不限,能达到实验效果即可,这里我不重复安装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/ 注:以上验证说明一切工作正常!