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 脚本名称,否则脚本无法执行

后记

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

相关推荐
码农小野3 小时前
基于SpringBoot的自习室预订系统
java·spring boot·后端
ac-er88884 小时前
如何在Flask中实现国际化和本地化
后端·python·flask
Adolf_19935 小时前
Flask-WTF的使用
后端·python·flask
林太白8 小时前
❤Node09-用户信息token认证
数据库·后端·mysql·node.js
骆晨学长8 小时前
基于Springboot的助学金管理系统设计与实现
java·spring boot·后端
蒙娜丽宁9 小时前
深入理解Go语言中的接口定义与使用
开发语言·后端·golang·go
AskHarries9 小时前
java使用ByteBuffer进行多文件合并和拆分
java·后端
不染_是非9 小时前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
代码对我眨眼睛10 小时前
springboot从分层到解耦
spring boot·后端
The Straggling Crow10 小时前
go 战略
开发语言·后端·golang