看一次你就会,Linux部署jenkins实现自动打包部署java项,超详细超简单

avatar
作者
猴君
阅读量:0

前言

经历了很多项目,服务器的更新都是用的jenkins,页面上点一下就自动构建了,一直没有深入研究这个技术,最近趁着有时间来看看。

目录

1.准备阶段

  1. 一个Linux环境。本文用的是VMware+Centos7,下载和安装Linux的步骤,请参考这篇文章:用VMware安装Linux
  2. jenkins使用java开发的,所以需要用jdk,注意jenkins的版本决定了jdk的版本,目前最新的jenkins需要用至少jdk11,本文使用的jenkins为2.400-1.1版本,需要安装jdk11,不会在Linux安装jdk的朋友请移步这篇文章:Linux下安装jdk

2.安装jenkins

本来我是打算找资料,用wget和yum -y install jenkins来安装的,但是安装过后,没有自动生成配置文件,包括最关键的/etc/sysconfig/jenkins配置文件和默认的JENKINS_HOME地址,包括/etc/init.d/jenkins等都没有自动生成,查了一下午都没有搞定,最后决定还是放弃yum,用最原始的方法安装,去官网下载安装包。

  1. 进入官网,两个都可,我选择的是第二个,小红帽版本。
  1. 进入小红帽,选择下图标记这个
    在这里插入图片描述

  2. 这里有版本对应jdk说明,可以看到22年8月后的2.357版本以后,就要求至少jdk11了。
    在这里插入图片描述

  3. 选择版本,我选择的是2.400-1.1版本(后面由于遇到问题换成2.440.3 LTS版本了),你自己随意,选择这个版本得用jdk11
    在这里插入图片描述

  4. 下载好之后,上传到Linux的目录(你自己新建),我这里上传的是/usr/local/jenkins目录,然后使用rpm包安装命令

sudo rpm -ih jenkins-2.400-1.1.noarch.rpm 
  1. 配置jdk路径
vim /etc/init.d/jenkins 

找到框选的字段,把自己实际的jdk路径,新增到最后面
在这里插入图片描述

  1. 修改端口,jenkins默认端口是8080,肯定会起冲突,这里修改为8888(端口号你随意)
vim /etc/sysconfig/jenkins 

在这里插入图片描述
同时,这里修改jenkins_user为root用户,如果不修改,在部署项目时需要调整涉及到的文件和目录的操作权限,避免麻烦直接root用户一步到位。

  1. 这里修改了可能还不能生效,还需要修改另一个地方(如果生效了可以不用改),输入以下指令进行编辑
vim /usr/lib/systemd/system/jenkins.service 
# 找到下面的文字 Environment="JENKINS_PORT=8888" # 修改为自己想要的端口号 # :wq退出 
  1. 重载配置文件
systemctl daemon-reload 
  1. 放行端口三步操作,如果是腾讯云或者阿里云等,需要去控制台防火墙或者安全组开放这个端口
# 放行8888端口 firewall-cmd --zone=public --add-port=8888/tcp --permanent # 重新加载防火墙 firewall-cmd --reload # 查看是否已经开启 firewall-cmd --list-ports 
  1. 启动,查看状态,停止三个指令
service jenkins start service jenkins stop service jenkins status 

当然也可以用systemctl来重启:

systemctl restart jenkins 

在这里插入图片描述
这样我们的jenkins就算安装和启动好了。

PS:
PS:
PS: 本来按照上文那种方法,我是正常安装成功了的,也会自动生成配置文件,但是后面我脑袋抽了卸载了一次,我又按照同样的方法来安装jenkins,配置文件这些默认路径文件又没了,我查了好多资料都没有具体描述这个问题的解决方案,所以我最后用另外一种方法,去官网:jenkins官方中文网站下载war包(或者用官方方法也行),同时jenkins版本也从Weekly的2.400-1换成了2.440.3 LTS版本,这是当前最新的LTS版本,下载好war包之后用java -jar来启动

//后台启动,这里不指定端口默认8080 nohup java -jar jenkins.awar --httpPort=8888 & 

PS:
PS:

3.配置jenkins

  1. 浏览器访问http://IP:8888登录jenkins
  2. 根据文件提示,找到初始管理员码,复制输入
