一、分析准备
接上文,我们的项目是部署在windows server机器上的,没有Linux方便,需要先配置好SSH连接工具,以便后续Jenkins能连接到此服务器实现传包+执行脚本等任务。
经过分析,我们要做如下的准备:
1、在项目所在的windows server机器上安装SSH工具
2、通过工具、命令行等,手动确保Jenkins机器能通过SSH连接上项目机器
3、在确认上述连接正常的情况下,进行Jenkins中的相关配置,使得后续可通过Jenkins项目任务部署代码到服务器
PS:项目的情况如下
Jenkins机器 |
1台,部署在windows机器 |
项目语言 | VUE纯前端 |
项目部署服务器 | 1台,windows server服务器 |
二、windows server服务器SSH工具安装
由于windows机器没有自带ssh工具,需要手动进行安装,经过了笔者在网上的各类查询及亲测亲用,最终仅使用PowerShellServer工具时成功了。下面仅介绍这款工具。
1)、PowerShellServer安装
请自行百度下载安装包。
然后安装,一路下一步即可,姓名邮箱这里可以随便填一个即可。
这里选择NO。
2)、PowerShellServer配置
请按如下方案进行配置。
1、勾选作为服务运行。
2、勾选截图中的两项,并且配置SSH Port。关于SSH port需要注意
a、不要和电脑其他端口冲突;
b、如有防火墙,需要配置该端口在防火墙中不被拦截;
c、如你的机器是阿里云、华为云等,需要找管理员给你对外开放此端口;(特别重要)
配置好后且启动了powershell,在机器上输入netstat -an,应该可以看到配置的ssh端口。
3、勾选SFTP选项,并且配置后续接收Jenkins发送的代码包的默认目录。
4、配置使用密钥访问。
注:上一步的前提是,将部署Jenkins机器生成的公钥(参考上一篇文章https://www.cnblogs.com/chooperman/p/14061469.html),复制到项目所在机器中,一般放在.ssh文件夹下。
5、点击启动即可。
注意:PowerShellServer工具最多同时只能1个客户端连接,后续在调试的时候要注意不要在命令行已连接的时候,同时尝试用Jenkins连接,会报错。
3)、PowerShellServer连接
为了方便问题的排查,我们选择一步步进行PowerShellServer连接。首先通过手动方式的连接,排除PowerShellServer本身的配置问题。在此基础之上,我们再通过Jenkins任务的配置去连接。
a)、手动通过Jenkins机器连接项目服务器
Jenkins所在机器安装ssh服务后,可以使用命令行的方式进行远程连接项目服务器。如果没有安装ssh服务,也可以使用putty或者xshell等工具连接,原理一样。下面介绍命令行的方式连接。
由于部署Jenkins的机器也是windows,输入cmd进入命令行后,输入如下命令尝试连接项目服务器。
ssh -p SSH端口号 机器IP
1、-p SSH端口号用于指定SSH端口号,这里的端口号则是在PowerShellServer的server setting中配置的。
2、若需显示详细的连接信息,可以输入-v 命令,即ssh -v -p SSH端口号 机器IP
3、由于使用密钥连接,命令中不需要在ip前面指定访问用户名。
如上图所示,即表明成功通过SSH命令远程连接上了项目的windows server服务器。可以输入一些命令来进一步验证。另外PowerShellServer工具中也同时显示了已被Jenkins机器连接上。
b)、Jenkins配置连接项目服务器
由于上一步已经确认ssh本身是OK的,这里我们就放心的进行Jenkins侧的相关配置。
进入系统配置
这里进行2处SSH的配置
首先配置SSH remote hosts(用于后续通过ssh输入命令行,其实Publish over SSH中也可以使用命令,但其命令在Jenkins的控制台命令中不回显,因此使用SSH remote hosts输入命令,起到回显的作用。感兴趣可以自己试试)。如实填写IP、SSH端口号、选择全局凭证(即Jenkins服务器生成的私钥,配合项目服务器已经有的公钥,用于远程访问项目机器,参考https://www.cnblogs.com/chooperman/p/14061469.html),点击check connection,发现成功即可。
配置Publish over SSH(用于后续将生成的代码包放到远程服务器)。这里和上图的配置基本一致,区别是这里没有使用配置好的全局凭证,而是单独在某个SSH Server中配置了私钥。当然这里也可以使用全局凭证,个人喜好。
好了,到目前为止我们确保了后续Jenkins可以通过SSH工具把代码包发送到windows server服务器。下一章开始介绍,如何配置1个Jenkins的任务用于日常构建vue项目,并部署到windows服务器上。