• 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

  • 相关阅读:
    极客时间-左耳听风-程序员攻略-异步I/O模型和Lock-Free编程
    将SSRF升级为RCE(AWS环境)
    PowerShell ISE/文件名解析缺陷远程执行代码漏洞#RCE
    利用工具破解HTTP身份验证的多种方法
    ICMP shell
    CVE-2018-19386:SolarWinds数据库性能分析器中反射的XSS
    Recon ASRC Conference
    Python扫描器-爬虫基础
    The Bug Hunters Methodology v3(ish)
    svn状态图标大全
  • 原文地址:https://www.cnblogs.com/LOVEYU/p/13879013.html
Copyright © 2020-2023  润新知