Jenkins服务器搭建maven工程笔记
前言
jenkins是一个由java开发的,开源的,用于对项目进行持续集成的运维工具,用于省去软件部署时人为重复的行为,jenkins通过提供可视化界面与大量插件,节省了直接用脚本部署的繁杂,在这里记录下安装的全过程
安装过程
前期准备
三台服务器,一台用于作为jenkins服务器,一台应用服务器(真实环境下会有多台),一台gitlab服务器(可用自己的github代替),这篇文章我们用前两台即可,服务器可以去各大云厂商购买,在阿里云可以在学生认证后免费获得一台服务器
确保jenkins服务器上安装了java,git,maven环境
去清华镜像站下载最新的jenkins.war包并上传至jenkins服务器
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.278/
配置方法
启动jenkins服务(端口默认是8080),并在后台写入一个日志文件
nohup java -jar jenkins.war 2>&1 & jenkins.log
jenkins服务第一次启动后,会生成一个初始随机密码,位置在
/root/.jenkins/secrets/initialAdminPassword
要确保自己服务的端口是对外开启的,如果没开启,我们就要手动开启
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
在内网环境下,最简单的方法是直接
systemctl stop firewalld.service
访问【http://你的jenkins服务器公网ip:8080】,第一次启动使用之前的初始密码进入,之后系统会提示操作者创建一个用户名与密码,注册一个新账号即可
安装插件,选择第一个,安装过程比较漫长,等待安装完成
进入主页后的页面长这样(图中的项目是我已经部署成功的)
进入到左侧标签栏的Manage Jenkins(系统管理),选择全局工具配置(Global Tool Configuration),配置一下系统的环境
分别配置自己的Java,Git,Maven目录
拉到页面最下方,直接保存即可
因为jenkins在整个持续集成过程中,都是自动拉取代码的,所以要添加git仓库的凭证,这个凭证可以直接用自己的github用户名与密码,接下来进入Manage Credential(管理凭证)
点击添加凭据,输入自己的github/gitlab密码,点击确定
由于创建的是maven项目,所以还需要安装一些插件,这次选择Manage Plugins(管理插件)
手动添加Maven Integration plugin
走到这一步,其实jenkins服务器已经算是配置好了,接下来我们去配置自己的应用服务器,应用服务器要满足以下几个要求
jenkins服务器能够通过ssh免密登陆应用服务器
应用服务器至少得有java环境
以上两步的配置过程,不再赘述
进入jenkins主页,可以创建一个maven工程,点击"新建item",然后选择第二个创建maven工程,记得输入一下名称,保存即可
接下来就会进入配置页面,可以参考我的配置
在Execute Shell中添加的脚本代码如下,最后拖到页面最下方保存即可
echo "部署的目录和项目名称"
DIR="/data/app"
projectName="you app name"
echo "待部署的应用服务器,可多台"
server_ip="you server ip"
echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${PWD}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar
echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
cd ${DIR}/${projectName}
./stop.sh #每次构建之前先停止原来的进程
./start.sh #启动服务
EOF
echo "构建成功!"
同时在你的${DIR}/${projectName}目录下添加start.sh,stop.sh两个脚本
# start.sh
set -e #任何命令出错就退出
set -o pipefail
APP_ID="you app name"
APP_DIR="/data/app"
nohup java -Dspring.profiles.active=dev -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log 2>&1 &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 release_out.log
sleep 5
tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
echo "Application started ok"
exit 0
else
echo "Application started error"
exit 1
fi
# stop.sh
APP_ID=it235-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
接下来用maven创建一个Springboot工程,并推送到github上,我们写一个简单的控制器,并提交代码
git add . && git commit -m "init" && git push origin main
回到jenkins主页,点击进入我们的项目,选择左侧的build now,可以看到下方的小光标已经开始闪动,意思就是在构建,我们点击进去,选择左侧的控制台输出,可以看到日志输出
通过日志可以看到部署有没有成功,如果成功了小球就是蓝色,如果失败就是红色
接下来可以去访问自己的应用服务器的路由,看有没有访问成功,一般构建成功的话,访问是没问题的
jenkins同样也可持续集成,监控npm,php等项目,同时还可以和docker,k8s进行组合,在这不多介绍,以后有机会,再做记录
关注我
获取更多精彩
James的黑板报