Jenkins远程连接Windows执行命令

环境说明

        我在一台linux服务器上安装了Jenkins服务作为Jenkins服务器,除此之外,还有一台Windows电脑,安装了python环境,本地保存着自动化测试用的python代码,这台电脑用于执行基于chrome浏览器的自动化web测试。2台机器都处在同一个网络里。

        现在想要达到的效果是,利用Jenkins的定时构建任务,让Windows电脑能够定时地执行自动化测试,并返回结果,不需要人为的手动点击运行。

        想要达到效果,第一步需要解决的就是Jenkins如何与Windows连接。众所周知,Windows的远程是RDP协议的,而Jenkins是通过SSH协议进行文件传输及命令传输的,所以先要让Windows支持SSH协议连接。

Windows安装SSH服务

        在Windows上安装SSH服务的应用有很多,比如OpenSSH,freeSSHd等,本文举例通过安装openssh server,来实现Jenkins通过SSH连接windows服务器。

        Windows安装OpenSSH可以按照我写的另外一篇文章来安装,地址:https://blog.csdn.net/v781423070/article/details/131322758

安装和配置Jenkins

        Jenkins的安装和基本配置可以查看我写的另外一篇文章,地址:https://blog.csdn.net/v781423070/article/details/130456211

Jenkins安装Publish Over SSH插件

打开Manage Jenkins→Plugins→Available plugins界面,搜索框中输入SSH,安装Publish Over SSH插件,如下图(因为我已经安装过了,所以没搜索出来),安装完成后重启Jenkins服务生效。

Jenkins配置SSH连接

打开Manage Jenkins→System界面,如下图红框,找到Publish over SSH下的SSH Servers选项。(没有安装Publish Over SSH插件则不会显示选项)

如下图红框

Name:连接名称,随便写。

Hostname:要远程连接的主机ip,我要远程的Windows电脑的ip是172.20.1.144。

Username:远程连接账号,如果电脑通过OpenSSH来实现的SSH服务,则账号就是正常windows远程桌面连接的账号,就是正常登录电脑的账号。

Remote Directory:可以为空,也可以输入/。(输入/,则它对应的就是windows下面的C盘下面的用户下面对应的用户名的目录)

勾选复选框并填写登录密码:如果电脑通过OpenSSH来实现的SSH服务,则账号密码就是正常windows远程桌面连接的账号密码,就是正常登录电脑的账号密码。

填写Port:远程主机的SSH端口。

Timeout(ms):超时时间默认300000。

其他都可以为空不用填写,填写完点击右下角Test Configuration测试一下,左下角出现Success则代表连接成功,链路通了。

点击保存按钮,保存。

Jenkins创建任务来实操

点击【新建Item】

输入一个任务名称,选择Freestyle project,点击确定。

填写任务描述,随便写。

其他的比如【源码管理】【构建触发器】【Build Steps】【构建后操作】这些配置项在这里就不再赘述了,根据想法来构建任务。

这里主要重点说一下【构建环境】,勾选Send files or execute commands over SSH after the build runs。(没有装Publish Over SSH插件则不会显示选项)

Name:选择SSH链接名。(注意:这里写的是链接名,并不是远程主机ip)

在Exec command输入栏中输入需要远程Windows主机执行的命令,命令前面需加“cmd /c”,否则不会执行命令。比如下图红框内的命令意思就是,执行C:\Users\YVIEW\PycharmProjects\124\目录下的run.bat文件。

点击高级按钮,将Exec timeout时间改为0,防止运行超时中断。

其他选项不用填写,保存。构建任务,如下图,查看日志,显示成功了。(实际在windows电脑上自动化测试也已经自动执行了,目的达到了)

我在Exec command输入栏中输入的是让远程机执行批处理文件,批处理文件内容如下图,已经把要操作的命令写在了文件里,最终只要执行bat文件就行。bat文件的内容意思就是,进入到C盘的\Users\YVIEW\PycharmProjects\124目录下,这个目录是Pycharm其中的一个项目目录,然后再执行man.py文件,运行代码执行自动化测试。

其他问题

上面的实操,Windows用的是OpenSSH来建立连接的,但我还尝试了安装freeSSHd来建立SSH连接,(安装freeSSHd操作可查看我的另外一篇文章,地址:https://blog.csdn.net/v781423070/article/details/131324571),但是,遇到了问题,用linux命令行连接是建立成功的,但是在Jenkins里报了错,如下图,报错信息应该是SSH算法有问题,目前还没有找到解决办法。

对于整个Jenkins环境的其他想法

        目前就2台机器,一台是Jenkins服务器,一台是Windows测试电脑,Jenkins远程连接Windows并发送执行远程命令,Windows执行测试并返回结果,这个方案解决了不需要人为手动来点击运行执行测试的麻烦,可以来定时地执行任务。

        但,Jenkins能做到的远远不止这些。

        如果把测试代码上传到Git,通过Jenkins从Git处下载代码到Jenkins服务器,然后Jenkins服务器本地打包代码,再远程连接Windows,再把文件发送过去,再执行远程命令,Windows再来执行自动化测试并返回结果。这个方案既解决了无需手动点击运行的麻烦,又解决了如果测试代码有变动,无需手动copy到Windows的麻烦。

        Jenkins可以用触发构建任务(当有代码更新了就去拉取)或轮询触发任务(定时地去拉取)都可以,也很灵活。

猜你喜欢

转载自blog.csdn.net/v781423070/article/details/131326930