Jenkins自动化部署SpringBoot项目(windows环境)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
1、Jenkins介绍
1.1、概念
- Jenkins是一个开源软件项目是基于Java开发的一种持续集成工具
- Jenkins是一个可扩展的持续集成引擎
- 用于监控持续重复的工作旨在提供一个开放易用的软件平台使软件的持续集成变成可能
持续集成
-
就是通常所说的CIContinues Integration可以说是现代软件技术开发的基础
-
持续集成是一种软件开发实践即团队开发成员经常集成他们的工作通常每个成员至少集成一次也意味着每天可能会发生多次集成。
每次集成都通过自动化的构建包括编译发布自动化测试来验证从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题让团队能够更快的开发内聚的软件
1.2、优势
- Jenkins是一个自包含的基于java的程序可以开箱即用包含Windows、Linux等操作系统的软件包
- Jenkins可以通过其web界面轻松设置和配置其中包括动态错误检查和内置帮助
- 在插件中心中有数百个插件Jenkins集成了持续集成和持续交付工具链中的几乎所有工具
- Jenkins可以轻松地跨多台机器分配工作帮助更快地跨多个平台进行构建、测试和部署
- Jenkins可以通过其插件架构进行扩展为Jenkins所能做的事情提供了几乎无限的可能性
- 作为可扩展的自动化服务器Jenkins可以用作简单的CI服务器也可以变成任何项目的持续交付中心
1.3、Jenkins目的
- Jenkins 主要是监控软件开发流程快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率
- CI系统在整个开发过程中的主要作用是控制当系统在代码存储库中探测到修改时它将运行构建的任务委托给构建过程本身
- 如果构建失败了那么CI系统将通知相关人员然后继续监视存储库。它的角色看起来是被动的但它确能快速反映问题
2、环境准备
我们本文主要介绍在windows系统中安装和使用Jenkins那么在此之前请先保证你电脑上有如下环境
- JDK8我这里就是JDK8的环境
- git我这里使用的版本是2.37.1.windows.1
- maven我这里使用的版本是3.8.6
- 一个保存SpringBoot项目代码的git仓库注意该项目的启动端口不能与Jenkins相同Jenkins默认为8080
我这里的SpringBoot项目git地址是https://gitee.com/colinWu_java/JenkinsTest.git项目启动端口是8001
3、Jenkins下载
3.1、下载
下载网址https://get.jenkins.io/war-stable
下载war包即可如下
注意JDK的版本你下载的版本太高的话需要JDK的版本也会很高所以看清楚了再下载下载需要时间很久。我这里选择的是【2.346.3】然后下载
下载的包如下
3.2、运行
然后用cmd进入目录后运行jenkins
java -jar jenkins.war
如下
如果你的JDK版本不支持的话就会报错了如下
此时你要么就升级你的JDK要么就换一个低版本的jenkins推荐换一个低版本的jenkins因为JDK版本升级的话影响太广泛了
然后访问jenkins在浏览器输入http://localhost:8080如下
3.3、问题解决
如果上面界面等待几秒还是这个界面那就是jenkins镜像有问题按照下面步骤解决
1、第一次运行jenkins后会在C盘的用户目录中生成一个.jenkins文件夹进入到该文件夹
2、找到文件hudson.model.UpdateCenter.xml
3、编辑这个文件
镜像有很多种大家可以自行百度一下
4、重启jenkins再访问http://localhost:8080就会进入到密码认证界面
cmd窗口中会打印密码直接复制填入即可
然后加载一会之后出现如下配置界面了
点击【安装推荐的插件】即可
4、Jenkins配置
4.1、用户配置
上面页面可能花的时间会比较久安装完成后是这样的界面
我这里设置到账号是wjb密码是itsource123然后点击【保存并完成】
然后
点击【开始使用Jenkins】按钮即可
4.2、系统配置
4.3、全局工具配置-最重要
下面几项必须配置
- maven
- git
- JDK
然后继续配置JDK
然后继续配置git
最后配置maven
安装maven插件
安装插件进度页面
然后重启一下Jenkins
5、新建项目
新建Item
在源码管理设置模块选择Git然后输入Gitee项目仓库地址如下图
继续往下翻构建触发器处勾选Poll SCM并输入如下信息
* * * * *
如下
5个星号这是什么意思
这5个符号的位置分别表示分、时、日、月、周
上图中的五个*其含义已由黄色字体显示表示每分钟轮询一次Gitee仓库如果仓库有更新则重新拉取项目进行持续集成与持续部署。
如果输入H/5 * * * *则表示每5分钟轮询一次。
继续下翻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=8001
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f
xcopy C:\Users\it206\.jenkins\workspace\JenkinsTest\target\sp-test.jar F:\jenkins\workspace\JenkinsTest\ /Y
echo 复制jar包完成
echo 执行【sp-test.jar】---开始
start javaw -jar F:\jenkins\workspace\JenkinsTest\sp-test.jar >> springboot.log 2>&1 &
echo 执行【sp-test.jar】---结束
exit
相关参数介绍
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掉
如下
最后点击【保存】按钮然后开始构建
这样查看日志
然后就可以看到日志详情了
也可以在首页进行构建
然后看本地磁盘jar包已经复制到我指定目录了
但是我指定的日志文件还是回生成在Jenkins的默认目录如下
7、测试
我Gitee上的SpringBoot项目地址是https://gitee.com/colinWu_java/JenkinsTest.git
测试接口代码如下
package cn.itsource.controller;
import org.springframework.web.bind.annotation.*;
/**
* <p>TestController</p>
*
* @author 波波老师(微信 javabobo0513)
*/
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "欢迎来到SpringBoot奇妙世界";
}
}
然后Jenkins构建后就访问页面如下
完美可以正常显示接口的返回数据部署成功了然后我们修改一下接口的返回数据改成下面这样
package cn.itsource.controller;
import org.springframework.web.bind.annotation.*;
/**
* <p>TestController</p>
*
* @author 波波老师(微信 javabobo0513)
*/
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "欢迎来到SpringBoot奇妙世界Jenkins学习";
}
}
然后代码提交到gitee等一分钟后再刷新页面看页面如下
内容是我们修改后的值说明Jenkins确实重新拉取项目重新部署了nice啊以后我们修改完代码后直接提交就可以了部署就不用管了是不是很香
8、错误解决
如果你Jenkins的控制台中出现如下日志信息
在全局安全配置里面勾选上这个参数即可
如果本文对你有帮助的话记得点个赞哦