jenkins优雅的增加一个windows节点
配置 windows
这里我选择使用 ssh 来连接 windows,这样可以完全由 jenkins 来管理 windows 节点,比如 agent 的启动与停止、agent 的更新等都不需要登录 windows 来操作了。
安装 openssh server
这里选择 moba ssh server, 下载地址:https://mobassh.mobatek.net/download.html moba ssh server 基于 cygwin 和原生 windows 有差别,特殊情况下执行结果不一致,我放弃了,转而使用原生 openssh 服务
GitHub 地址:https://github.com/PowerShell/Win32-OpenSSH/releases
最新版和 jenkins 兼容性有些问题,我用的是 v8.1.0.0p1-Beta 版, 下载 OpenSSH-Win64.zip 解压到 windows 的 C:\Program Files\OpenSSH
目录下,然后执行 (管理员权限运行 powershell)
1 | cd "C:\Program Files\OpenSSH" |
配置 java 环境
jenkins 默认不会读取环境变量, 所以我们需要手动复制 java 的文件夹到工作目录,假设工作目录设定为 C:\jenkins-agent
, 那么 java 路径就是 C:\jenkins-agent\jdk\bin\java.exe
测试
使用 jenkins 机器(主节点)执行:ssh user@<windows ip>
连接成功即可。
配置 jenkins
jenkins 系统管理 –> 节点管理
构建流水线
确认节点上线了。
这里限制构建所在的节点
构建过程选择 执行 Windows 批处理命令
已经可以正常构建了
常见问题
在 windows 里面可以正常执行,在 jenkins 提示命令不存在, 原因是 jenkins 不会加载 windows 自带的配置文件,解决方法:
- 使用绝对路径
- 配置 PATH 环境变量到 jenkins
- 手动配置你需要的工具的路径
我更喜欢第二种方法:
到 windows 里面 cmd 执行 path 命令,将 path 后面的值复制
配置在 jenkins –> 节点列表 –> 相关节点的环境变量中。