文章目录

  • 0、Jenkins卸载安装
  • 1、Jenkins配置
  • 2、后台启动脚本startup.sh
  • 3、后台关闭脚本stop.sh
  • 4、实时数据启动脚本startup.sh
  • 5、实时数据关闭脚本stop.sh
  • 6、jenkins制定完任务后,点击立即构建,控制台报错(...无法生成父级目录)
  • 7、Jenkins执行shell脚本权限不够
  • 8、构建好的jar包位置(可配置:vim /etc/sysconfig/jenkins)
  • 9、target-display-front配置执行脚本
  • 10、maven项目:Build -> Goals and options
  • 11、target-display-server配置执行脚本
  • 12、send-socket配置执行脚本


0、Jenkins卸载安装

  • 【Jenkins卸载】
# rpm卸载
	rpm -e jenkins
# 检查是否卸载成功
	rpm -ql jenkins
# 彻底删除残留文件
	find / -iname jenkins | xargs -n 1000 rm -rf
  • 【jenkins安装(rpm):(先看7)】
1、下载rpm地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/?C=M&O=A
  	jenkins-2.401.3-1.1.noarch.rpm
2、cd /usr/local/jenkins 并输入rz命令上传rpm文件
3、安装:rpm -ivh jenkins-........noarch.rpm   【查看安装是否成功:rpm -ql jenkins】
4、修改配置:vim /etc/sysconfig/jenkins
  			JENKINS_PORT="8777"
5、配置jenkins的java路径:
  	whereis java
  	vim /etc/init.d/jenkins
  	下拉到candidates字段,粘贴java的安装路径,:wq保存退出
  	刷新配置:systemctl daemon-reload
6、启动:systemctl start jenkins
  	【报错了】:
  		systemctl status jenkins.service  查看错误
  	解决:
  		不使用systemctl的方式操作Jenkins, 直接用Jenkins自带的服务启动 (使用 systemctl 最终也是执行的这个命令)
  		切换到 Jenkins 脚本目录 cd /etc/init.d, 执行以下命令
  	# 启动
 		./jenkins start
 	# 停止
 		./jenkins stop
 	# 状态
 		./jenkins status
 	【又报错了】-Jenkins版本过高了,不支持java 8
 	Starting Jenkins Running with Java 8 from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre, which is older 	                         than the minimum required version (Java 11).
 	Supported Java versions are: [11, 17]
 	See https://jenkins.io/redirect/java-support/ for more information.

7、尝试下载老版本Jenkins:https://jenkins.io/redirect/java-support/
	“从 6 月 28 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始,Jenkins 最低需要 Java 11”

	下载2.357以下的Jenkins版本:jenkins-2.346.3-1.1.noarch.rpm
	重复上面五个步骤

8、无法启动:jenkins通过systemctl start jenkins.service启动服务,端口不是配置文件里自定义的端口
	vim /lib/systemd/system/jenkins.service
	# 修改端口号
    Environment="JENKINS_PORT=8777"
9、启动成功

1、Jenkins配置

  • linux服务器需要配置maven环境、nodejs环境、npm环境,下载对应的包并安装
  • Jenkins安装插件:manage jenkins --> plugins
    搜索maven、nodejs
  • 全局工具配置:manage Jenkins --> Global Tool Configuration
    配置jdk:/usr/local/jdk1.8.0_181
    配置maven:/usr/local/soft/apache-maven-3.5.4

2、后台启动脚本startup.sh

#!/bin/bash
#定义启动的jar包或者war包程序
application_name=targetdisplay-admin.jar
#定义外部配置文件,若不使用外部配置文件则将nohup开头的两行命令注释互换,即打开下方被注释的nohup启动命令并注释当前nohup启动命令
#config_path=application.yml
#定义日志文件
DIR="/usr/local/soft/target_display_server"
application_port=18080
log_name=log.txt
echo Starting application ${application_name}... 
#nohup java -jar ${application_name} -Dspring.config.location=${config_path} > ${log_name} 2>&1 &
nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > ${DIR}/${log_name} 2>&1 &
#nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > /dev/null 2>&1 &
#tail -f ${DIR}/${log_name}
# (hack) sleep 1 minute,让项目跑起来 
# sleep 20

