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

一颗知足的心 2024-07-27 15:35:03 阅读 67

前言

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

目录

前言1.准备阶段2.安装jenkins3.配置jenkins3.卸载4.总结

1.准备阶段

一个Linux环境。本文用的是VMware+Centos7,下载和安装Linux的步骤,请参考这篇文章:用VMware安装Linuxjenkins使用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,用最原始的方法安装,去官网下载安装包。

进入官网,两个都可,我选择的是第二个,小红帽版本。

https://mirrors.jenkins.io/https://get.jenkins.io/redhat/

进入小红帽,选择下图标记这个

在这里插入图片描述

这里有版本对应jdk说明,可以看到22年8月后的2.357版本以后,就要求至少jdk11了。

在这里插入图片描述

选择版本,我选择的是2.400-1.1版本(后面由于遇到问题换成2.440.3 LTS版本了),你自己随意,选择这个版本得用jdk11

在这里插入图片描述

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

<code>sudo rpm -ih jenkins-2.400-1.1.noarch.rpm

配置jdk路径

vim /etc/init.d/jenkins

找到框选的字段,把自己实际的jdk路径,新增到最后面

在这里插入图片描述

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

<code>vim /etc/sysconfig/jenkins

在这里插入图片描述

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

这里修改了可能还不能生效,还需要修改另一个地方(如果生效了可以不用改),输入以下指令进行编辑

<code>vim /usr/lib/systemd/system/jenkins.service

# 找到下面的文字

Environment="JENKINS_PORT=8888" # 修改为自己想要的端口号code>

# :wq退出

重载配置文件

systemctl daemon-reload

放行端口三步操作,如果是腾讯云或者阿里云等,需要去控制台防火墙或者安全组开放这个端口

# 放行8888端口

firewall-cmd --zone=public --add-port=8888/tcp --permanent

# 重新加载防火墙

firewall-cmd --reload

# 查看是否已经开启

firewall-cmd --list-ports

启动,查看状态,停止三个指令

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来启动

<code>//后台启动,这里不指定端口默认8080

nohup java -jar jenkins.awar --httpPort=8888 &

PS:

PS:

3.配置jenkins

浏览器访问http://IP:8888登录jenkins

根据文件提示,找到初始管理员码,复制输入

<code>[root@localhost log]# cat /var/lib/jenkins/secrets/initialAdminPassword

e0048c61b50e456195975152ad26****

安装推荐的插件,这里可能会失败,点重试就好了,直到不能安装为止。 这里会等待比较久

在这里插入图片描述

创建第一个管理员账号

在这里插入图片描述

配置Jenkins访问地址,便于一些插件使用,一般会有默认值:

在这里插入图片描述

配置完成,就可以使用了

我们是为了支持java项目,需要单独安装的插件:

Maven Integration: Maven 集成管理插件。

Docker plugin: Docker集成插件。

Publish Over SSH:远程文件发布插件。

SSH: 远程脚本执行插件。

GitLab或者gitee:拉取远程仓库代码插件,取决于你的测试项目放在哪个平台上。

安装插件在系统管理 -> 插件管理里面

这个plugins里面就可以管理我们的插件,去下载,卸载,查看已经下载的插件等等。

在这里插入图片描述

配置tool

在这里插入图片描述

配置maven路径,这里配置上我们服务器上maven的setting文件地址(需要你提前在linux上下载好maven,配置环境变量,非常简单不会的百度就好)

在这里插入图片描述

配置jdk路径:

在这里插入图片描述

配置git路径,也需要你提前在linux上安装好git才行,注意这点很重要,你在linux上输入which git,出来的那个路径,后面再加上/bin/git才行,不然你后面创建项目拉不到代码。

在这里插入图片描述

配置好nodejs:这也需要你提前在Linux上面装好,直接用yum指令就好,非常简单。

在这里插入图片描述

基本配置完成后,我们新建一个maven项目叫jenkinsMavenTest

在这里插入图片描述

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

在这里插入图片描述

配置pom文件和操作,这里就是先clean操作,然后执行打包并且跳过检查

在这里插入图片描述

然后在post steps里面新增一个step为excute shell。

在这里插入图片描述

<code>#删除之前的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的配置一定要正确,其他地方就很简单了,如果你有什么不懂的问题或者有什么高见,也欢迎大家在评论区私聊我,只要我看到必定会回复。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。