jenkins连接windows服务器配置

背景

有时候针对特殊项目配置,必须使用windows作为服务器使用;对于经常使用jenkins进行项目自动化的构建,所以想到的第一个念头就是如何使用jenkins进行windows项目的构建呢?

对于linux系统,需要使用ssh进行文件的传输,通过资料筛选和实践,发现windows也是同一原理。

环境配置

jenkins服务器:windows系统(windows10)

web服务器:windows系统(PC2,可以是windows10或者2012)


windows服务器powershell Server端口号设置

使用windows服务器,同样也必须支持SSH连接,这里使用的是powershell Server作为中间件,进行传输配置

powershell Server可以访问官网下载或者如下地址链接:https://pan.baidu.com/s/1iJJis5KGqR0uhXa0OZumDw 提取码:jfwx

安装完成之后使用管理员身份运行程序:打开配置,如下默认22端口如果被占用,需要修改其他端口号;这里修改端口号为1122;

image-20201026144220980

jenkins-服务器putty配置&证书

客户端(jenkins服务器)连接powershell Server可以使用用户名密码连接或者通过证书连接;证书连接需要通过puttygen生成证书并上传到windows服务器上,如下打开puttygen

image-20200929104920890

密钥生成后,可以为密钥设置密码,点击save private key, 保存客户端私钥,保存为自定义后缀名为“.ppk”的文件:

image-20200929105228292

之后不要点击save public key,手动复制public key的内容到.txt文件保存(其他任何文件类型皆可),并上传到web服务器端:

如图

image-20201026142811190

powershell Server 证书配置

web服务器上PowerShell server 配置如下,修改配置后要重启服务:

image-20201026145115461

putty连接powershell server配置:

打开putty,设置IP和端口,connection-SSH-Auth 设置如下

image-20200929110103542

然后点击"open"连接powershell server,连接如下:提示输入"rsa-key-20200929",需要输入连接服务器的私钥,

image-20200929110500236

输入私钥之后,提示"SSH-Enable powerShell Acess for Windows"表示连接成功,如上图。


jenkins构建配置

这样jenkins服务器就可以和web服务器通信了,接下来就是通过jenkins上传war完成项目自动化构建,在jenkins系统配置中设置windows服务器的连接配置,如图

image-20200929111556987

配置中需要注意连接的Username、Remote Directory、Passphrase / Password以及Port。配置好之后可以点击[Test Configuration]测试是否配置完成。

项目自动化构建

新建一个自由风格的项目,基本配置这里忽略,特别说明构建后的操作如下

image-20201026150948284

killJar脚本如下

@echo off
D:
cd D:project	omcat-stj	omcat-rcm-stjin
::关闭tomcat
call shutdown.bat
:: 休眠10秒
ping 127.0.0.1 -n 1 >nul

jenkins-auto-start脚本如下

@echo off
:: 源文件设置
:: set SourceFile=C:"Program Files"
software"PowerShell Server 2020"sftproot
cm*.war
:: 删除发布文件
D:
rd /s/q D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj
echo test2
:: 新建文件夹rcm_stj
md "D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj"
:: XCOPY FILES
xcopy C:"Program Files"
software"PowerShell Server 2020"sftproot
cm*.war D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj /E /Y
echo test3
:: 重命名war包
ren D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj
cm*.war rcm_stj.war
:: 复制war包会/E会产生空的rcm_stj文件夹,需要删除
rd /s/q D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj
cm_stj
:: 解压war包
d:
cd D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj
jar -xvf rcm_stj.war
:: 休眠10秒
:: ping 127.0.0.1 -n 10 >nul
echo test4
::替换配置文件
copy /Y D:projectak
cm_stjjdbc.properties D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stjWEB-INFclasses
copy /Y D:projectak
cm_stjlicense.lic D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stjWEB-INFclasses
:: call startup.bat
:: 休眠10秒
ping 127.0.0.1 -n 10 >nul
:: 删除发布文件夹中的war包
del D:project	omcat-stj	omcat-rcm-stjwebapps
cm_stj*.war
:: 删除xftp中的所有war文件
del C:"Program Files"
software"PowerShell Server 2020"sftproot*.war
:: call startup.bat
:: 休眠10秒
:: ping 127.0.0.1 -n 10 >nul
::启动tomcat
D:
cd D:project	omcat-stj	omcat-rcm-stjin
::关闭tomcat
call startup.bat
:: 休眠10秒
ping 127.0.0.1 -n 10 >nul

脚本执行思路说明流程图如下:

stateDiagram [*] --> 停止tomcat 停止tomcat --> 删除发布war 删除发布war --> 新建rcm_stj文件夹 新建rcm_stj文件夹 --> 复制重命名war包到该文件夹 复制重命名war包到该文件夹 --> 解压war包 解压war包 --> 替换配置文件 替换配置文件 --> 删除rcm_stj中的war包 删除rcm_stj中的war包 --> 删除sftproot中的war包 删除sftproot中的war包 --> 启动tomcat 启动tomcat --> [*]

其他补充

war上传位置说明

通过putty连接powershell server上传的war的默认位置是在powershell server的安装路径sftproot目录下

windows脚本命令

del是删除文件夹的命令
rd或rmdir是删除文件夹包括文件
copy是复制单一的文件信息,而xcopy是复制包括文件夹

错误处理

在构建时会出现提示如图"ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 960,001 ms]"

image-20201106170023001

这个问题经查证是:连接超时,而Jenkins无法从脚本中正确退出。可以参考https://stackoverflow.com/questions/11290540/jenkins-text-finder-unable-to-success-my-build

解决方法:

第一步:在构建后操作钟,设置"Exec timeout(ms)"设置为项目构建时间,为毫秒为单位;这里根据项目情况设置为960000;且勾选"Exec in pyt"如图

image-20201106172922660

第二步:在Exec command中添加"exit 0"作为结束,如图

参考

https://blog.csdn.net/achenyuan/article/details/81166526

https://blog.csdn.net/achenyuan/article/details/81181347

https://blog.csdn.net/qq_39720249/article/details/88052325

原文地址:https://www.cnblogs.com/LOVEYU/p/13879013.html