准备环境
Ubuntu 20.04.6 LTS、Linux 5.4.0-148-generic x86_64、jdk-jdk1.8.0_361、maven-3.9.3、git-2.25.1
1、下载Jenkins.war包,并放到随意位置(你自己定)
https://get.jenkins.io/war-stable/2.346.3/
2、将启动脚本jenkins.sh放入war包同一路径下
#!/bin/bash
AppName=jenkins.war
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
PORT=8081
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
rm -f $LOG_PATH
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
nohup java -jar $AppName --httpPort="$PORT" --prefix=/jenkins > $LOG_PATH 2>&1 &
echo "Start $AppName success..."
3、运行启动脚本
./jenkins.sh start
4、输入jenkins的URL:IP:8081
5、查看jenkins启动日志,获取初始密码
6、安装推荐插件:因网络问题不一定所有插件都能下载成功,不成功直接点击重试,还是不行的话,先下一步,在设置里还可以下
7、创建管理员用户:什么都不用录入,直接点击使用admin账户继续
8、实例配置,也就是输入的URL,默认就行
9、密码修改
10、全局配置环境变量配置:这个一定要配置,踩大坑,找了三天的原因才找到问题
键:BUILD_ID
值:allow_to_run_as_daemon
接下来说原因:
因为我们使用Jenkins肯定是为了自动化构建和持续集成以及项目的***一键启动***,不加这个全局属性会导致你无法在后台启动项目,Jenkins会自动杀掉后台,你的“nohub java -jar your.jar &”语句会失效!!!
11、配置jdk、maven
系统管理->全局工具配置
Maven Settings:默S认就行
JDK:别名随意、JAVA_HOME——主机jdk安装路径
Git:Name随意、Path to Git executable:which git所输出的地址
Maven:Name随意、MAVEN_HOME:maven的安装地址
12、需手动下载插件:Maven Integration(用于创建maven任务)
13、任务构建
1)新建任务
任务名称自己定(合理就行),选择构建一个maven项目(第12步下载的插件就是为了这个),点击确定
2)丢弃旧的构建,如果不知道填什么就按照我的来
3)源码管理:就正常的git路径、Credentials是凭据(URL填写HTTPS时才用的到)、分支写自己所需配置分支有、其他默认
4)构建配置:clean package -Dmaven.test.skip=true
5)构建成功后执行、shell命令(因为我Jenkins在服务器本地,所以直接shell命令:会的话自己写,我这里写的很简单,启动脚本都在start.sh里)
6)保存,然后构建任务就行,下面贴上我的start.sh
#!/bin/bash
# ./start.sh start 启动 stop 停止 restart 重启 status 状态
AppName=zjtz-admin.jar
# JVM参数
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
function start()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
if [ ! -d $APP_HOME/logs/ ];then
mkdir $APP_HOME/logs/
fi
nohup java $JVM_OPTS -jar $AppName > $LOG_PATH 2>&1 &
echo "Start $AppName success..."
fi
}
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
rm -f $LOG_PATH
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac
标签:grep,AppName,PID,echo,start,XX,文档,服务器,Jenkins
From: https://www.cnblogs.com/YuXuanTM/p/17533952.html