使用Jenkins打包项目可以避免手动打包上传部署,节省了不少时间,有利于团队开发。我所部署的项目是SpringBoot,版本控制使用的是SVN

Windows下Jenkins的安装详见另一篇文章


设置Maven安装路径

Jenkins面板中选择Maven Jenkins,点击Global Tool Configuration

jenkins ssh remote 不退出 pty jenkins ssh windows_服务器

找到Maven安装,新增maven,填入maven的Name和MAVEN_HOME,这里我用的是我本地安装的maven,设置完点击保存即可。

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_02

安装Subversion和publish-over-ssh

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins_03

这里我已经安装了Subversion Plug-in,没有安装的在可选插件里查找然后安装

jenkins ssh remote 不退出 pty jenkins ssh windows_上传_04

安装publish-over-ssh

jenkins ssh remote 不退出 pty jenkins ssh windows_上传_05

进入Manage Jenkins中选择Configure System

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_06

找到Shell,填入本地的cmd.exe路径,不然会报错

jenkins ssh remote 不退出 pty jenkins ssh windows_上传_07

 

 

安装PowerShell Server 2016和配置Jenkins中的SSH Server

Powershell Server百度云链接如下:

链接:https://pan.baidu.com/s/1Q2o-83wSD0vTkqSLyGtJaA 
提取码:vfii 

设置开启自启动

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins_08

选择当前Windows用户中的Administrators作为登录账户

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_09

勾选SFTP Features中两个选型,设置D盘的文件夹为上传的主目录

jenkins ssh remote 不退出 pty jenkins ssh windows_上传_10

 

 在Manage Jenkins中打开Configure System

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_11

 找到Publish over SSH

 

jenkins ssh remote 不退出 pty jenkins ssh windows_服务器_12

找到SSH Servers,填入Jenkins要部署的那个服务器的别名、主机名IP、登录用户名、远程上传目录

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins_13

 开始配置SpringBoot项目部署流水线

点击新建Item项目

 

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_14

 选择构建一个maven项目,输入项目名称

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins_15

 选择Subversion,因为我用的是svn版本控制,填入项目url,svn的账户密码

jenkins ssh remote 不退出 pty jenkins ssh windows_上传_16

 在构建环境中勾选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目录下。

 

jenkins ssh remote 不退出 pty jenkins ssh windows_服务器_17

 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

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins_18

流水线中还有一个功能就是前置步骤,在打包编译前执行的命令,这里也选择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

 

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_19

因为需要编译打包的是maven项目,所以在build模块中填写Goals and options(clean install package -Dmaven.test.skip=true)

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_20

最后点击保存

 

jenkins ssh remote 不退出 pty jenkins ssh windows_Jenkins配置流水线_21