ubuntu16.04通過Jenkins+shell指令碼打包docker映象並推送到映象
實驗環境
系統版本: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)
dk版本:1.8.0_191
實驗架構
安裝三步曲
第一步安裝Gogs
Gogs安裝git和Gogs原始碼包
注:安裝過程簡單,不單獨介紹了,不懂可以看上一篇文章Centos7 用gogs搭建git倉庫
第二步安裝harbor
Harbor安裝docker和harbor
注:安裝過程簡單,不單獨介紹了,不懂可以看上一篇文章Centos7安裝Docker映象倉庫Harbor1.5.3
第三步安裝Jenkins
1、Jenkins安裝docke、jdk、jenkins和maven
注:具體安裝方式不限,能達到實驗效果即可,這裡我不重複安裝Jenkins了,不會的可以自行百度或者參考以上兩篇文章,不許需要配置太多,如下圖:
2、建立Jenkins專案目錄
mkdir /root/.jenkins/workspace/smartloan-bms-dev
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 [email protected]
###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國內docker映象原始檔放到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專案
注:這裡使用的是金鑰認證!
8、點選立即構建檢視控制檯輸出
注:以上截圖說明構建成功!
9、驗證
1)驗證是否本地打包完成
ls /root/.jenkins/workspace/smartloan-bms-dev/docker/src/
2)驗證本地是否構建了新的映象
docker images
3)驗證是否將新構建的映象上傳映象倉庫
訪問網址:https://hub.xyc.idc/
注:以上驗證說明一切工作正常!