2.jenkins+springboot+docker+gogs可持续构建-本地

 1.Jenkins安装Generic Webhook Trigger Plugin插件

2. Jenkins项目配置

2.1 配置源码

2.2 构建触发器

其中在“触发远程构建”勾选后,需要填写身份验证令牌(TOKEN_NAME),这里配置为"abc123",后续在webhook配置时用到

2.3 构建环境

2.4 编写脚本

cd /opt

mkdir shell_docker

cd /opt/shell_docker

编写docker_image_build.sh

vim docker_image_build.sh

#!/bin/bash
source /opt/shell_docker/common.sh

function images_build_and_create_container(){
	backup
	transfer
	build_images_and_create_container
}

images_build_and_create_container


编写common.sh

#!/bin/bash
#docker 镜像名
MYSQL_IMAGE_NAME=mysql
REDIS_IMAGE_NAME=redis
ZOOKEEPER_IMAGE_NAME=zookeeper
USER_IMAGE_NAME=user
DEVICE_IMAGE_NAME=device
#镜像id
MYSQL_IID=$(docker images | grep "$MYSQL_IMAGE_NAME" | awk '{print $3}')
REDIS_IID=$(docker images | grep "$REDIS_IMAGE_NAME" | awk '{print $3}')
ZOOKEEPER_IID=$(docker images | grep "$ZOOKEEPER_IMAGE_NAME" | awk '{print $3}')
USER_IID=$(docker images | grep "$USER_IMAGE_NAME" | awk '{print $3}')
DEVICE_IID=$(docker images | grep "$DEVICE_IMAGE_NAME" | awk '{print $3}')

#docker 容器名
MYSQL_CONTAINER_NAME=mysql-001
REDIS_CONTAINER_NAME=redis-001
ZOOKEEPER_CONTAINER_NAME=zookeeper-001
USER_CONTAINER_NAME=user-001
DEVICE_CONTAINER_NAME=device-001

#容器id
MYSQL_CID=$(docker ps -a | grep "$MYSQL_CONTAINER_NAME" | awk '{print $1}')
REDIS_CID=$(docker ps -a | grep "$REDIS_CONTAINER_NAME" | awk '{print $1}')
ZOOKEEPER_CID=$(docker ps -a | grep "$ZOOKEEPER_CONTAINER_NAME" | awk '{print $1}')
USER_CID=$(docker ps -a | grep "$USER_CONTAINER_NAME" | awk '{print $1}')
DEVICE_CID=$(docker ps -a | grep "$DEVICE_CONTAINER_NAME" | awk '{print $1}')

#数据库用户名
USERNAME="root"
#数据库密码
PASSWORD="1111111"
#要创建的数据库的库名称
DBNAME="hp_distribution"
#要导入的sql文件夹
sql_dir="/opt/db/"
#计时
now=$(date "+%s")

