Jenkins发布脚本

一、Jar包

ip="192.168.0.21"
passwd="root"
port="11822"
path="/root/ms"
jarname="dataWarehouse-ms-0.0.1.jar"
target="/root/.jenkins/workspace/dataWareHouse-ms/dataWarehouse-ms/target"

pid=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "ps -ef | grep ${jarname} | grep java | grep -v grep | awk '{print \\$2}'"`

if [ "X${pid}" = "X" ]
then
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "rm -rf ${path}/${jarname}"
sshpass -p ${passwd} scp -P ${port} ${target}/${jarname} ${ip}:${path}
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "cd ${path};nohup java -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -Dfile.encoding=UTF8 -Duser.timezone=GMT+08 -jar ${jarname} > ${path}/log.out 2>&1 &"
else
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "kill -9 \$(ps -ef | grep ${jarname} | grep java | grep -v grep | awk '{print \$2}')"
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "rm -rf ${path}/${jarname}"
sshpass -p ${passwd} scp -P ${port} ${target}/${jarname} ${ip}:${path}
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "cd ${path};nohup java -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -Dfile.encoding=UTF8 -Duser.timezone=GMT+08 -jar ${jarname} > ${path}/log.out 2>&1 &"
fi

二、Tomcat-静态文件

ip="192.168.0.21"
passwd="root"
port="11122"
tomcatpath="/root/tomcat-bg"
jobname="dev-intelligent-housing-bg"

pid=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "ps -ef | grep ${tomcatpath} | grep java | grep -v grep | awk '{print \\$2}'"`

