1. 安装FreeSSHd
    ​​​FreeSSHd官网链接​​ 分别下载freeSSHd.exe和freeUserImport.exe
  2. Jenkins通过FreeSSHd远程部署至windows_JAVA


先安装freeSSHd.exe,后安装freeUserImport.exe

freeSSHd.exe傻瓜式安装,安装时其他都是默认安装选项,只有最后两步会弹出对话框询问是否生成私钥和是否设置为系统服务,选择“yes"即可,因为没有生成私钥,SSH服务将不能启动,设置系统服务的话每次开机都会自动启动SSH服务。

freeUserImport.exe软件是用来添加window上的用户,一般添加administrator用户

Jenkins通过FreeSSHd远程部署至windows_Jenkins_02


Jenkins通过FreeSSHd远程部署至windows_Jenkins_03


2. 安装Publish Over SSH插件

Jenkins > Manage Jenkins > Manage Plugins > 找到 Publish Over SSH插件安装重启Jenkins .

3.配置Publish Over SSH插件,菜单路径: Jenkins > Manage Jenkins > Configure System > Publish over SSH,添加一个SSH Servers

Jenkins通过FreeSSHd远程部署至windows_Jenkins_04


Jenkins通过FreeSSHd远程部署至windows_jar_05


Name随便取,Hostname是远程wind10的IP,Passphrase / Password填对应的administrator账户的密码,在Advanced中Port指定端口22. 填写完成之后可以使用Test Configuration测试连接是否成功.

4.创建并启动Jenkins Slave节点

Node name随便取一个,选中Permanent Agent,点击OK进入详细页面,其中Labels 填写的名称一会要用在创建作业中,注意Launch method选择的选项:

Jenkins通过FreeSSHd远程部署至windows_JAVA_06


在wind10上登录到Jenkins管理界面,进入刚刚创建的节点的status页面(如下图),下载agent.jar到本地,然后在cmd命令运行图中的命令(可以使用bat脚本设置开机启动比较方便),之后下面的界面将会显示“Agent is connected.”

Jenkins通过FreeSSHd远程部署至windows_JAVA_07


5.在springboot项目src\main\resources下创建两个bat脚本

shudown.bat

@echo off
setlocal enabledelayedexpansion
set port=9443
for /f "tokens=1-5" %%a in (‘netstat -ano ^| find ":%port%"‘) do (
if "%%e%" == "" (
set pid=%%d
) else (
set pid=%%e
)
echo !pid!
taskkill /f /pid !pid!
)
exit 0

start.bat

@echo off
set BUILD_ID=dontKillMe
set JAVA_HOME=D:\Java\jdk1.8.0_172
set classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
set path=%JAVA_HOME%\bin

java -jar xxxx-0.0.1-SNAPSHOT.jar
exit

shudown.bat 脚本用于杀死占用9443端口的应用程序(程序部署之后是运行在8885端口),最后的exit 0是告诉Jenkins在进行作业编译的时候是成功结束的,因为可能有时候根本没有占用该端口的程序,脚本就会抛异常,从而Jenkins会认为任务执行失败。
start.bat 脚本就是用于执行 springboot jar,这里还可以设置使用的jdk版本,并且这样的JAVA_HOME设置不会影响远程主机的环境变量。注意 set BUILD_ID=dontKillMe 是告诉Jenkins在执行任务完成之后不要杀死后台进程,这很重要!!!
6. 创建Jenkins任务
创建三个自由风格的任务,第一个任务执行shudown.bat,第二个任务执行 从git拉取代码maven打包之后通过Publish Over SSH将jar推送到远程windows7主机。第三个任务执行start.bat 启动项目,可以通过配置任务的上下游关系将它们关联起来。