5

Jenkins部署前后端不分离springboot项目 - 蜀道,难

 1 year ago
source link: https://www.cnblogs.com/malinyan/p/17495924.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

写这篇博客的时候我还是大学生,学校期末课程设计时要求使用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

演示仓库地址: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的博客,如果文章中有些写的不对的内容,欢迎在评论区指出来。

本文作者:蜀道,难

本文链接:https://www.cnblogs.com/malinyan/p/17495924.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK