Jenkins自动化部署(二)Jenkins的安装卸载以及如何自动化部署后端项目

前言

繁琐的准备工作完成后,我们终于可以进入Jenkins的安装环节,不知道前期Jdk、Nginx等软件如何安装的小伙伴可以看笔者的Jenkins自动化部署(一),Jenkins自动化部署,看这一套就够了。

正文

安装Jenkins

好的,话不多说,我们直接就是开始安装,这里我们选择的安装方式是WAR包的方式,主打一手简单快捷。

百度搜索Jenkins,进入官网,下载WAR包,没有科学上网手段的可以在评论区留言,我这里有最新版的WAR包(最低支持JDK11)。

下载WAR包之后,直接上传服务器,像启动普通JAR包一样启动就行(当然,你也可以选择下一个tomcat,然后运行WAR包),因为启动默认8080端口,如果服务器提前安装过Nginx,需要指定Jenkins启动的端口。

shell 复制代码
nohup java -jar jenkins.war --httpPort=8888 >> jenkinsLog.out 2>&1 &

简单解释一下上面的命令,大体就是在8888端口以后台运行的方式启动war包,然后把所有日志输出到jenkinsLog.out这个文件。

然后使用命令 tail -f jenkinsLog.out 查看启动日志,当你看到一串很长的字符串,恭喜你,Jenkins启动成功了。

此时我们直接访问服务器ip+8888端口就可以看到Jenkins的可视化界面。

这里可能会有人看不到界面,不要慌,看一下是不是防火墙和安全组没放开8888端口。

如果顺利的看到界面,直接无脑下一步,你之前看到的日志中那串字符串,就是Jenkins生成的默认密码,登录之后别忘了创建属于自己的账户哦。

ps:不知道有没有需要安装插件的小伙伴,如果安装插件失败,排除Jenkins版本过低的因素之后,可以考虑换源大法(清华大学镜像yyds)

换源步骤

1、修改hudson.model.UpdateCenter.xml文件

shell 复制代码
vi /root/.jenkins/hudson.model.UpdateCenter.xml 
# 若不知道这个文件的路径怎么办
find / -name *.UpdateCenter.xml
# 更换url路径
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

2、修改updates文件夹内default.json

shell 复制代码
cd /root/.jenkins/updates/
sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /root/.jenkins/updates/default.json
sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /root/.jenkins/updates/default.json

Jenkins配置

接下来我们配置各项插件

全局工作配置

1、配置Maven配置文件,这里的文件路径就是你实际安装的地址,注意要填写到setting.xml文件

2、配置JDK

3、配置Git

Git注意路径填写到git命令而不是git文件夹

4、配置Maven

5、配置NodeJS

一句话总结:除Git外,其他路径填写到软件的最外层文件夹即可

系统配置

1、Gitee配置

注意添加按钮添加个人凭据,Gitee登录的用户名和密码,如果输入错误,想一想自己是不是用邮箱注册的(虽然现在大部分手机号登录,但注册的时候可能有一些是用的邮箱!!!)

创建自动化部署任务

因为我代码存放在Gitee上,所以本文针对Gitee

选择保留以前的构建,主要是方便出现问题回滚

下面选择源码管理,填你需要构建的代码的仓库路径,选择你提前准备好的凭证(上面填的Gitee的用户名和密码),这里懒得打码了,就不上图了

选择打包的分支,这里很重要,为什么重要,后面再说

注意这里打了马赛克的路径

看到这里的根据分支过滤了嘛?可以简单理解为,我们只会操作正式分支的代码,你对其他分支的任何改变与Jenkins无关(不能开发分支随便提交代码都触发构建) 生成Gitee回调密码

Gitee配置回调 注意这个仓库设置界面,只有你代码仓库的创建者才可以看见(这个界面在码云上,和Jenkins无关了)

ok,各种配置完事了,下面开始写脚本吧

大概讲解一下,就是把老jar包备份,删掉原来的进程

shell 复制代码
#!/bin/bash
# 判断输入参数是否为空
if [ -z "$1" ]
then
  echo "请指定要重启的jar包名称"
  exit 1
fi

# 获取指定的 jar 包名称
jar_name="$1"

# 查找正在运行的指定进程
pid="$(ps -ef | grep "$jar_name" | grep -v grep | grep -v y.sh | awk '{print $2}')"

# 备份的路径
backup_path="/usr/local/backup/${jar_name}-$(date +%Y%m%d%H%M%S)"
# 原jar包路径
jar_path="/usr/local/${jar_name}"

# 如果找到了指定进程,则结束该进程
if [ -n "$pid" ]
then
  echo "关闭进程 $pid ..."
  kill -9 "$pid"
else
  echo "未找到进程 $jar_name"
fi

cp "$jar_path" "$backup_path"

rm "$jar_path"

ok,构建

注意图中的路径,实际打出来的jar包就存放在那里,所以构建完成后我们要进入到这个路径,去拿到新的jar包

Jenkins会自动杀死协助进程,没有这句话,下面的启动语句刚开始执行就被杀掉

BUILD_ID=DONTKILLME

start.sh脚本内容如下

shell 复制代码
#!/bin/bash

# 判断输入参数是否为空
if [ -z "$1" ]
then
  echo "请指定要重启的jar包名称"
  exit 1
fi

# 获取指定的 jar 包名称
jar_name="$1"

# 启动新的 Java 进程
echo "启动 $jar_name ..."
nohup java -jar "$jar_name"  >> nohup`date +%Y-%m-%d`.out 2>&1 &

注:以上脚本必须在自动化构建之前执行 chmod +x 脚本名称,否则脚本无法执行

后记

到这里,我们自动化构建后端项目就彻底完成了,有疑问或者错误欢迎评论区与笔者沟通,下一篇我们写前端自动化构建

相关推荐
ZHOUZAIHUI29 分钟前
WSL(Ubuntu24.04) 安装PostgreSQL
开发语言·后端·scala
i02081 小时前
SpringBoot 项目配置
java·spring boot·后端
月屯2 小时前
后端go完成文档分享链接功能
开发语言·后端·golang
Franciz小测测2 小时前
Python连接RabbitMQ三大方案全解析
开发语言·后端·ruby
海梨花2 小时前
又是秒杀又是高并发,你的接口真的扛得住吗?
java·后端·jmeter
Livingbody2 小时前
win11上wsl本地安装版本ubuntu25.10
后端
用户8356290780513 小时前
如何在 C# 中自动化生成 PDF 表格
后端·c#
星释3 小时前
Rust 练习册 44:Trait 中的同名函数调用
开发语言·后端·rust
京东零售技术3 小时前
并发丢数据深度剖析:JED的锁机制与事务实战踩坑及解决方案
后端
f***68603 小时前
问题:Flask应用中的用户会话(Session)管理失效
后端·python·flask