700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

时间:2022-07-05 02:13:19

相关推荐

利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

背景:

最近想部署一个springboot项目到阿里云服务器里面。捣鼓了很久,构建了很多次,都失败了!实在是一脸辛酸,有点气馁~

在此想记录一下构建的过程。

不了解Jenkins之前,觉得Jenkins构建项目并部署到服务器上,很懵逼的感觉,一头雾水。原因是我固有思路:手工部署。比如:在IDEA构建好项目,然后将其war包移动到tomcat的webapps目录下,然后重启一下tomcat服务,再然后就可以在浏览器输入:http://ip地址:端口号/webapps目录下的项目名。例如:http://47.115.58.253:8080/springboot就可以访问了。

想了一下,这个过程其实很麻烦,首先在本地电脑构建好xxx.war,然后通过Xftp传文件到阿里云主机的tomcat的webapps目录下,然后通过Xshell远程远程连接阿里云主机,命令行手动重启tomcat。

在此之前,我看了很多Jenkins的使用教程,然后我意图将一个springboot项目构建成war包并且部署tomcat中,但是,不夸张地说构建了29次才得以build成功且deploy成功!

但是,最重要的一点是我貌似忽略了,springboot打包的jar包是可执行jar包,因为它是内置tomcat服务器,即系可以直接启动的,不用将其放在tomcat的webapps目录,直接启动就可以:nohup java -jar xxx.jar > out.log &,如果不是关联项目,我觉得直接启动的方式最好。

Jenkins自动化部署springboot。

Jenkins的安装就不介绍了网上很多教程,插件需要安装:maven , git ,这两个插件。

构建部署分两种情况说:

①将springboot部署到tomcat的webapps中;

1. 描述。不用填写,默认是什么就什么。
2. 源码管理。选择git

如上图所示,我选择码云最为我的代码管理远程仓库!这里的仓库url就是:

credentials就是您登陆码云的用户名和密码。

3. 构建触发器。默认
4. 构建环境。默认
5. Pre Steps。默认
6. Build。

这里的root pom 一定要填写到Jenkins的workspace/item名称/根目录,这个根目录,例如我的根目录就是如上图这个。然后goals and options可填可不填,也可以像以上这样填。

7. Post Steps。默认
8. 构建设置。默认
9. 构建后操作。选择deploy war/ear to a container
这里的war/ear files到底怎么填?

我一时间也被迷惑到了。试了好几次才正确,输入框右边有个" ?",点击一下,它提示相对路径,什么是相对路径,也就是我们利用Jenkins新建item的名称,就是根目录,根目录以下的都是相对路径。例如一个centos系统的完整目录:/usr/jenkins/workspace/test/springboot/target/springboot.war,那么上图中的war/ear files就是这样填写:springboot/target/springboot.war,可以使用*通配符:springboot/target/*.war

containers就根据您的服务器选择版本,这里的credentials又是什么?

tomcat目录下的:apache-tomcat-8.5.51/conf/tomcat-users.xml,里面的user的username和password,这里有一个坑需要注意的。就是里面的user用户名和密码都是原始的,例如下面这样的,这个的user必须需要有manger角色才可以。因此必须将它修改才可以!

原始的:

<role rolename="tomcat"/><role rolename="role1"/><user username="tomcat" password="<must-be-changed>" roles="tomcat"/><user username="both" password="<must-be-changed>" roles="tomcat,role1"/><user username="role1" password="<must-be-changed>" roles="role1"/>

修改后:

<role rolename="tomcat"/><role rolename="role1"/><role rolename="manager-script"/><role rolename="manager-gui"/><role rolename="admin-gui"/><user username="tomcat" password="lda1021" roles="tomcat"/><user username="both" password="lda1021" roles="tomcat,role1"/><user username="longdean" password="lda1021" roles="manager-script,manager-gui,admin-gui,tomcat,role1"/>

这样就可以了!

最后点击保存,返回item页面,点击立即构建!如无意外应该可以构建并且部署成功!

但是有3点需要注意的是:

1,确保代码编译的java版本低于服务器jdk的版本!

2,controller层的return必须页面必须正确!

3,有对应的数据库。

这三点有一点错都有可能导致部署失败!即使webapps中有相应war包,但是在www中访问不了,显示报404错误!

②将springboot直接启动。

与第①点不同的是Post Steps,构建后操作!其他相同的不说。

1. 描述。同上
2. 源码管理。同上
3. 构建触发器。同上
4. 构建环境。同上
5. Pre Steps。同上
6. Build。同上
7. Post Steps。

选择:Run only if build succeeds 。如何然后点击add post-build step,选择执行shell。

shell脚本如下:

#!/bin/bash export BUILD_ID=dontKillMewww_path=/usr/springbootjar_path=/usr/jenkins/workspace/test/springboot/target/jar_name=springboot.jarpid=$(cat /usr/springboot/springboot.pid)cd ${jar_path}cp -f ${jar_path}/${jar_name} ${www_path}cd ${www_path}kill -9 ${pid}nohup java -jar ${jar_name} > out.log &echo $! > /usr/springboot/springboot.pid

上述脚本的意思就是:检测原有进程pid,有则将其杀死。然后将构建好的jar包复制到自定义工作目录下,后台启动jar包。

9. 构建设置。同上
10. 构建后操作。默认即可,不要 deploy war/ear to a container了。

最后,点击保存。返回到item页面,点击立即构建!

祝您成功!

如果您是新手,看到这部文章的话,还是有不明白的地方,请评论,我知道的看到的会立马回复的!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。