Centos 7.2 Jenkins+Ansible+Gitlab 部署maven项目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Centos 7.2 Jenkins+Ansible+Gitlab 部署maven项目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4284字,纯文字阅读大概需要7分钟。
内容图文
项目结构
多模块
单模块
jenkins效果
- 构建
- 发布
基础配置
mkdir -p /data/dubbo/{app,logs,cache} && useradd tomcat && chown tomcat:tomcat -R /data/dubbo/
mkdir /data/scripts
vim jar_init
#!/bin/bash # # ucservice start ucservice . /etc/rc.d/init.d/functions . /etc/profile PROJ_NAME=$3 PKG=${PROJ_NAME}.jar PORT=$2 USER="tomcat" [ -n "$PORT" ] && JMX_PORT=$((PORT+10000)) HEAP="2048m" APP_PATH="/data/dubbo/app/${PROJ_NAME}_${PORT}" LOG_PATH="/data/dubbo/logs/${PROJ_NAME}_${PORT}" TMP_PATH="/data/dubbo/cache/${PROJ_NAME}_${PORT}" PID="${LOG_PATH}/${PROJ_NAME}_${PORT}.pid" LOG_LEVEL="info" STDOUT=0 START_PARS="-Xms${HEAP} -Xmx${HEAP} -Xmn512m -Xss256k -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof" LOG_PARS="--log.home=${LOG_PATH} --log.level=${LOG_LEVEL} --log.stdout=${STDOUT}" TMP_PARS="--server.tomcat.basedir=${TMP_PATH}" [ -n "$JMX_PORT" ] && JMX_PARS="--jmx.rmi.port=${JMX_PORT}" function start() { if [ -s $PID ];then echo "${PROJ_NAME} on port ${PORT} is already running...." exit 0else [ -d $APP_PATH ] && chown -R $USER:$USER $APP_PATH [ -d $LOG_PATH ] || mkdir -p $LOG_PATH && chown -R $USER:$USER $LOG_PATH [ -d $TMP_PATH ] || mkdir -p $TMP_PATH && chown -R $USER:$USER $TMP_PATH [ ! -f ${APP_PATH}/${PKG} ] && echo "file ${APP_PATH}/${PKG} not found!" && exit 4 su - $USER -c "nohup java -jar ${START_PARS} ${APP_PATH}/${PKG} --server.port=${PORT} ${TMP_PARS} ${LOG_PARS} ${JMX_PARS} >> /dev/null 2>&1 &" pid=`ps -ef|grep java|grep "server.port=${PORT}"|grep -v grep|awk ‘{print $2}‘` #pid=$! #count=`ps -ef|grep java|grep $pid |grep -v grep|wc -l` sleep 1if [ -d /proc/$pid ];then su - $USER -c "echo $pid > $PID" echo -n "Start ${PROJ_NAME} on port ${PORT}" success echo else echo -n "Start ${PROJ_NAME} on port ${PORT}" failure echo fi fi } function stop() { if [ -s $PID ];then pid=`cat ${PID}` killproc -p $PID if [ ! -d /proc/$pid ];then echo -n "Stop ${PROJ_NAME} on port ${PORT}" success echo else echo -n "Stop ${PROJ_NAME} on port ${PORT}" failure echo fi else echo "${PROJ_NAME} on port ${PORT} is not running...." fi } function status() { [ -s $PID ] && echo "${PROJ_NAME} on port ${PORT} is running!" || echo "${PROJ_NAME} on port ${PORT} is stopped!" } function restart() { stop start } case $1in start) start;; stop) stop;; restart) restart;; status) status;; *) echo "USAGE:$0 {start|stop|restart|status}" esac
构建通用配置
单模块 # 说明: 此脚本用于将打包好的jar包存放到归档文件夹下 # ************************定义参数************************************* # ## 时间 timestamp=`date +%F-%H%M%S` ## jar包归档路径 归档文件夹/项目名称/时间戳_版本号 ARC_FOLDER_DETAIL=${ARC_FOLDER}/${APP_NAME}/${timestamp}_V${BUILD_ID} ## jenkins工作区中的项目路径 MAV_JAR_FILE=${WORKSPACE} # *************************处理服务jar包************************* # JAR_NAME=$MAV_JAR_FILE/target/${APP_NAME}.jar echo "正在复制$JAR_NAME到$ARC_FOLDER_DETAIL/$basename" #创建归档子文件夹 mkdir $ARC_FOLDER_DETAIL/$basename -p #复制文件夹到归档子文件夹 cp $JAR_NAME $ARC_FOLDER_DETAIL/$basename/
多模块 # 说明: 此脚本用于将打包好的jar包存放到归档文件夹下 # ************************定义参数************************************* # ## 时间 timestamp=`date +%F-%H%M%S` ## jar包归档路径 归档文件夹/项目名称/时间戳_版本号 ARC_FOLDER_DETAIL=${ARC_FOLDER}/${APP_NAME}/${timestamp}_V${BUILD_ID} ## jenkins工作区中的项目路径 MAV_JAR_FILE=${WORKSPACE} # *************************循环处理各个服务jar包************************* # #只处理根目录下的文件夹,以及文件夹名字与jar包名字相同的jar包 for file in $MAV_JAR_FILE/* do if [ -d "$file" ] then echo "正在处理服务文件夹:" $file #拼接需要的jar文件 basename=`basename $file` JAR_NAME=$file/target/${basename}.jar #只复制需要的jar文件 if [ -a "$JAR_NAME" ] then echo "正在复制$JAR_NAME到$ARC_FOLDER_DETAIL/$basename" #创建归档子文件夹 mkdir $ARC_FOLDER_DETAIL/$basename -p #复制文件夹到归档子文件夹 cp $JAR_NAME $ARC_FOLDER_DETAIL/$basename/ fi fi done
发布基本配置
def cmd=‘cd ‘ + ARC_FOLDER + ‘/‘+ PROJ_NAME + ‘; ls -r | head -n 10 ‘ def ver_keys = [ ‘bash‘, ‘-c‘, cmd ] ver_keys.execute().text.tokenize(‘\n‘)
开始推送
多模块 delete=true group=no owner=no src=${ARC_FOLDER}${PROJ_NAME}/${Release_Version}/${APP_NAME}/${APP_NAME}.jar dest=${target_dir}/${APP_NAME}_${port}/
单模块 delete=true group=no owner=no src=${ARC_FOLDER}${APP_NAME}/${Release_Version}/${APP_NAME}.jar dest=${target_dir}/${APP_NAME}_${port}/
原文:https://www.cnblogs.com/blueskyli/p/12214355.html
内容总结
以上是互联网集市为您收集整理的Centos 7.2 Jenkins+Ansible+Gitlab 部署maven项目全部内容,希望文章能够帮你解决Centos 7.2 Jenkins+Ansible+Gitlab 部署maven项目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。