############################################创建容器###############################################################
function create_mysql_database(){
	CID=$(docker ps -a | grep "$MYSQL_CONTAINER_NAME" | awk '{print $1}')
	MYSQ_IP=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' $MYSQL_CONTAINER_NAME)
	if [ -n "$CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器"
			seg_start_time=$(date "+%s")
			create_db_sql="create database IF NOT EXISTS ${DBNAME} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
			mysql -h$MYSQ_IP -u$USERNAME -p$PASSWORD -e "$create_db_sql"
			echo "创建数据库 is ok, It takes " `expr $(date "+%s") - ${seg_start_time}` " seconds"
		#判断是否创建成功
		if [ $? -ne 0 ];then
			echo "创建数据库${DBNAME}失败 ..."
			exit
		else
			echo "创建数据库成功..."
		fi
	fi
}
                              
function mysql_create_table(){
	CID=$(docker ps -a | grep "$MYSQL_CONTAINER_NAME" | awk '{print $1}')
	MYSQ_IP=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' $MYSQL_CONTAINER_NAME)
	if [ -n "$CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器"
		for file_name in `ls -A $1`
			do
				seg_start_time=$(date "+%s")
				if [ -f "$1$file_name" ]; then
				    command="source $1$file_name"
					mysql -h$MYSQ_IP -u$USERNAME -p$PASSWORD ${DBNAME} -e "$command"
					echo "创建数据库表完成,耗时" `expr $(date "+%s") - ${seg_start_time}` "秒"
				fi
			done
		echo "共耗时" `expr $(date "+%s") - ${now}` "秒"
	fi
}

function create_mysql_container(){
	MYSQL_CID=$(docker ps -a | grep "$MYSQL_CONTAINER_NAME" | awk '{print $1}')
	if [ -n "$MYSQL_CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器,容器ID MYSQL_CID=$MYSQL_CID..."
	else
		echo "不存在$MYSQL_CONTAINER_NAME容器,docker run创建容器..."
			docker run --name $MYSQL_CONTAINER_NAME --restart=always -v /opt/mysql/datadir:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1111111 -d $MYSQL_IMAGE_NAME:5.7
		echo "$MYSQL_CONTAINER_NAME容器创建完成"
		sleep 10
		echo "继续创建数据库..."
			create_mysql_database
		echo "创建数据库完成..."
		echo "继续创建数据库表..."
			mysql_create_table $sql_dir
		echo "创建数据库表完成..."
	fi
}

function create_redis_container(){
	if [ -n "$REDIS_CID" ]; then
		echo "存在$REDIS_CONTAINER_NAME容器,REDIS_CID=$REDIS_CID..."
	else
		echo "不存在$REDIS_CONTAINER_NAME容器,docker run创建容器..."
			docker run -p 6379:6379 --name $REDIS_CONTAINER_NAME --restart=always -v /opt/redis.conf:/etc/redis/redis.conf -d $REDIS_IMAGE_NAME redis-server /etc/redis/redis.conf
		echo "$REDIS_CONTAINER_NAME容器创建完成"
	fi
}

function create_zookeeper_container(){
	if [ -n "$ZOOKEEPER_CID" ]; then
		echo "存在$ZOOKEEPER_CONTAINER_NAME容器,ZOOKEEPER_CID=$ZOOKEEPER_CID..."
	else
		echo "不存在$ZOOKEEPER_CONTAINER_NAME容器,docker run创建容器..."
			docker run -d --name $ZOOKEEPER_CONTAINER_NAME --restart=always --publish 2181:2181 --volume /etc/localtime:/etc/localtime $ZOOKEEPER_IMAGE_NAME
		echo "$ZOOKEEPER_CONTAINER_NAME容器创建完成"
	fi
}

function create_user_container(){
	USER_IID=$(docker images | grep "$USER_IMAGE_NAME" | awk '{print $3}')
	USER_CID=$(docker ps -a | grep "$USER_CONTAINER_NAME" | awk '{print $1}')
	if [ -n "$USER_IID" ]; then
		echo "$USER_IMAGE_NAME镜像存在,USER_IID=$USER_IID..."
			echo "检测是否存在$USER_CONTAINER_NAME容器..."
			if [ -n "$USER_CID" ]; then
				echo "$USER_CONTAINER_NAME容器存在,USER_CID=$USER_CID..."
			else
				echo "$USER_CONTAINER_NAME容器不存在..."
					echo "开始创建$USER_CONTAINER_NAME容器..."
						docker run --name $USER_CONTAINER_NAME --link $MYSQL_CONTAINER_NAME --link $REDIS_CONTAINER_NAME --link $ZOOKEEPER_CONTAINER_NAME --restart=always -p 8283:8283 -d $USER_IMAGE_NAME
					echo "成功创建$USER_CONTAINER_NAME容器..."
			fi
	else
		echo "$USER_IMAGE_NAME镜像不存在..."
	fi
}

function create_device_container(){
	DEVICE_IID=$(docker images | grep "$DEVICE_IMAGE_NAME" | awk '{print $3}')
	DEVICE_CID=$(docker ps -a | grep "$DEVICE_CONTAINER_NAME" | awk '{print $1}')
	if [ -n "$DEVICE_IID" ]; then
		echo "$DEVICE_IMAGE_NAME镜像存在,DEVICE_IID=$DEVICE_IID..."
			echo "检测是否存在$DEVICE_CONTAINER_NAME容器..."
			if [ -n "$DEVICE_CID" ]; then
				echo "$DEVICE_CONTAINER_NAME容器存在,DEVICE_CID=$DEVICE_CID..."
			else
				echo "$DEVICE_CONTAINER_NAME容器不存在..."
					echo "开始创建$DEVICE_CONTAINER_NAME容器..."
						docker run --name $DEVICE_CONTAINER_NAME --link $MYSQL_CONTAINER_NAME --link $REDIS_CONTAINER_NAME --link $ZOOKEEPER_CONTAINER_NAME --restart=always -p 8282:8282 -d $DEVICE_IMAGE_NAME
					echo "成功创建$DEVICE_CONTAINER_NAME容器..."
			fi
	else
		echo "$DEVICE_IMAGE_NAME镜像不存在..."
	fi
}

#######################删除容器####################################################
function delete_mysql_container(){
	if [ -n "$MYSQL_CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器,MYSQL_CID=$MYSQL_CID..."
		echo "停止$MYSQL_CONTAINER_NAME容器..."
			docker container stop $MYSQL_CID
		echo "停止$MYSQL_CONTAINER_NAME容器完成"
		echo "删除$MYSQL_CONTAINER_NAME容器"
			docker container rm $MYSQL_CID
		echo "删除$MYSQL_CONTAINER_NAME容器完成"
	else
		echo "不存在$MYSQL_CONTAINER_NAME容器..."
	fi
}

function delete_redis_container(){
	if [ -n "$REDIS_CID" ]; then
		echo "存在$REDIS_CONTAINER_NAME容器,REDIS_CID=$REDIS_CID..."
		echo "停止$REDIS_CONTAINER_NAME容器..."
			docker container stop $REDIS_CID
		echo "停止$REDIS_CONTAINER_NAME容器完成"
		echo "删除$REDIS_CONTAINER_NAME容器"
			docker container rm $REDIS_CID
		echo "删除$REDIS_CONTAINER_NAME容器完成"
	else
		echo "不存在$REDIS_CONTAINER_NAME容器..."
	fi
}

function delete_zookeeper_container(){
	if [ -n "$ZOOKEEPER_CID" ]; then
		echo "存在$ZOOKEEPER_CONTAINER_NAME容器,ZOOKEEPER_CID=$ZOOKEEPER_CID..."
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器..."
			docker container stop $ZOOKEEPER_CID
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器完成"
		echo "删除$ZOOKEEPER_CONTAINER_NAME容器"
			docker container rm $ZOOKEEPER_CID
		echo "删除$ZOOKEEPER_CONTAINER_NAME容器完成"
	else
		echo "不存在$ZOOKEEPER_CONTAINER_NAME容器..."
	fi
}

function delete_user_container(){
	if [ -n "$USER_CID" ]; then
		echo "存在$USER_CONTAINER_NAME容器,USER_CID=$USER_CID..."
		echo "停止$USER_CONTAINER_NAME容器..."
			docker container stop $USER_CID
		echo "停止$USER_CONTAINER_NAME容器完成"
		echo "删除$USER_CONTAINER_NAME容器"
			docker container rm $USER_CID
		echo "删除$USER_CONTAINER_NAME容器完成"
	else
		echo "不存在$USER_CONTAINER_NAME容器..."
	fi
}

function delete_device_container(){
	if [ -n "$DEVICE_CID" ]; then
		echo "存在$DEVICE_CONTAINER_NAME容器,DEVICE_CID=$DEVICE_CID..."
		echo "停止$DEVICE_CONTAINER_NAME容器..."
			docker container stop $DEVICE_CID
		echo "停止$DEVICE_CONTAINER_NAME容器完成"
		echo "删除$DEVICE_CONTAINER_NAME容器"
			docker container rm $DEVICE_CID
		echo "删除$DEVICE_CONTAINER_NAME容器完成"
	else
		echo "不存在$DEVICE_CONTAINER_NAME容器..."
	fi
}

#################################终止容器###########################################
function stop_mysql_container(){
	if [ -n "$MYSQL_CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器,MYSQL_CID=$MYSQL_CID..."
		echo "停止$MYSQL_CONTAINER_NAME容器..."
			docker container stop $MYSQL_CID
		echo "停止$MYSQL_CONTAINER_NAME容器完成"
	else
		echo "不存在$MYSQL_CONTAINER_NAME容器..."
	fi
}

function stop_redis_container(){
	if [ -n "$REDIS_CID" ]; then
		echo "存在$REDIS_CONTAINER_NAME容器,REDIS_CID=$REDIS_CID..."
		echo "停止$REDIS_CONTAINER_NAME容器..."
			docker container stop $REDIS_CID
		echo "停止$REDIS_CONTAINER_NAME容器完成"
	else
		echo "不存在$REDIS_CONTAINER_NAME容器..."
	fi
}

function stop_zookeeper_container(){
	if [ -n "$ZOOKEEPER_CID" ]; then
		echo "存在$ZOOKEEPER_CONTAINER_NAME容器,ZOOKEEPER_CID=$ZOOKEEPER_CID..."
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器..."
			docker container stop $ZOOKEEPER_CID
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器完成"
	else
		echo "不存在$ZOOKEEPER_CONTAINER_NAME容器..."
	fi
}

function stop_user_container(){
	if [ -n "$USER_CID" ]; then
		echo "存在$USER_CONTAINER_NAME容器,USER_CID=$USER_CID..."
		echo "停止$USER_CONTAINER_NAME容器..."
			docker container stop $USER_CID
		echo "停止$USER_CONTAINER_NAME容器完成"
	else
		echo "不存在$USER_CONTAINER_NAME容器..."
	fi
}

function stop_device_container(){
	if [ -n "$DEVICE_CID" ]; then
		echo "存在$DEVICE_CONTAINER_NAME容器,DEVICE_CID=$DEVICE_CID..."
		echo "停止$DEVICE_CONTAINER_NAME容器..."
			docker container stop $DEVICE_CID
		echo "停止$DEVICE_CONTAINER_NAME容器完成"
	else
		echo "不存在$DEVICE_CONTAINER_NAME容器..."
	fi
}

#################################重启容器############################################
function restart_mysql_container(){
	if [ -n "$MYSQL_CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器,MYSQL_CID=$MYSQL_CID..."
		echo "停止$MYSQL_CONTAINER_NAME容器..."
			docker container stop $MYSQL_CID
		echo "停止$MYSQL_CONTAINER_NAME容器完成"
		echo "重新启动$MYSQL_CONTAINER_NAME容器"
			docker container restart $MYSQL_CID
		echo "重新启动$MYSQL_CONTAINER_NAME容器完成"
	else
		echo "不存在$MYSQL_CONTAINER_NAME容器..."
	fi
}

function restart_redis_container(){
	if [ -n "$REDIS_CID" ]; then
		echo "存在$REDIS_CONTAINER_NAME容器,REDIS_CID=$REDIS_CID..."
		echo "停止$REDIS_CONTAINER_NAME容器..."
			docker container stop $REDIS_CID
		echo "停止$REDIS_CONTAINER_NAME容器完成"
		echo "重新启动$REDIS_CONTAINER_NAME容器"
			docker container restart $REDIS_CID
		echo "重新启动$REDIS_CONTAINER_NAME容器完成"
	else
		echo "不存在$REDIS_CONTAINER_NAME容器..."
	fi
}

function restart_zookeeper_container(){
	if [ -n "$ZOOKEEPER_CID" ]; then
		echo "存在$ZOOKEEPER_CONTAINER_NAME容器,ZOOKEEPER_CID=$ZOOKEEPER_CID..."
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器..."
			docker container stop $ZOOKEEPER_CID
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器完成"
		echo "重新启动$ZOOKEEPER_CONTAINER_NAME容器"
			docker container restart $ZOOKEEPER_CID
		echo "重新启动$ZOOKEEPER_CONTAINER_NAME容器完成"
	else
		echo "不存在$ZOOKEEPER_CONTAINER_NAME容器..."
	fi
}

function restart_user_container(){
	if [ -n "$USER_CID" ]; then
		echo "存在$USER_CONTAINER_NAME容器,USER_CID=$USER_CID..."
		echo "停止$USER_CONTAINER_NAME容器..."
			docker container stop $USER_CID
		echo "停止$USER_CONTAINER_NAME容器完成"
		echo "重新启动$USER_CONTAINER_NAME容器"
			docker container restart $USER_CID
		echo "重新启动$USER_CONTAINER_NAME容器完成"
	else
		echo "不存在$USER_CONTAINER_NAME容器..."
	fi
}

function restart_device_container(){
	if [ -n "$DEVICE_CID" ]; then
		echo "存在$DEVICE_CONTAINER_NAME容器,DEVICE_CID=$DEVICE_CID..."
		echo "停止$DEVICE_CONTAINER_NAME容器..."
			docker container stop $DEVICE_CID
		echo "停止$DEVICE_CONTAINER_NAME容器完成"
		echo "重新启动$DEVICE_CONTAINER_NAME容器"
			docker container restart $DEVICE_CID
		echo "重新启动$DEVICE_CONTAINER_NAME容器完成"
	else
		echo "不存在$DEVICE_CONTAINER_NAME容器..."
	fi
}

#################################重建容器###########################################
function recreate_mysql_container(){
	if [ -n "$MYSQL_CID" ]; then
		echo "存在$MYSQL_CONTAINER_NAME容器,MYSQL_CID=$MYSQL_CID..."
		echo "停止$MYSQL_CONTAINER_NAME容器..."
			docker container stop $MYSQL_CID
		echo "停止$MYSQL_CONTAINER_NAME容器完成"
		echo "删除$MYSQL_CONTAINER_NAME容器"
			docker container rm $MYSQL_CID
		echo "删除$MYSQL_CONTAINER_NAME容器完成"
		echo "重新创建$MYSQL_CONTAINER_NAME容器"
			docker run --name $MYSQL_CONTAINER_NAME --restart=always -v /opt/mysql/datadir:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1111111 -d $MYSQL_IMAGE_NAME:5.7
		echo "重新创建$MYSQL_CONTAINER_NAME容器完成"
	else
		echo "不存在$MYSQL_CONTAINER_NAME容器..."
	fi
}

function recreate_redis_container(){
	if [ -n "$REDIS_CID" ]; then
		echo "存在$REDIS_CONTAINER_NAME容器,REDIS_CID=$REDIS_CID..."
		echo "停止$REDIS_CONTAINER_NAME容器..."
			docker container stop $REDIS_CID
		echo "停止$REDIS_CONTAINER_NAME容器完成"
		echo "删除$REDIS_CONTAINER_NAME容器"
			docker container rm $REDIS_CID
		echo "删除$REDIS_CONTAINER_NAME容器完成"
		echo "重新创建$REDIS_CONTAINER_NAME容器"
			docker run -p 6379:6379 --name $REDIS_CONTAINER_NAME -v /opt/redis.conf:/etc/redis/redis.conf -d $REDIS_IMAGE_NAME redis-server /etc/redis/redis.conf
		echo "重新创建$REDIS_CONTAINER_NAME容器完成"
	else
		echo "不存在$REDIS_CONTAINER_NAME容器..."
	fi
}

function recreate_zookeeper_container(){
	if [ -n "$ZOOKEEPER_CID" ]; then
		echo "存在$ZOOKEEPER_CONTAINER_NAME容器,ZOOKEEPER_CID=$ZOOKEEPER_CID..."
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器..."
			docker container stop $ZOOKEEPER_CID
		echo "停止$ZOOKEEPER_CONTAINER_NAME容器完成"
		echo "删除$ZOOKEEPER_CONTAINER_NAME容器"
			docker container rm $ZOOKEEPER_CID
		echo "删除$ZOOKEEPER_CONTAINER_NAME容器完成"
		echo "重新创建$ZOOKEEPER_CONTAINER_NAME容器"
			docker run -d --name $ZOOKEEPER_CONTAINER_NAME --publish 2181:2181 --volume /etc/localtime:/etc/localtime $ZOOKEEPER_IMAGE_NAME
		echo "重新创建$ZOOKEEPER_CONTAINER_NAME容器完成"
	else
		echo "不存在$ZOOKEEPER_CONTAINER_NAME容器..."
	fi
}

function recreate_user_container(){
	if [ -n "$USER_CID" ]; then
		echo "存在$USER_CONTAINER_NAME容器,USER_CID=$USER_CID..."
		echo "停止$USER_CONTAINER_NAME容器..."
			docker container stop $USER_CID
		echo "停止$USER_CONTAINER_NAME容器完成..."
		echo "删除$USER_CONTAINER_NAME容器..."
			docker container rm $USER_CID
		echo "删除$USER_CONTAINER_NAME容器完成..."
		echo "重新创建$USER_CONTAINER_NAME容器..."
			docker run --name $USER_CONTAINER_NAME --link $MYSQL_CONTAINER_NAME --link $REDIS_CONTAINER_NAME --link $ZOOKEEPER_CONTAINER_NAME -p 8283:8283 -d $USER_IMAGE_NAME
		echo "重新创建$USER_CONTAINER_NAME容器完成"
	else
		echo "不存在$USER_CONTAINER_NAME容器..."
	fi
}

function recreate_device_container(){
	if [ -n "$DEVICE_CID" ]; then
		echo "存在$DEVICE_CONTAINER_NAME容器,DEVICE_CID=$DEVICE_CID..."
		echo "停止$DEVICE_CONTAINER_NAME容器..."
			docker container stop $DEVICE_CID
		echo "停止$DEVICE_CONTAINER_NAME容器完成..."
		echo "删除$DEVICE_CONTAINER_NAME容器..."
			docker container rm $DEVICE_CID
		echo "删除$DEVICE_CONTAINER_NAME容器完成..."
		echo "重新创建$DEVICE_CONTAINER_NAME容器..."
			docker run --name $DEVICE_CONTAINER_NAME --link $MYSQL_CONTAINER_NAME --link $REDIS_CONTAINER_NAME --link $ZOOKEEPER_CONTAINER_NAME -p 8282:8282 -d $DEVICE_IMAGE_NAME
		echo "重新创建$DEVICE_CONTAINER_NAME容器完成..."
	else
		echo "不存在$DEVICE_CONTAINER_NAME容器..."
	fi
}

#################################删除镜像############################################
function delete_mysql_image(){
	if [ -n "$MYSQL_IID" ]; then
		echo "存在$MYSQL_IMAGE_NAME镜像,MYSQL_IID=$MYSQL_IID..."
		echo "删除$MYSQL_IMAGE_NAME镜像..."
			docker rmi $MYSQL_IID
		echo "删除$MYSQL_IMAGE_NAME镜像完成..."
	else
		echo "不存在$MYSQL_IMAGE_NAME镜像..."
	fi
}

function delete_redis_image(){
	if [ -n "$REDIS_IID" ]; then
		echo "存在$REDIS_IMAGE_NAME镜像,REDIS_IID=$REDIS_IID..."
		echo "删除$REDIS_IMAGE_NAME镜像..."
			docker rmi $REDIS_IID
		echo "删除$REDIS_IMAGE_NAME镜像完成..."
	else
		echo "不存在$REDIS_IMAGE_NAME镜像..."
	fi
}

function delete_zookeeper_image(){
	if [ -n "$ZOOKEEPER_IID" ]; then
		echo "存在$ZOOKEEPER_IMAGE_NAME镜像,ZOOKEEPER_IID=$ZOOKEEPER_IID..."
		echo "删除$ZOOKEEPER_IMAGE_NAME镜像..."
			docker rmi $ZOOKEEPER_IID
		echo "删除$ZOOKEEPER_IMAGE_NAME镜像完成..."
	else
		echo "不存在$ZOOKEEPER_IMAGE_NAME镜像..."
	fi
}


function delete_user_image(){
	if [ -n "$USER_IID" ]; then
		echo "存在$USER_IMAGE_NAME镜像,USER_IID=$USER_IID..."
		echo "删除$USER_IMAGE_NAME镜像..."
			docker rmi $USER_IID
		echo "删除$USER_IMAGE_NAME镜像完成..."
	else
		echo "不存在$USER_IMAGE_NAME镜像..."
	fi
}

function delete_device_image(){
	if [ -n "$DEVICE_IID" ]; then
		echo "存在$DEVICE_IMAGE_NAME镜像,DEVICE_IID=$DEVICE_IID..."
		echo "删除$DEVICE_IMAGE_NAME镜像..."
			docker rmi $DEVICE_IID
		echo "删除$DEVICE_IMAGE_NAME镜像完成..."
	else
		echo "不存在$DEVICE_IMAGE_NAME镜像..."
	fi
}

EXISTS="1"
NOT_EXISTS="0"
############################################检测镜像是否存在################################
function check_mysql_image(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_redis_image(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_zookeeper_image(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_user_image(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_device_image(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

###############################################检测容器是否存在######################
function check_mysql_container(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_redis_container(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_zookeeper_container(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}


function check_user_container(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

function check_device_container(){
	if [ -n "$1" ]; then
		echo "$EXISTS"
	else
		echo "$NOT_EXISTS"
	fi
}

#################################移动jar文件####################
# 源jar路径  
SOURCE_PATH=/var/lib/jenkins/workspace
#用户jar路径
SOURCE_USER_PATH=/docker-user/target
#设备jar路径
SOURCE_DEVICE_PATH=/docker_device/target
#操作/项目路径
TARGET_BASE_PATH=/opt/docker_project
#用户操作路径(Dockerfile存放的路径)
TARGET_USER_PATH=/user
#用户操作路径(Dockerfile存放的路径)
TARGET_DEVICE_PATH=/device
DATE=`date +%Y%m%d%H%M`
# 最新构建代码 移动到项目环境
DOCKERFILE="Dockerfile";

function transfer(){
	if [ -f "$SOURCE_PATH$SOURCE_USER_PATH/$USER_IMAGE_NAME.jar" ]; then
		if [ ! -d "$TARGET_BASE_PATH$TARGET_DEVICE_PATH" ]; then
			mkdir -p $TARGET_BASE_PATH$TARGET_DEVICE_PATH
		fi
		echo "最新构建代码 $SOURCE_PATH$SOURCE_USER_PATH/$USER_IMAGE_NAME.jar 迁移至 $TARGET_BASE_PATH$TARGET_USER_PATH ...."
			cp $SOURCE_PATH$SOURCE_USER_PATH/$USER_IMAGE_NAME.jar $TARGET_BASE_PATH$TARGET_USER_PATH
		echo "迁移 $USER_IMAGE_NAME.jar 完成"
	fi
	if [ -f "$SOURCE_PATH$SOURCE_USER_PATH/$DEVICE_IMAGE_NAME.jar" ]; then
		if [ ! -d "$TARGET_BASE_PATH$TARGET_DEVICE_PATH" ]; then
			mkdir -p $TARGET_BASE_PATH$TARGET_DEVICE_PATH
		fi
		echo "最新构建代码 $SOURCE_PATH$SOURCE_USER_PATH/$DEVICE_IMAGE_NAME.jar 迁移至 $TARGET_BASE_PATH$TARGET_DEVICE_PATH ...."
			cp $SOURCE_PATH$SOURCE_USER_PATH/$DEVICE_IMAGE_NAME.jar $TARGET_BASE_PATH$TARGET_DEVICE_PATH
		echo "迁移 $DEVICE_IMAGE_NAME.jar 完成"
	fi
}

# 备份
function backup(){
	if [ -f "$TARGET_BASE_PATH$TARGET_USER_PATH/$USER_IMAGE_NAME.jar" ]; then
		if [ ! -d "$TARGET_BASE_PATH/backup" ]; then
			mkdir -p $TARGET_BASE_PATH/backup
		fi
    	echo "$USER_IMAGE_NAME.jar 备份..."
        	cp $TARGET_BASE_PATH$TARGET_USER_PATH/$USER_IMAGE_NAME.jar $TARGET_BASE_PATH/backup/$USER_IMAGE_NAME-$DATE.jar
        echo "备份 $USER_IMAGE_NAME.jar 完成"
    else
    	echo "$TARGET_BASE_PATH$TARGET_USER_PATH/$USER_IMAGE_NAME.jar不存在,跳过备份"
    fi
	if [ -f "$TARGET_BASE_PATH$TARGET_DEVICE_PATH/$DEVICE_IMAGE_NAME.jar" ]; then
		if [ ! -d "$TARGET_BASE_PATH/backup" ]; then
			mkdir -p $TARGET_BASE_PATH/backup
		fi
    	echo "$DEVICE_IMAGE_NAME.jar 备份..."
        	cp $TARGET_BASE_PATH$TARGET_DEVICE_PATH/$DEVICE_IMAGE_NAME.jar $TARGET_BASE_PATH/backup/$DEVICE_IMAGE_NAME-$DATE.jar
        echo "备份 $DEVICE_IMAGE_NAME.jar 完成"
    else
    	echo "$TARGET_BASE_PATH$TARGET_DEVICE_PATH/$DEVICE_IMAGE_NAME.jar不存在,跳过备份"
    fi
}

function build_user_images(){
    echo "切换到$TARGET_BASE_PATH$TARGET_USER_PATH项目目录"
	cd $TARGET_BASE_PATH$TARGET_USER_PATH
	if [ -f "$DOCKERFILE" ];then
	  echo "$DOCKERFILE文件存在"
	  if [ -f "$USER_IMAGE_NAME.jar" ];then
	    echo "$USER_IMAGE_NAME.jar文件存在"
	      echo "赋予$USER_IMAGE_NAME.jar可执行权限"
			chmod +x $USER_IMAGE_NAME.jar
		  echo "构建user镜像开始"
		    docker build -t $USER_IMAGE_NAME .
		  echo "构建user镜像完成"
	  else
		echo "$USER_IMAGE_NAME.jar文件不存在"
	  fi
	  else
		echo "$DOCKERFILE不存在"
	fi
}

function build_device_images(){
    echo "切换到$TARGET_BASE_PATH$TARGET_DEVICE_PATH项目目录"
	cd $TARGET_BASE_PATH$TARGET_DEVICE_PATH
	if [ -f "$DOCKERFILE" ];then
	  echo "$DOCKERFILE文件存在"
	  if [ -f "$DEVICE_IMAGE_NAME.jar" ];then
	    echo "$DEVICE_IMAGE_NAME.jar文件存在"
	      echo "赋予$$DEVICE_IMAGE_NAME.jar可执行权限"
			chmod +x $DEVICE_IMAGE_NAME.jar
		  echo "构建device镜像开始"
		    docker build -t $DEVICE_IMAGE_NAME .
		  echo "构建device镜像完成"
	  else
		echo "$DEVICE_IMAGE_NAME.jar文件不存在"
	  fi
	else
		echo "$DOCKERFILE不存在"
	fi
}

function build_images_and_create_container(){
	user_image="$(check_user_image $USER_IID)"
	user_container="$(check_user_container $USER_CID)"
	device_image="$(check_device_image $DEVICE_IID)"
	device_container="$(check_device_container $DEVICE_CID)"
	if [[ `echo "$user_image"` -eq `echo $NOT_EXISTS` ]]; then
		echo "$USER_IMAGE_NAME镜像不存在...创建$USER_IMAGE_NAME镜像..."
		build_user_images
		create_user_container
	else
		if [[ `echo "$user_container"` -eq `echo $EXISTS` ]]; then
			echo "$USER_CONTAINER_NAME容器已经存在...删除$USER_CONTAINER_NAME容器..."
			delete_user_container
		fi
		if [[ `echo "$user_image"` -eq `echo $EXISTS` ]]; then
			echo "$USER_IMAGE_NAME镜像已经存在...删除$USER_IMAGE_NAME镜像..."
			delete_user_image
		fi
			build_user_images
			create_user_container
	fi
	if [[ `echo "$device_image"` -eq `echo $NOT_EXISTS` ]]; then
		echo "$DEVICE_IMAGE_NAME镜像不存在...创建$DEVICE_IMAGE_NAME镜像..."
		build_device_images
		create_device_container
	else
		if [[ `echo "$device_container"` -eq `echo $EXISTS` ]]; then
			echo "$DEVICE_CONTAINER_NAME容器已经存在...删除$DEVICE_CONTAINER_NAME容器..."
			delete_device_container
		fi
		if [[ `echo "$device_image"` -eq `echo $EXISTS` ]]; then
			echo "$DEVICE_IMAGE_NAME镜像已经存在...删除$DEVICE_IMAGE_NAME镜像..."
			delete_device_image
		fi
			build_device_images
			create_device_container
	fi
}

3.Gogs仓库配置

3.1 使用管理员账号登录Gogs

点击“仓库设置”

3.2 查看web钩子

3.3 添加或修改web钩子

配置推送地址:http://username:password@192.168.233.250:8888/generic-webhook-trigger/invoke?token=abc123

Usernamejenkins用户名

Passwordjenkins密码

Token:身份验证令牌

配置好后,点击添加Web钩子保存内容

3.4 验证配置内容

3.4.1 查看gogs的web钩子

重新选中刚才配置的内容,进入配置页面

3.4.2 查看jenkins

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值