jenkins持续集成案例
时间:2022-07-22
本文章向大家介绍jenkins持续集成案例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
环境介绍
线上环境使用的微服务的一套治理方案,由于把所有的模块全都放到一台机器上,启动的时候是通过java jar的方式进行启动,所以整个过程就非常的简单和清晰,大概思路如下:
- 拉取git仓库代码
- 通过maven打包构建
- 将jar包同步到目标主机上
- 执行目标主机上的java程序
实现过程
配置Jenkins
此过程需要安装Jenkins的一些插件,例如Git Parameter,Extended Choice Parameter Plugin 过程如下图:
还需要配置jdk和maven,这里不再赘述,截图如下:
创建一个任务
创建一个自由风格的任务
设置参数,在构建时可以选择分支
设置参数,在构建时可以选择要发布的模块
设置好NAME,以及Parameter type为Check Boxes,Number of Visible Items要显示的数量,有多少就写多少,Delimter设置分隔符,这里设置的是空格,后面的Value是要发布的模块名,有什么就写什么,后面也可以设置默认的value,构建时会自动勾选 设置git仓库的地址,注意$BRANCH
最后就是设置执行的脚本
脚本参考
# cat start_server.sh
#!/bin/bash
basedir="/export/server/pangolin-server"
DATE=`date "+%Y%m%d%H%M"`
JAVA_BIN=`which java`
#pangolin-service-eureka-0.0.1-SNAPSHOT.jar
#nohup java -Xms128m -Xmx128m -jar pangolin-service-eureka-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
module_list=(
business
common
dataimp
eureka
file
reminder
target
zuul
)
stop() {
module_name=$1
jar_name="pangolin-service-${module_name}-0.0.1-SNAPSHOT.jar"
module_pro=$(ps -ef | grep "$jar_name" | grep -v grep | wc -l)
if [ $module_pro -ne 0 ]
then
ps -ef | grep "$jar_name" | grep -v grep | awk '{print $2}' | xargs kill -9 2>&1
if [ `ps -ef | grep "$jar_name" | grep -v grep | wc -l` -eq 0 ];then
echo "$module_name module stop successful."
else
echo "$module_name module stop faild."
fi
fi
}
check() {
module_name=$1
if test ! -d ${basedir}/service/${module_name}-server;then
mkdir ${basedir}/service/${module_name}-server -p
fi
}
start() {
module_name=$1
jar_name="pangolin-service-${module_name}-0.0.1-SNAPSHOT.jar"
module_pro=$(ps -ef | grep "$jar_name" | grep -v grep | wc -l)
while true
do
if [ $module_pro -eq 0 ]
then
check $module_name
cd ${basedir}/service/${module_name}-server
if test ! -d backup;then
mkdir backup
mv ${jar_name} backup/${jar_name}_old_$DATE
fi
cp ${basedir}/${jar_name} ${basedir}/service/${module_name}-server/
nohup $JAVA_BIN -Xms128m -Xmx128m -jar $jar_name > /dev/null 2>&1 &
if [ `ps -ef | grep "$jar_name" | grep -v grep | wc -l` -ne 0 ];then
echo "$module_name start successful."
break
fi
else
stop $module_name
fi
done
}
if [ $# -ne 0 ];then
for line in $@
do
start $line
done
else
echo "Usage: sh $0 $module_list[*]"
exit 0
fi
就是一个简单的启动脚本,启动时需要传入模块名的参数,多个时以空格分隔
构建任务示例
可以选择一个或多个进行发布
- .Net中使用带UI的OCX的方法
- 2017数据科学领域15大热门GitHub项目
- 简单分页的性能优化
- Flash/Flex学习笔记(42):坐标旋转
- 分布式监控系统Zabbix-完整安装记录 -添加端口监控
- Flash/Flex学习笔记(40):弹性运动续--弹簧
- 表格样式—粗边框细表格线
- 分布式监控系统Zabbix--完整安装记录 -添加apache监控
- Flash/Flex学习笔记(38):缓动动画
- 把EmEditor改造成简单的Word
- centos7下FFmpeg环境部署记录
- Mac下使用rz、sz远程上传下载文件的配置记录
- 写文件
- Mac下通过VMware Fusion安装centos虚拟机操作记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kotlin结合Rxjava+Retrofit实现极简网络请求的方法
- 用Android Studio3.0新功能加快构建速度
- Android实现图片添加阴影效果的2种方法
- Android Webview与ScrollView的滚动兼容及留白处理的方法
- Android AOP框架AspectJ使用详解
- android仿Adapter实现自定义PagerAdapter方法示例
- android绘制几何图形的实例代码
- Android ListView控件使用方法
- Android开发之Android.mk模板的实例详解
- android实现文件下载功能
- Android实现可以展开的TextView
- 详解android 用webview加载网页(https和http)
- Android自定义网络连接工具类HttpUtil
- Android Studio时间选择器的创建方法
- Android 拦截返回键事件的实例详解