Jenkins自动化部署
环境搭建
Java安装
见服务器发布操作中Java环境的安装
Jenkins安装
这里下载长期支持版本
运行Jenkins
java -jar jenkins.war
注意防火墙端口的关闭
Git安装
见Git服务器搭建中git安装
Maven安装
将压缩包放入要安装的目录,这里我放在/usr/local
解压 tar -xvf 压缩包
修改环境变量
vi /etc/profile
添加如下
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export CLASSPATH=$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin
生效环境变量
source /etc/profile
配置操作
进入首页后显示
根据提示查看密码进行登录操作
后续操作较为耗时,需要下载相关的依赖
先安装默认的插件,后续需要再增添
紧接着添加管理员
确认访问url
大功告成
Jenkins主页面
紧接着进行全局配置
i设置JDK、Git、Maven的路径
多机器的概念
多机器分为:节点、SSH server
-
节点:能独立执行Job,意味着节点上需要拉取代码、构建项目、运行项目 即节点需要安装各种环境支持。
-
SSH server:相比节点而言,SSH server就显得能力弱了点。指能通过ssh协议连接的机器。
设置节点
注意:认证策略、Java路径
设置SSH server
下面有测试连接按钮,测试是否可以正常连接。
创建任务
任务中没有maven项目
需要下载Maven Integration插件
还需要发布到对应的机器需要:Publish over SSH插件
搜索需要的插件安装即可,完成后
创建maven任务
设置源码的来源(特别注意,这里认证失败可能不提示!坑了我很长时间)
最简单的命令构建
将构建好的jar文件传输到之前设置的SSH Server上,需要指定源文件路径(自行查找自己的项目)
- Remove prefix 移除路径前缀
- 目标路径Remote directory(之前SSH Server设置的是根路径,由调用者自行管理)
- Exec command 在SSH Server上需要执行的指令。
完成后即可执行构建任务,项目clone的目录可在工作区查看。
构建时可查看控制台输出。
在SSH server上执行命令的步骤关闭旧服务、启动新服务,如下所示
#!/bin/bash
echo "停止旧服务"
pid=`ps -ef | grep web.jar | grep -v grep | awk '{print $2}'` #查找旧服务的PID
echo "旧应用进程id:$pid"
if [ -n "$pid" ]
then
kill -9 $pid
fi
export JAVA_HOME=/usr/local/jdk1.8.0_241 #即使设置过JAVA_HOME还需要再导出一次,否则找不到java命令
echo ${JAVA_HOME}
echo "启动新服务"
cd /usr/local/download/web/target
nohup ${JAVA_HOME}/bin/java -jar web.jar > /dev/null & #采用非独占方式运行,即后台运行,否则Jenkins的控制台一直处于监听状态
echo "启动成功"
# 最!最!最!重要的!如果上述命令在win下编写后上传至服务器,注意文件格式。win下sh的文件格式为dos,而CentOS下为unix。
# 文件格式问题会导致sh脚本无法运行,最好是在服务器上验证过脚本以保证其正常性
修改sh文件格式:
- set ff查看文件格式
- set ff=unix 修改文件格式
后续
1、Jenkins存在内存泄露的问题,导致响应缓慢,后续优化!
2、每次都得进入管理页面,单击构建,麻烦!,正确的姿势应该为Webhook