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
Username:jenkins用户名
Password:jenkins密码
Token:身份验证令牌
配置好后,点击“添加Web钩子”保存内容
3.4 验证配置内容
3.4.1 查看gogs的web钩子
重新选中刚才配置的内容,进入配置页面
3.4.2 查看jenkins