3、后台关闭脚本stop.sh

#!/bin/bash
#定义关闭的jar包或者war包程序
application_name=targetdisplay-admin.jar
PID=$(ps -ef | grep /usr/local/soft/target_display_server/${application_name} | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo ${application_name} is already stopped
else
    echo ${application_name} has killed,pid is $PID
    kill $PID
fi

4、实时数据启动脚本startup.sh

#!/bin/bash
application_name=sendSocket.jar
DIR="/usr/local/soft/sendsocket"
application_port=18998
log_name=log.txt
echo Starting application ${application_name}... 
#nohup java -jar ${application_name} -Dspring.config.location=${config_path} > ${log_name} 2>&1 &
nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > ${DIR}/${log_name} 2>&1 &
#nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > /dev/null 2>&1 &
#tail -f ${DIR}/${log_name}
# (hack) sleep 1 minute,让项目跑起来 
# sleep 20

5、实时数据关闭脚本stop.sh

#!/bin/bash
application_name=sendSocket.jar
PID=$(ps -ef | grep /usr/local/soft/sendsocket/${application_name} | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo ${application_name} is already stopped
else
    echo ${application_name} has killed,pid is $PID
    kill $PID
fi

6、jenkins制定完任务后,点击立即构建,控制台报错(…无法生成父级目录)

原因是:
jenkins 使用的 jenkins 用户和组,而  /data/maven/repository 的用户和组是 root。
解决方案:改变repository的用户组为Jenkins即可
chown -R jenkins:jenkins /data/maven/repository

7、Jenkins执行shell脚本权限不够

vim /usr/lib/systemd/system/jenkins.service
修改:
User=root
Group=root

systemctl daemon-reload
systemctl restart jenkins

8、构建好的jar包位置(可配置:vim /etc/sysconfig/jenkins)

/var/lib/jenkins/workspace/target-display-server/targetdisplay-admin/target/targetdisplay-admin.jar

9、target-display-front配置执行脚本

# remove dist
rm -rf /var/lib/jenkins/workspace/target-display-front/dist/*
npm install
npm run build
cd /var/lib/jenkins/workspace/target-display-front/dist
cp -rf ./index.html ./static /usr/local/soft/target_display_front

10、maven项目:Build -> Goals and options

clean package -Dmaven.test.skip=true
# maven 打包命令:
# mvn compile:编译
# mvn clean:清除target
# mvn package:项目编译、单元测试、打包
# mvn install:项目编译、单元测试、打包、将打好的包部署到本地仓库(在有多个项目互相依赖的情况下经常使用)
# mvn deploy:项目编译、单元测试、打包、将打好的包部署到本地仓库、将打好的包部署到远程仓库
# mvn [ package | install | deploy ] -DskipTests:不执行测试用例,但编译测试用例到对应的target下
# mvn [ package | install | deploy ] -Dmaven.test.skip:不执行测试用例,也不编译测试用例

11、target-display-server配置执行脚本

# stop jar
sh /usr/local/soft/target_display_server/stop.sh
# copy
cp -f /var/lib/jenkins/workspace/target-display-server/targetdisplay-admin/target/targetdisplay-admin.jar /usr/local/soft/target_display_server
# Jenkins默认会在Build结束后Kill掉所有的衍生进程
BUILD_ID=dontKillMe
# start jar
sh /usr/local/soft/target_display_server/startup.sh

12、send-socket配置执行脚本

# stop jar
sh /usr/local/soft/sendsocket/stop.sh
# copy
cp -f /var/lib/jenkins/workspace/send-socket/target/sendSocket.jar  /usr/local/soft/sendsocket
# Jenkins默认会在Build结束后Kill掉所有的衍生进程
BUILD_ID=dontKillMe
# start jar
sh /usr/local/soft/sendsocket/startup.sh