linux搭建jenkins自动化部署Maven方式
- 1.安装配置jenkins
- 2.先说下大致的步骤
- 3.遇到的问题
1.安装配置jenkins
安装运行和配置jenkins在这就不再多说了
2.先说下大致的步骤
1.创建一个maven项目
输入名称,选择构建一个maven项目
输入描述
指定代码仓库地址以及分支
输入打包命令,点击高级,配置一些设置
最后设置项目启动的脚本
点击保存完成。
这样就配置完成了。
脚本如下:
sh /usr/local/script/jar_start.sh /usr/local/jarProject/scheduled/target/ scheduled-1.0-SNAPSHOT.jar restart -Dspring.profiles.active=test
后面跟的参数都是和脚本内容相关的。
/usr/local/script/jar_start.sh :脚本所在绝对路径。
/usr/local/jarProject/scheduled/target/:jar包所在绝对路径。
scheduled-1.0-SNAPSHOT.jar:jar包名称。
restart:运行方式(start,stop,status,restart)。
-Dspring.profiles.active=test:springboot指定运行那个配置文件。
脚本内容(网上找的):可以自己该一些相应的参数。
#!/bin/bash
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh start.sh jarpath jarname [start|stop|restart|status] -Dspring.profiles.active=test -Dspring.profiles.active=test2 ..."
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
echo "开始启动..."
# nohup java -jar ${APP_NAME} >/dev/null 2>&1 &
echo "运行命令"
echo "执行jar参数为" ${params}
echo "运行jar为" ${APP_PATH_NAME}
nohup java -Xms256m -Xmx256m -Xss128m -jar ${params} ${APP_PATH_NAME} >/dev/null 2>&1 &
sleep 3;
echo "启动结束"
}
#停止方法
stop(){
echo "shutdown start..."
if [[ `ps -ef|grep $APP_NAME|grep java` ]]; then
ps -ef|grep $APP_NAME|grep java|awk '{print $2}'|xargs kill -9 >/dev/null 2>&1;
fi;
sleep 3;
echo "shutdown finished..."
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
# 运行java命令
#java=$( echo $(type java) | awk '{print $2}')
#echo ${java}
# 当前目类jar全路径
APP_PATH_NAME=$1$2
APP_NAME=$2
echo "appname" $APP_NAME
echo "apppathname" $APP_PATH_NAME
#根据输入参数,选择执行对应方法,不输入则执行使用说明
for i in "$@"
do
count=`expr $count + 1`;
if [ $count -gt 3 ];then
# jar 运行的参数,指定运行的配置文件
echo $i;
params=$i
case "$3" in
"start")
start;
;;
"stop")
stop;
;;
"restart")
restart;
;;
"status")
status;
;;
*)
usage
;;
esac
fi;
done;
脚本文件创建完成后执行个命令
chmod +x test2.sh
将文件变成可执行文件。
然后这就完成了。
3.遇到的问题
配置网上都有,再说下遇到的问题吧。
问题1: 调用命令执行shell脚本的时候报 No such file or directory?
我以为还是和上次配置jenkins的时候遇到同样的问题,然后我就按照上次的方法解决,一直行不通啊。最后实在是搞不了,突然间发现就是配置执行脚本命令的时候脚本路径没有写绝对路径。。。。
问题2:打包完成启动报错:
本地jdea打包启动没有问题,jenkins用命令打包就出问题了。
这是因为项目的pom.xml没有指定启动类文件。
网上百度了一些方法,千说万说总有一个适合自己的,找了个把小时终于找到了:
pom文件中添加build:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-jar-plugin</artifactId>-->
<!-- <version>3.0.2</version>-->
<!-- <configuration>-->
<!-- <archive>-->
<!-- <manifest>-->
<!-- <addClasspath>true</addClasspath>-->
<!-- <mainClass>com.qcx.ScheduledApplication</mainClass> <!– 此处为主入口–>-->
<!-- </manifest>-->
<!-- </archive>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
注释的和没注释的两种方法,看看哪个是对自己有用的。
问题3: 说什么服务期虚拟内存不足,
咱也不知道什么意思啊,就从网上百度着找找解决方法
这有一个 。
问题4:
打包成功,启动像么,怎么启动都没有反应。。
找了很久,最终发现是因为我在执行脚本的时候,添加了一些自己需要的配置参数,又没有放到最后,所以脚本获取参数的时候因为位置不对获取到错误的参数,导致脚本运行失败。