Linux Jenkins主机能否触发Windows上VMware Ubuntu任务?如何配置?
当然可以实现!部署在Linux服务器上的Jenkins完全能够触发你Windows主机上VMware Ubuntu虚拟机里的任务,下面我一步步给你拆解具体配置方法:
前提条件
先确认这几件事,避免后续踩坑:
- 你的VMware Ubuntu虚拟机和Linux上的Jenkins主机得处于同一网络环境(比如都在局域网,或者给虚拟机配置桥接模式,确保Jenkins能ping通虚拟机的IP)
- Ubuntu虚拟机里要装好Java环境(Jenkins Agent依赖Java,版本和Jenkins服务器保持匹配就行,比如Jenkins 2.387+推荐Java 11或17)
- 放开Ubuntu虚拟机防火墙的相关端口:默认SSH端口22,以及Jenkins Agent通信的50000端口(或者你自定义的端口)
具体配置步骤
1. 在Jenkins服务器上添加Ubuntu虚拟机作为Agent节点
- 登录你的Linux Jenkins主机,进入Manage Jenkins -> Manage Nodes and Clouds
- 点击New Node,给节点起个好记的名字(比如
Ubuntu-VM-Worker),选择Permanent Agent后点击OK - 填写节点核心配置:
- Remote root directory:指定Ubuntu虚拟机上的一个目录,比如
/home/ubuntu/jenkins-agent(提前在虚拟机里用mkdir -p /home/ubuntu/jenkins-agent创建好,确保该目录有读写权限) - Labels:给节点加个标签,比如
ubuntu-vm,后续创建任务时可以通过标签指定在这个节点运行 - Usage:选Use this node as much as possible,让这个节点优先承接任务
- Launch method:推荐选Launch agent via SSH(这是最稳定、易维护的方式),配置细节如下:
- Host:填Ubuntu虚拟机的IP地址(在虚拟机里用
ip addr或ifconfig就能查到) - Credentials:点击Add,选择SSH Username with private key,输入Ubuntu的用户名(比如
ubuntu),然后配置密钥:- 可以直接用Jenkins主机的SSH私钥,或者在Ubuntu虚拟机里用
ssh-keygen生成密钥对,把公钥添加到~/.ssh/authorized_keys文件里,再把私钥上传到Jenkins的凭证里
- 可以直接用Jenkins主机的SSH私钥,或者在Ubuntu虚拟机里用
- Host Key Verification Strategy:测试环境可以选Non verifying Verification Strategy,生产环境建议选Known hosts file Verification Strategy更安全
- Host:填Ubuntu虚拟机的IP地址(在虚拟机里用
- Remote root directory:指定Ubuntu虚拟机上的一个目录,比如
- 配置完点击Save,Jenkins会自动尝试连接Ubuntu虚拟机,成功的话节点状态会显示Online
2. 验证节点是否能正常工作
- 回到Manage Nodes and Clouds页面,查看刚创建的节点状态,如果是Online就说明连接没问题
- 可以建个简单的测试任务验证:
- 新建一个Freestyle项目,在Restrict where this project can be run里填刚才设置的标签
ubuntu-vm - 在Build步骤里添加Execute shell,输入
echo "任务成功运行在Ubuntu虚拟机上!" - 保存后点击Build Now,查看控制台输出,如果能看到刚才的echo内容,就说明一切正常
- 新建一个Freestyle项目,在Restrict where this project can be run里填刚才设置的标签
3. 特殊情况:虚拟机用NAT模式的处理
如果你的Ubuntu虚拟机用的是NAT模式,Jenkins主机可能无法直接访问到虚拟机,这时候可以给VMware做端口转发:
- 打开VMware的虚拟机设置,找到Network Adapter -> NAT Settings -> Port Forwarding
- 添加一条转发规则:主机端口设为
2222,虚拟机端口设为22(SSH默认端口),虚拟机IP填虚拟机内部的NAT地址(比如192.168.122.100) - 然后回到Jenkins的Agent配置,把Host改成Windows主机的IP,Port改成
2222,Credentials还是用Ubuntu的用户名和密钥,这样Jenkins就能通过Windows主机转发到虚拟机了
4. 日常维护注意事项
- 确保Ubuntu虚拟机保持运行状态,或者配置VMware随Windows开机自动启动虚拟机,避免节点离线
- 如果Jenkins和虚拟机之间有防火墙,要记得开放SSH端口(22)和Jenkins Agent通信端口(默认50000)
- 定期检查节点状态,遇到离线情况可以先排查网络连通性、SSH密钥是否过期等问题
内容的提问来源于stack exchange,提问作者jdoeinthehouse




