1.安装Jenkins
推荐使用Docker compose安装
新建docker-compose.yml脚本,修改相关信息,脚本执行命令 docker-compose up -d
version: '3.7'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
restart: unless-stopped
ports:
- '8082:8080'
- '50000:50000'
volumes:
- /mnt/data/jenkins_home/:/var/jenkins_home
- /mnt/data/maven/apache-maven-3.9.0:/usr/local/maven
- /usr/local/java-1.8.0-openjdk:/usr/local/java
- /mnt/data/maven/apache-maven-3.9.0/conf/settings.xml:/usr/local/maven/conf/settings.xml
networks:
- gljk
networks:
gljk:
driver: bridge
jdk、maven使用的是宿主机服务。
2 访问jenkins
输入 http://ip:8082 访问jenkins,提示需要解锁,云服务器部署配置好相关端口的安全组,防火墙配置。
到/mnt/data/jenkins_home/secrets/initialAdminPassword复制密码并登录
选择自定义插件,admin继续
点击开始使用!
3.插件安装
安装之前,先更换一下插件下载地址,升级站点url:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
安装以下插件:
- Maven Integration
- Publish Over SS
- Fail The Build
- Ant Plugin
- GitLab Plugin
全局工具配置(这里配置的路径都是容器中的路径)
目标服务器配置
当项目自动构建完成之后,会将打包好的工程,经由网络传输到目标服务器,配置相关信息
修改时区
4.新建任务
输入任务名称,选择构建maven项目
配置源码信息
编译配置,这里配置的信息是关于整个项目的编辑详情,微服务项目下有多个子项目,更新无需所有子项目进行更新,所有需要告诉maven编辑具体的服务。
编辑命令:clean install -pl users -am -amd -Pdev -Dmaven.test.skip=true
参数说明:
-am --also-make 同时构建所列模块的依赖模块;
-amd -also-make-dependents 同时构建依赖于所列模块的模块;
-pl --projects 构建制定的模块,模块间用逗号分隔;
-rf -resume-from 从指定的模块恢复反应堆。
users 为指定打包服务名称
目录结构如下:
单独编译项目,后面远程推送会报错,这里设置编辑为成功状态。
远程设置(一定要找对目录位置)
保存后点击构建
5.相关问题
构建控制台报错:ERROR: Failed to parse POMs
解决方法:
1、maven仓库目录可能没有写入的权限,对仓库目录授权:chmod -R 775 [maven 目录路径]
2、微服务项目,排查下多模块文件中,是否存在 relativePath 标签,删除该标签
6.启动脚本
设置执行权限:chmod u+x users.sh
包文件路径及名称(目录按照各自配置)
APP_NAME=/mnt/data/huorantech_jar/users/users-1.0.0.jar
#日志文件路径及名称(目录按照各自配置)
LOG_FILE=/mnt/data/huorantech_jar/users/users.log
#查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 2
#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar $APP_NAME > $LOG_FILE 2>&1 &
#企业微信机器人通知配置
date=$(date +%Y-%m-%d)
time=$(date "+%H:%M:%S")
content="**更新通知**
>Time:$date.$time
>Info:"用户服务更新成功"
"
webHookUrl="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?xxx"
content='{"msgtype": "markdown","markdown": {"content": "'$content'","mentioned_list":"@all"},}'
echo "content : $content"
curl --data-ascii "$content" $webHookUrl
echo "over!"
#实时查看启动日志(此处正在想办法启动成功后退出)
#tail -f $LOG_FILE
#输出启动成功(上面的查看日志没有退出,所以执行不了,可以去掉)
#echo '$APP_NAME 启动成功...'
else
echo '$APP_NAME 文件不存在,请检查。'
fi