[root@localhost log]# cat /var/lib/jenkins/secrets/initialAdminPassword e0048c61b50e456195975152ad26**** 
  1. 安装推荐的插件,这里可能会失败,点重试就好了,直到不能安装为止。 这里会等待比较久
    在这里插入图片描述

  2. 创建第一个管理员账号
    在这里插入图片描述

  3. 配置Jenkins访问地址,便于一些插件使用,一般会有默认值:
    在这里插入图片描述

  4. 配置完成,就可以使用了
    我们是为了支持java项目,需要单独安装的插件:
    Maven Integration: Maven 集成管理插件。
    Docker plugin: Docker集成插件。
    Publish Over SSH:远程文件发布插件。
    SSH: 远程脚本执行插件。
    GitLab或者gitee:拉取远程仓库代码插件,取决于你的测试项目放在哪个平台上。
    安装插件在系统管理 -> 插件管理里面
    这个plugins里面就可以管理我们的插件,去下载,卸载,查看已经下载的插件等等。
    在这里插入图片描述

  5. 配置tool
    在这里插入图片描述
    配置maven路径,这里配置上我们服务器上maven的setting文件地址(需要你提前在linux上下载好maven,配置环境变量,非常简单不会的百度就好)
    在这里插入图片描述
    配置jdk路径:
    在这里插入图片描述
    配置git路径,也需要你提前在linux上安装好git才行,注意这点很重要,你在linux上输入which git,出来的那个路径,后面再加上/bin/git才行,不然你后面创建项目拉不到代码。
    在这里插入图片描述
    配置好nodejs:这也需要你提前在Linux上面装好,直接用yum指令就好,非常简单。
    在这里插入图片描述

  6. 基本配置完成后,我们新建一个maven项目叫jenkinsMavenTest
    在这里插入图片描述

  7. 填好源码管理这一栏,我这里代码仓库在gitee上面,下面的凭证,可以用gitee的令牌,当然最推荐的就是ssh验证,用git生成本地秘钥,将公钥配置到gitee里面,这个大家自行百度,非常简单。
    在这里插入图片描述

  8. 配置pom文件和操作,这里就是先clean操作,然后执行打包并且跳过检查
    在这里插入图片描述

  9. 然后在post steps里面新增一个step为excute shell。
    在这里插入图片描述

#删除之前的jar包 rm -rf /data/testServer/jenkinsTest.jar  #把jar包移动到指定目录,这里要注意:默认所处位置是在/root/.jenkins/workspace下的当前项目文件夹下 cp -rf /root/.jenkins/workspace/jenkinsMavenTest/target/jenkinsTest.jar /data/testServer #进入指定目录 cd /data/testServer #阻止jenkins杀死项目进程 export BUILD_ID=dontKillMe #执行启动脚本(没有脚本可以执行启动命令以及指定日志输出:nohup java -jar xxx.jar &) # 执行各个启动脚本,如果有写脚本的话 python stop.py sleep 1 python start.py 

这段shell脚本我解释一下
(1)首先,我项目在Linux上运行环境目录就是/data/testServer下面,jenkinsTest.jar就是我创建的一个测试springboot jar包。所以打包之前我要先删掉旧的包。
在这里插入图片描述
(2)cp开头的这一串命令,jenkins拉取源码打包,会默认放在 /root/.jenkins/workspace下面,我们需要将jenkins打好的包拷贝一份到我们项目环境下面。如下图所示,jenkins打好的包,就在target目录下面。
在这里插入图片描述

(3)我们cd到我们的项目目录下面,stop.py和start.py,是我写的脚本,用来执行或者启动项目用的,所以这里的操作是,拷贝完新jar包之后,先停止已经运行的项目,然后间隔1秒(为了等项目停止,这个你自己根据项目实际情况来),再重新启动项目,这样我们的项目就是最新的了,就实现了jenkins自动化部署的过程了。
ps:当然这段shell脚本,可以放在Linux服务器上而不是写在jenkins网页里面,这里一段就可以换成调用shell脚本:sh xxx.sh

3.卸载

rpm -e jenkins或者sudo yum remove jenkins
find / -iname jenkins | xargs -n 1000 rm -rf

4.总结

到了这里全文就结束了,看起来有些操作很简单,但是实际坐起来还是花了我一些时间,最主要现在网上文章鱼龙混杂,遇到点问题根本查不出来,最关键的就是jenkins的配置那块,maven和git和jdk的配置一定要正确,其他地方就很简单了,如果你有什么不懂的问题或者有什么高见,也欢迎大家在评论区私聊我,只要我看到必定会回复。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!