使用Jenkins打包项目可以避免手动打包上传部署,节省了不少时间,有利于团队开发。我所部署的项目是SpringBoot,版本控制使用的是SVN
Windows下Jenkins的安装详见另一篇文章
Windows安装Jenkins_呆某人的博客-CSDN博客_windows 安装jenkins
Jenkins面板中选择Maven Jenkins,点击Global Tool Configuration
找到Maven安装,新增maven,填入maven的Name和MAVEN_HOME,这里我用的是我本地安装的maven,设置完点击保存即可。
这里我已经安装了Subversion Plug-in,没有安装的在可选插件里查找然后安装
进入Manage Jenkins中选择Configure System
找到Shell,填入本地的cmd.exe路径,不然会报错
Powershell Server百度云链接如下:
链接:https://pan.baidu.com/s/1Q2o-83wSD0vTkqSLyGtJaA
提取码:vfii
设置开启自启动
选择当前Windows用户中的Administrators作为登录账户
勾选SFTP Features中两个选型,设置D盘的文件夹为上传的主目录
在Manage Jenkins中打开Configure System
找到Publish over SSH
找到SSH Servers,填入Jenkins要部署的那个服务器的别名、主机名IP、登录用户名、远程上传目录
点击新建Item项目
选择构建一个maven项目,输入项目名称
选择Subversion,因为我用的是svn版本控制,填入项目url,svn的账户密码
在构建环境中勾选Send files or execute commands over SSH after the build runs(在本地构建项目完成后发送文件或者执行命令到远程服务器),选择之前配置好的SSH Server,Transfer Set设置Source files(本地Jenkins的相对目录路径),Remove prefix(去除多余的路径前缀),Remote directory(远程目标上传目录路径)
路径详解:
(C:\Users\Administrator\.jenkins\workspace\测试环境后台包)此路径是Jenkins创建的部署流水线编译打包后的项目路径,(D:\root)此路径是远端服务器上传文件的根目录,也就是Jenkins本地包上传的根目录,Source files可以设置为test\lib\**,remove prefix可以设置为test\lib\,Remote directory设置为\lib,意思就是我要上传C:\Users\Administrator\.jenkins\workspace\测试环境后台包\test\lib文件夹下的所有文件,并且去除test\lib\前缀,最终上传至远端服务器的D:\root\lib目录下。
Send files or execute commands over SSH after the build runs的另一个功能就是在远端服务器执行命令行,如下图所示执行windows的cmd命令,意思是第一步进入c盘,第二步进入C盘的C:\Users\Administrator\Desktop(也就是windows桌面),第三步执行test.bat脚本
C:
cd C:\Users\Administrator\Desktop
start test.bat
test.bat(以D:\root\lib下所有jar包为基础,运行D:\root\test.jar,且将运行的项目进程名称命名为test)
@echo off
START "test" java -Dloader.path=D:\root\lib -jar D:\root\test.jar
流水线中还有一个功能就是前置步骤,在打包编译前执行的命令,这里也选择Send files or execute commands over SSH,可以对远端服务器执行命令,选择之前配置好的SSH Server,在Exec command中填入如下脚本。(脚本注解:进入C盘,进入C盘的C:\Users\Administrator\Desktop,执行killTest.bat脚本)。
C:
cd C:\Users\Administrator\Desktop
start killTest.bat
killTest.bat(强制杀死进程名为test的进程)
@echo off
set char=test
echo char : %char%
for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %char%`) do (
echo find process %%a %%b
set pid=%%a
set image_name=%%b
)
echo now will kill process : pid %pid%, image_name %image_name%
taskkill /f /pid %pid%
pause
exit
因为需要编译打包的是maven项目,所以在build模块中填写Goals and options(clean install package -Dmaven.test.skip=true)
最后点击保存
在部署过程中遇到的问题如下,你如果遇到类似的问题,可以参考下
Jenkins安装maven插件_陈橙橙丶的博客-CSDN博客_jenkins安装maven插件
Jenkins系列教程七:Jenkins安装svn插件_懵懂无知的蜗牛的博客-CSDN博客_jenkins svn插件
Jenkins配置自动部署发送jar包到Windows服务器发版_飞来直去的博客-CSDN博客_jenkins发送文件到windows
Jenkins报错Cannot run program "sh"
Jenkins报错Cannot run program "sh" - 随波追逐 - 博客园
Jenkins安装SSH插件_阿甘兄的技术博客_51CTO博客
Jenkins上传文件到远程服务器失败 - 简书
.bat脚本中通过停止java进程_lsh1587719410的博客-CSDN博客_bat 停止java程序