看一次你就会,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的配置一定要正确,其他地方就很简单了,如果你有什么不懂的问题或者有什么高见,也欢迎大家在评论区私聊我,只要我看到必定会回复。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。