首页 > 其他分享 >Jenkins部署前后端不分离springboot项目

Jenkins部署前后端不分离springboot项目

时间:2023-06-21 12:00:25浏览次数:53  
标签:集成 springboot 部署 jar 点击 构建 jenkins Jenkins

背景

写这篇博客的时候我还是大学生,学校期末课程设计时要求使用Jenkins部署项目,所以使用windows,但是企业中都是使用linux,往往还会搭建一个gitlab。下面我介绍的是在window环境下使用jenkins部署项目,这阵子搞这个期末作业时感觉收获还是挺大的,专门记录下。

持续集成(CI)

持续集成指的是频繁地将代码集成到主干。它的好处主要有两个:1.快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。2.防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集 成。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和 原有代码能否正确地集成在一起。

持续交付(CD)

完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

Jenkins

介绍

Jenkins是一个自动化服务器,目前发展超过15年,比较成熟的CI工具(也可以CD)能够实现自动化集成发布。建立好流水线后,期间无需专业运维人员介入,开发人员随时发布部署。Jenkins是基于Java开发的一种持续集成工具,所以下面Jenkins是基于jdk的环境来安装的,没有装jdk的自己百度装一下。

环境

jenkins依赖于jdk,jenkins版本不能太高,否则无法和jdk进行匹配。下面是我电脑上的环境:

工具 版本
jdk 1.8
maven 3.6.3
git 2.39.0

fork

演示仓库地址:https://gitee.com/ma-linyan/bookmanager

你们直接fork这个仓库,方便进行下面的操作。

下载

地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/

jenkins和jdk版本相关,推荐下载2.364.1 LTS

image-20230620102916571

image-20230620102938545

在jenkins jar包所在的文件夹下 (我这里直接把war包放在了D盘目录下,jenkins.war是war包的名字,可以进行重命名)打开命令行窗口,执行如下命令启动jenkins并指定jenkins端口号为8899

java -jar jenkins.war --httpPort=8899

image-20230620103249119

注意:这个黑窗口不要关,关了的话jenkins就关闭了。

启动

打开浏览器,输入http://localhost:8899/,即可进入

image-20230620104047189

image-20230620104155062

复制下图中的密码,填入上图中。

image-20230620104329031

接下来会出现安装插件画面

image-20230620104403700

接下来需要耐心得等待,由于是从国外下载的,速度就比较慢,当然如果你有那个的话(你懂的),那样的话速度就会比较快。

image-20230620104435323

我这里都显示安装成功,如果你有一两个插件安装失败,重试后也还是失败,也不要急,直接跳过,后面可以修改镜像源,那样的话下载也比较快。

个人信息配置

安装完成后的页面是这样子的:

image-20230620105345712

下图中的URL应该是自己之前在浏览器输入的地址,然后点击保存并完成

image-20230620105623910

直接点击开始使用Jenkins

image-20230620105723677

进入到下面这个页面

image-20230620105749541

系统配置

我这里有显示中文,是安装了中文插件,你们后期也可以自己安装一下。

image-20230620110258029

往下拉,找到这个,点进去

image-20230620110334715

找到Jenkins Location

image-20230620110546802

配置maven

image-20230620111105280

往下拉,点这个

image-20230620111333459

image-20230620111540144

image-20230620111645487

配置jdk

image-20230620111726173

image-20230620111816610

配置git

image-20230620111936267

重要的一点:做完这些配置后记得点保存,不然就白配了。

image-20230620112028705

安装maven插件

image-20230620112210966

image-20230620112226497

image-20230620112626621

只要显示success就代表安装成功了

image-20230620112926770

然后需要重新启动一下jenkins,插件才能生效。

关闭黑窗口,直接重新输入那条命令

java -jar jenkins.war --httpPort=8899

刷新浏览器,应该会让你重新登录,输入用户名和密码,登录进去。

新建项目

image-20230620113653716

输入名字,选择maven,点击保存。