if [ "X${pid}" = "X" ]
then
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/*"
sshpass -p ${passwd} scp -P ${port} -r /root/.jenkins/workspace/${jobname}/dist ${ip}:${tomcatpath}/webapps
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "mv ${tomcatpath}/webapps/dist ${tomcatpath}/webapps/ROOT"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cp -r /opt/WEB-INF ${tomcatpath}/webapps/ROOT"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "${tomcatpath}/bin/startup.sh"
else
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/*"
sshpass -p ${passwd} scp -P ${port} -r /root/.jenkins/workspace/${jobname}/dist ${ip}:${tomcatpath}/webapps
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "mv ${tomcatpath}/webapps/dist ${tomcatpath}/webapps/ROOT"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cp -r /opt/WEB-INF ${tomcatpath}/webapps/ROOT"
fi

三、Tomcat-war包

ip="192.168.0.21"
passwd="root"
port="12122"
tomcatpath="/root/cn-out-children-cs"
warname="cnSoutChildrenCs.war"
target="/root/.jenkins/workspace/dev-znbx/south-univ-children-sys/cn-out-children-cs/target"

pid=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "ps -ef | grep ${tomcatpath} | grep java | grep -v grep | awk '{print \\$2}'"`

if [ "X${pid}" = "X" ]
then
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/*"
sshpass -p ${passwd} scp -P ${port} ${target}/${warname} ${ip}:${tomcatpath}/webapps
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cd ${tomcatpath}/webapps/;unzip ${warname} -d ./ROOT"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/${warname}"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "${tomcatpath}/bin/startup.sh"
else
sshpass -p ${passwd} ssh ${ip} -p${port} -o StrictHostKeychecking=no "kill -9 \$(ps -ef | grep ${tomcatpath} | grep java | grep -v grep | awk '{print \$2}')"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/*"
sshpass -p ${passwd} scp -P ${port} ${target}/${warname} ${ip}:${tomcatpath}/webapps
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cd ${tomcatpath}/webapps/;unzip ${warname} -d ./ROOT"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${tomcatpath}/webapps/${warname}"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "${tomcatpath}/bin/startup.sh"
fi

四、node镜像

############################## 变量定义 ##############################
#### 远程服务器 ####
# IP地址
ip="192.168.1.171"
# 用户名
user="root"
# 密码
passwd="root"
# 端口
port="22"
# docker映射端口
docker_port="9094"
# docker构建目录
docker_space="/tmp/docker/${JOB_NAME}"
# docker镜像名
docker_images="${JOB_NAME}:latest"
# docker容器名
docker_container="${JOB_NAME}"

############################## 环境检查 ##############################
#### 本地服务器 ####
# dockerfile目录是否存在
if [ -d "/root/docker/node/${JOB_NAME}/" ];then rm -rf /root/docker/node/${JOB_NAME}/*;else mkdir -p /root/docker/node/${JOB_NAME}/; fi
#### 远程服务器 ####
# docker构建目录是否存在
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "if [ -d ${docker_space} ];then rm -rf ${docker_space}/*;else mkdir -p ${docker_space}; fi"
# 删除同名容器
old_docker_container=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker ps -a|grep -w ${docker_container}|awk '{print \\$NF}'"`
if [ ! -n "${old_docker_container}" ];then
	echo "container not exist"
else 
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rm -f ${old_docker_container}"
fi
# 删除同名镜像
old_docker_image=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker images ${docker_images} | grep -v IMAGE |awk '{print \\$3}'"`
if [ ! -n "${old_docker_image}" ];then
	echo "images not exist"
else
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rmi ${docker_images} "
fi

############################## dockerfile ##############################
cat >/root/docker/node/${JOB_NAME}/dockerfile<<EOF
FROM node:10-slim
EXPOSE 8080
WORKDIR /my-node
ADD node.tar.gz /my-node
CMD ["npm","start"]
EOF

############################## 配置文件 ##############################
cat >/root/.jenkins/workspace/${JOB_NAME}/config/config.js<<EOF
const dbConfig = {
 host: "192.168.1.64",
 user: "root",
 password: "123123",
 database: "demo2"
}
exports.dbConfig = dbConfig;
EOF

############################## 项目打包 ##############################
cd /root/.jenkins/workspace/${JOB_NAME};rm -rf node.tar.gz
cd /root/.jenkins/workspace/${JOB_NAME};npm install
cd /root/.jenkins/workspace/${JOB_NAME};tar -zcf node.tar.gz *

############################## 构建镜像 ##############################
sshpass -p ${passwd} scp -P ${port} /root/.jenkins/workspace/${JOB_NAME}/node.tar.gz ${ip}:${docker_space}
sshpass -p ${passwd} scp -P ${port} /root/docker/${JOB_NAME}/dockerfile ${ip}:${docker_space}
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cd ${docker_space};docker build -t ${docker_images} ."
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker run -d -p ${docker_port}:8080 --restart=always --name ${docker_container} ${docker_images}"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${docker_space}/*"

五、Java镜像

############################## 定义变量 ##############################
#### 远程服务器 ####
# IP地址
ip="192.168.1.171"
# 用户名
user="root"
# 密码
passwd="root"
# 端口
port="22"
# docker映射端口
docker_port="30000"
# docker构建目录
docker_space="/tmp/docker/${JOB_NAME}"
# docker镜像名
docker_images="${JOB_NAME}:latest"
# docker容器名
docker_container="${JOB_NAME}"
# jar包目录
java_dir="/root/.jenkins/workspace/${JOB_NAME}/multi-tenant-eureka-sever/target"
# jar包名称
java_name="multi-tenant-eureka-sever-0.0.1.jar"
# jar包配置文件名称
config_name="application.properties"
# 配置文件端口
config_port="30171"

############################## 环境检查 ##############################
#### 本地服务器 ####
# dockerfile目录是否存在
if [ -d "/root/docker/java/${JOB_NAME}/" ];then rm -rf /root/docker/java/${JOB_NAME}/*;else mkdir -p /root/docker/java/${JOB_NAME}; fi
# jar包配置文件目录是否存在
if [ -d "/root/docker/java/${JOB_NAME}/config/" ];then rm -rf /root/docker/java/${JOB_NAME}/config/*;else mkdir -p /root/docker/java/${JOB_NAME}/config/; fi
#### 远程服务器 ####
# docker构建目录是否存在
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "if [ -d ${docker_space} ];then rm -rf ${docker_space}/*;else mkdir -p ${docker_space}; fi"
# 删除同名容器
old_docker_container=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker ps -a|grep -w ${docker_container}|awk '{print \\$NF}'"`
if [ ! -n "${old_docker_container}" ];then
	echo "container not exist"
else 
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rm -f ${old_docker_container}"
fi
# 删除同名镜像
old_docker_image=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker images ${docker_images} | grep -v IMAGE |awk '{print \\$3}'"`
if [ ! -n "${old_docker_image}" ];then
	echo "images not exist"
else
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rmi ${docker_images} "
fi

############################## dockerfile ##############################
cat >/root/docker/java/${JOB_NAME}/dockerfile<<EOF
FROM openjdk:8u232-jdk-slim
EXPOSE ${config_port}
WORKDIR /my-java
ADD . /my-java
CMD ["java","-Dfile.encoding=UTF8","-Duser.timezone=GMT+08","-jar","${java_name}"]
EOF

############################## 配置文件 ##############################
cat >/root/docker/java/${JOB_NAME}/config/${config_name}<<"EOF"
spring.application.name=eureka-server
server.port=30171
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${config_port}/eureka/
EOF

############################## 构建镜像 ##############################
sshpass -p ${passwd} scp -P ${port} ${java_dir}/${java_name} ${ip}:${docker_space}
sshpass -p ${passwd} scp -P ${port} /root/docker/java/${JOB_NAME}/config/${config_name} ${ip}:${docker_space}
sshpass -p ${passwd} scp -P ${port} /root/docker/java/${JOB_NAME}/dockerfile ${ip}:${docker_space}
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cd ${docker_space};docker build -t ${docker_images} ."
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker run -d -p ${docker_port}:${config_port} --restart=always --name ${docker_container} ${docker_images}"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${docker_space}/*"

六、tomcat-vue镜像

############################## 定义变量 ##############################
ip="192.168.1.172"
user="root"
passwd="root"
port="22"
docker_port="9876"
docker_space="/tmp/docker/${JOB_NAME}"
docker_images="${JOB_NAME}:latest"
docker_container="${JOB_NAME}"

############################## 环境检查 ##############################
if [ -d "/root/docker/vue/${JOB_NAME}/" ];then rm -rf /root/docker/vue/${JOB_NAME}/*;else mkdir -p /root/docker/vue/${JOB_NAME}/; fi
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "if [ -d ${docker_space} ];then rm -rf ${docker_space}/*;else mkdir -p ${docker_space}; fi"
old_docker_container=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker ps -a|grep -w ${docker_container}|awk '{print \\$NF}'"`
old_docker_image=`sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker images ${docker_images} | grep -v IMAGE |awk '{print \\$3}'"`
if [ ! -n "${old_docker_container}" ];then
	echo "container not exist"
else 
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rm -f ${old_docker_container}"
fi
if [ ! -n "${old_docker_image}" ];then
	echo "images not exist"
else
	sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker rmi ${docker_images} "
fi

############################## 配置文件 ##############################
cat >/root/.jenkins/workspace/${JOB_NAME}/src/config/index.js<<EOF
const iot = "http://39.100.246.141:30025";
const iot_login = "http://39.100.246.141:30023";

export {
    iot,
    iot_login,
}
EOF

############################## dockerfile ##############################

cat >/root/docker/vue/${JOB_NAME}/dockerfile<<EOF
FROM tomcat:jdk8-openjdk-slim
RUN rm -rf /usr/local/tomcat/webapps/*
COPY dist /usr/local/tomcat/webapps/ROOT
EOF

############################## 项目打包 ##############################
cd /root/.jenkins/workspace/${JOB_NAME};npm install
cd /root/.jenkins/workspace/${JOB_NAME};npm run build
cp -r /opt/WEB-INF/ /root/.jenkins/workspace/${JOB_NAME}/dist/

############################## 构建镜像 ##############################
sshpass -p ${passwd} scp -P ${port} -r /root/.jenkins/workspace/${JOB_NAME}/dist ${ip}:${docker_space}
sshpass -p ${passwd} scp -P ${port} /root/docker/vue/${JOB_NAME}/dockerfile ${ip}:${docker_space}
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "cd ${docker_space};docker build -t ${docker_images} ."
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "docker run -d -p ${docker_port}:8080 --restart=always --name ${docker_container} ${docker_images}"
sshpass -p ${passwd} ssh ${ip} -p ${port} -o StrictHostKeychecking=no "rm -rf ${docker_space}/*"
发布了146 篇原创文章 · 获赞 25 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39680564/article/details/103168250