背景

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

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

java -jar jenkins.war --httpPort=8899

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

启动

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

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

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

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

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

个人信息配置

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

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

直接点击开始使用Jenkins

进入到下面这个页面

系统配置

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

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

找到Jenkins Location

配置maven

往下拉,点这个

配置jdk

配置git

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

安装maven插件

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

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

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

java -jar jenkins.war --httpPort=8899

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

新建项目

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

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

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

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

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

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

clean package -DskipTests install

在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掉

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

正在构建中

可以点击控制台输出

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

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

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

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

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

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

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

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

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

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

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

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

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

完成。

不足

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

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

Jenkins部署前后端不分离springboot项目的更多相关文章

  1. jenkins部署前后端分离的vue项目

    1 General Name: 变量名. 类似给分支起一个名字的意思, 可随意取 Description: 描述, 非必填 Parameter Type: 选择 Branch or Tag Defau ...

  2. linux --- 部署前后端分离项目

    vue + uwsgi +nginx 部署前后端分离项目 准备项目 1.将前端vue项目包和后端django项目包上传服务器,通过lrzsz,直接从windows拖进linux中 2.解压缩操作 前端 ...

  3. 使用 Nginx 部署前后端分离项目,解决跨域问题

    前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...

  4. centos7部署前后端分离项目的过程

    概述 本文主要讲解在安装了centos7的Linux主机中部署前后端分离项目的过程. 前端项目名为:vue_project:后端项目名为:django_project. 将这两个项目放在/opt/wh ...

  5. 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...

  6. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  7. 前后端不分离部署教程(基于Vue,Nginx)

    有小伙伴私信问我vue项目是如何进行前后端不分离打包发布的,那我岂能坐视不管,如此宠粉的我肯定是要给发一篇教程的,话不多说,开始操作 前端假如我们要发布我们的Vue项目,假设我们前端用的是histor ...

  8. Nginx部署前后端分离服务

    飘过... 一,安装Nginx 二,配置nginx 一般nginx配置文件在etc目录下 另,如何找nginx.conf配置文件: 在前后端分离端项目里,前端的代码会被打包成为纯静态文件.使用 Ngi ...

  9. 【宝塔面板】centOS部署前后端分离所有遇到的坑,Django

    1:刚刚买完服务器,在宝塔面板安装完一切工具,Django顺利运行后(不能运行一般是起了中文名) # 问题:想迁移数据库,结果发现-bash: python3: command not found# ...

  10. Docker 部署前后端项目

    Docker 部署前后端项目 平生不会相思,才会相思,便害相思. 简介:都是被逼的,从零开始一个Docker 部署九个微服务和三个前端项目.其中,这些服务需要用到Nacos.MySQL.Nginx.E ...

随机推荐

  1. THM-被动侦察和主动侦查

    被动与主动侦察 在计算机系统和网络出现之前,孙子兵法在孙子兵法中教导说:"知己知彼,必胜不疑." 如果您扮演攻击者的角色,则需要收集有关目标系统的信息.如果你扮演防御者的角色,你需 ...

  2. [VMware]常见问题处理

    参考文献 [1] VMware 无法打开虚拟机 该虚拟机似乎正在使用 - 百度经验 [2] 233 http://10.0.8.46:8080/cas/autologin?username=admin ...

  3. 机器学习(六):回归分析——鸢尾花多变量回归、逻辑回归三分类只用numpy,sigmoid、实现RANSAC 线性拟合

    [实验1 回归分析] 一. 预备知识 使用梯度下降法求解多变量回归问题 数据集 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录 ...

  4. C++ 测试框架 GoogleTest 初学者入门篇 丙

    theme: channing-cyan *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRno ...

  5. Go语言:两种常见的并发模型

    Go语言:两种常见的并发模型 在并发编程中,须要精确地控制对共享资源的访问,Go语言将共享的值通过通道传递 并发版"Hello World" 使用goroutine来打印" ...

  6. Node工程的依赖包管理方式

    作者:京东零售 陈震 在前端工程化中,JavaScript 依赖包管理是非常重要的一环.依赖包通常是项目所依赖的第三方库.工具和框架等资源,它们能够帮助我们减少重复开发.提高效率并且确保项目可以正确的 ...

  7. node使用react项目启动错误TSError: ⨯ Unable to compile TypeScript:

    1.错误内容 return new TSError(diagnosticText, diagnosticCodes) ^ TSError: ⨯ Unable to compile TypeScript ...

  8. PostgreSQL插件那么多,怎样管理最高效?

    摘要:华为云RDS for PostgreSQL通过插件管理功能,很好地解决了PostgreSQL版本与插件耦合的问题,帮助用户更直观.更快速地安装管理数据库插件. 本文分享自华为云社区<Pos ...

  9. 笔记八:linux系统编程之IO

    笔记:linux系统编程之IO 应用层     内核层     硬件层 应用层:数据结构 .java.android.C.C++,C#: l inux高级编程:涉及内核为应用层提供接口函数: 内核五大 ...

  10. [双目视差] 立体校正源码分析(opencv)

    文章目录 [双目视差] 立体校正源码分析(opencv) 一.源码解析 二.源码中的方法 [双目视差] 立体校正源码分析(opencv) 一.源码解析 立体校正:把实际中非共面行对准的两幅图像,校正成 ...