系列目录 前面的demo我们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点往往是不能满足需求的.比如,.net项目要使用windows节点构建,java项目如果部署在linux服务器上往往也需要目标类型的linux节点做为构建节点,开发中使用的jdk版本不同也可能需要不同的构建主机.构建docker镜像往往也需要linux主机(强烈不建议使用docker for windows 进行linux环境的docker构建).本节我们讲解如何搭建一个主节点为windows server主机,从节点同时包含windows server和centos的jenkins集群 需要注意的是,由于windows不支持ssh(至少目前绝大多数线上的windows server主机是这样的),因此windows从节点往往是通过JNLP的方式搭建的.而linux则相对较为简单,只需要配置ssh即可. 使用JNLP配置从节点虽然也不十分复杂,但是缺点也比较明显.那就是需要在目标主机上启动一个控制台程序,一方面这个程序容易被误关,另一方面如果windows server重启则需要手动把它启动起来,这样极大增加了工作量.如果运维的工作负荷非常高,很可能在一次大规模主机重启后忘记重启一些软件,这样很多错误可能在已经影响使用的情况下才会发现.因此,这里我们探索一种新的方式,即使用微软公司开发的win32-openssh(现已集成到windows 10和windows server 2019),配置也非常方式.有了win32-openssh,我们就可以像linux主机一样使用ssh方式配置windows从节点.虽然我们提倡使用win32-openssh,但是仍然会介绍如何使用JNLP来配置windows从节点 经过笔者测试,win32-openssh支持windows server 2008及以上版本,目前恐怕没有更老的服务器版本了吧,大家不用担心生产环境无法使用的问题.当然,win32-openssh的用途绝不仅限于搭建jenkins混合集群,还可以用它完成更多的基于windows的自动化管理工作.笔者基于win32-openssh做了一套windows服务的自动化管理工具(支持windows服务的关闭,更新,启动,重启,停止,扩容等功能),目前部署在大约30台线上服务器上. 安装win32-openssh 前面我们说到要基于win32-openssh来基于ssh配置Jenkins的windows从节点,这节我们就先介绍如何安装win32-openssh,然后紧接着开始使用ssh配置jenkins windows从节点. linux从节点ssh配置也是一样,因此不再单独介绍linux从节点的ssh配置 我们进入openssh-win32github页面进行下载,根据自己系统位数选择32位或者64位的. 下载完成以后进行解压,把解压后的文件夹放到C盘(也可以是其它盘),然后进入文件夹里面,内容类似如下: img 在当前目录下打开powershell(或者从其它位置打开,cd到当前目录),在powershell命令窗口输入.\install-sshd.ps1,执行安装命令. 如果在执行过程中powershell报错,提示权限不足,则进行以下设置Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process,很多网上的教程没有指定scope,则很容易造成安全问题,在个人电脑上无所谓,在服务器上一定要重视过高的权限. 完了以后再执行FixHostFilePermissions.ps1和FixUserFilePermissions.ps1这两个文件.(在powershell命令窗口输入.\文件名). 启动ssh服务. 安装完成以后,ssh相关服务默认是不启动的,我们打开服务管理界面,手动启动它们并把启动类型设置为自动,这样服务器重启开机时ssh相关的服务就会自动启动. img windows10开启ssh windows较新的版本已集成了openssh,但是需要手动开启它. 进入我的电脑,然后点击上面的计算机标签,然后选择卸载或更新应用 img 在出现的界面里选择管理额外功能 img 点击添加功能,然后在出现的列表里找到ssh相关的功能,都添加上 img 把openssh所在文件夹添加到path 我们把win32-openssh所在文件夹路径添加到环境变量path里,这样我们就可以在控制台输入ssh命令来连接远程主机,而不需要类似xshell,putty这样的终端工具. 生成ssh key 添加完环境变量后,我们打开cmd或者powershell命令窗口,输入ssh-keygen命令,生成ssh key,输入命令后一路回车.最终生成的key存放在C:/Users/当前用户名/.ssh/目录下. img 其中id_rsa为私钥,id_rsa.pub为公钥,authorized_keys为授权访问本机的远程电脑的公钥,known_hosts为,初次访问远程主机时存储的信息.晚些时候我们会用到这些文件. 安装完ssh以后如果忘记了它的安装位置,打开命令窗口,输入where ssh就可以看到ssh.exe所在的目录. 分类: .net, Devops 标签: .net, devops, ci, cd « 上一篇: 持续集成高级篇之Jenkins cli与Jenkins ssh » 下一篇: 持续集成高级篇之Jenkins windows/linux混合集群搭建(二) posted @ 2019-09-04 08:28 周国通 阅读(75) 评论(1) 编辑 收藏 评论列表 #1楼 2019-09-04 14:06 滴答的雨 666 JNLP 也可以安装成windows服务 powershell自带session机制,之前看到有人用这种验证方式发布windows程序。 jenkins master-slave机制还是没有直接用脚本写的方便,期待楼主的后面分享https://www.cnblogs.com/tylerzhou/p/11456796.html