image-20230620113925935

image-20230620160532796

image-20230620161107517

image-20230620160721730

直接写用户名和密码,然后点击添加

image-20230620160838975

然后点击Credentials的输入框,选择你刚刚填写的。

指定分支时,选择master分支,我这个仓库只有一个分支。

image-20230620161209788

输入H 2 * * *,每隔两个小时自动构建

image-20230620161329096

继续向下,找到Build,在Goals and options框内填,填完后点高级

clean package -DskipTests install

image-20230620171200191

image-20230620171331829

在Post Steps出选择Run regardless of build result,点击Add post-build step,选择执行windows批处理命令(Execute Windows batch command),输入下面的内容(有些需要进行对应的替换

@echo off
set BUILD_ID=DONTKILLME
set port=9989
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f

xcopy C:\Users\这里替换成你自己的电脑的\.jenkins\workspace\test7\target\books-0.0.1-SNAPSHOT.jar F:\myjenkins\workspace\test7\ /Y
echo 复制jar包完成
echo 执行【books-0.0.1-SNAPSHOT】---开始
start javaw -jar F:\myjenkins\workspace\test7\books-0.0.1-SNAPSHOT.jar >> springboot.log 2>&1 &
echo 执行【books-0.0.1-SNAPSHOT】---结束

start cmd /k java -jar F:\myjenkins\workspace\test7/books-0.0.1-SNAPSHOT.jar --server.port=9971

相关参数介绍:

1、set BUILD_ID=DONTKILLME
Jenkins默认会在Build结束后Kill掉所有的衍生进程,设置不要kill

2、xcopy 源文件 目的文件
将源文件复制到目标文件夹下
为什么要复制一份?
下次构建的时候,需要删除现有的jar,重新构建新的jar;如果直接运行生成的jar,下次构建的时候,无法删除,构建失败。

3、echo xxx
这里只是在jenkins的控制台输出日志信息

4、start javaw -jar xxx.jar &    这里是告诉系统,我的jar文件是后台执行,最后的符号 & 一定要加,否则jenkins会认为任务结束,会把我们的jar强制kill掉

image-20230620172152642

做完这一步点击保存按钮,然后点击Build Now开始构建。

正在构建中

image-20230620172740194

可以点击控制台输出

image-20230620172821470

构建完成后最后看到success,代表成功,否则代表失败

image-20230620172920232

刚刚在构建的过程中打开一个黑窗口,最小化即可,不要关闭,关闭就无法访问了。

现在访问一下:http://localhost:9971/

image-20230620173041013

看到上面这张图,代表可以访问,输入用户名和密码和相关计算信息,即可进去。

修改代码,推送到码云上,可以在idea里面修改,然后推送,idea里面使用git可以参考我写的这篇博客:https://www.cnblogs.com/malinyan/p/17242572.html

我这里为了方便,直接在码云上面修改。

在src/main/resources/static/index.html里面找到标题,进行修改,我直接在登录前面新增两个字欢迎

点击编辑,找到登录图书管理系统,在前面新增欢迎两字。

image-20230620173940527

可以填写扩展信息,我这里就不写了,然后点击提交。

image-20230620174155607

重要的一点:之前构建出来的黑窗口记得关掉,不然等一下会显示端口号被占用。

重新点击构建Build Now,等待。

显示成功,一样的,刚刚弹出来的黑窗口不要关闭。

image-20230620174452062

刷新一下http://localhost:9971/页面,出现欢迎两个字。

image-20230620174555879

完成。

不足

按照上面的步骤做的话需要手动关闭黑窗口,我在Java -jar命令中加入/B,发现还是不行,有没有什么办法可以做到让黑窗口在后台运行,下次构建的时候自动结束这个进程,windows批处理命令那块应该怎么改。各位园友们,你们有什么办法吗,可以在评论区说一下。

这是我第一次写jenkins的博客,如果文章中有些写的不对的内容,欢迎在评论区指出来。

标签:集成,springboot,部署,jar,点击,构建,jenkins,Jenkins
From: https://www.cnblogs.com/malinyan/p/17495924.html

相关文章

  • 部署rabbitmq
       文章目录一、Erlang1.Erlang下载2.Erlang上传并解压3.验证rabbitmq依赖是否安装4.安装rabbitmq依赖5.Erlang编译、安装6.Erlang配置环境变量7.Erlang验证二、RabbitMQ2.1.RabbitMQ下载2.2.RabbitMQ上传并解压2.3.RabbitMQ......
  • Springboot api的controller如何接口一个List<Object>参数
    1.正常情况下,你可能会这样写:@PostMapping("/delete")@ApiOperation("Deletelistdata")@ResponseStatus(HttpStatus.OK)@ResponseBodypublicDBUpdateStatusdeleteTestCaseDatas(List<TestCaseInfo>testCaseInfoList){......
  • 关于在Redhat-7-linux-系统-Apache-2.4.6-版本上部署多个版本的yum仓库-的配置文件写
    背景:云上有一台内部yum服务器,操作系统及版本信息为:RedHatEnterpriseLinuxServerrelease7.9(Maipo)上面每天会同aws仓库官网同步repo,版本也自然是 RedHatEnterpriseLinuxServerrelease7现在需要临时增加Redhat8.的仓库,(默认Redhat8也是有内部repo仓库的,只是在......
  • Docker部署clickhouse
    Clickhouse特点完备的DBMS:不仅是个数据库,也是个数据库系统列存储和数据压缩:典型的olap数据库特性向量化并行:利用CPU的SIMD(SingleINstructionMUltipleData),单条指令操作多条数据多线程并行:向量化并行利用硬件采取数据并行(缺陷:不适应较多分支的判断),多线程级并行提高并发关系......
  • Springboot 框架中的Entity,Dao,Service,Controller的关系
    SpringBoot框架中的Entity,DAO,Service,Controller层的关系参考:https://blog.csdn.net/weixin_44532671/article/details/117914161https://blog.csdn.net/m0_47552180/article/details/125613332......
  • SpringBoot之MVC配置(WebMvcConfigurer详解)
    一:基本介绍SpringMVC是一种常用的JavaWeb框架,它提供了一种基于MVC模式的开发方式,可以方便地实现Web应用程序。在SpringMVC中,WebMvcConfigurer是一种常用的配置方式,可以允许我们自定义SpringMVC的行为,比如添加拦截器、消息转换器等。在本文中,我们将介绍什么是WebMvcConfi......
  • Springboot03
    1.Springboot引入JSPspring官网说,不建议springboot使用jspspring默认值支持Thymeleaf、FreeMarker·、Velocity·、GroovyJSP1.1.引入jsp相关的依赖<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId>&l......
  • 项目添加https安全验证部署环境生成自签名证书。
    生成证书自签名证书使用javajdk自带的生成SSL证书的工具keytool生成自己的证书1、打开cmd2、输入命令生成证书keytool-genkeypair-aliastomcat_https-keypass123456-keyalgRSA-keysize1024-validity365-keystored:/tomcat_https.keystore-s......
  • 通过 docker-compose 快速部署 DolphinScheduler 保姆级教程
    目录一、概述二、前期准备1)部署docker2)部署docker-compose三、安装MySQL数据库四、安装注册中心Zookeeper五、ApacheDolphinScheduler编排部署1)下载DolphinScheduler安装包2)配置2)安装MySQL驱动3)启动脚本bootstrap.sh4)构建镜像Dockerfile5)编排docker-compose.yaml6)开......
  • SpringBoot学习笔记
    SpringBoot学习笔记学习资料分享,一定要点!!!示例代码跳转链接无效,查看完整笔记点击:https://gitee.com/pingWurth/study-notes/blob/master/springboot/spring-boot-demo/SpringBoot学习笔记.md官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/index......