如何配置Jenkins在构建触发时自动创建EC2 slave节点?
解决Jenkins EC2 Slave自动创建的问题
看起来你已经完成了EC2 Jenkins插件的基础配置,但还差关键的一步——让插件自动按需管理slave实例,而不是手动创建永久节点。我来一步步帮你搞定:
一、Cloud Provider的节点模板配置(核心步骤)
你之前只给AMI加了标签,但没配置EC2插件的实例模板,这是自动创建节点的关键:
- 回到
Manage Jenkins -> Configure System,找到你已经配置好的AWS Cloud Provider区块 - 点击「Add」(通常是添加Cloud Instance Template选项),开始配置按需实例的模板:
- AMI ID:选择你准备好的、带有
UI_TESTS标签的AMI - Instance Type:选适合回归测试的EC2实例类型(比如t3.medium,根据你的测试资源需求调整)
- Labels:这里必须填写
UI_TESTS(和你作业里限制的标签完全一致,大小写敏感) - Instance Launch Details:配置VPC子网、安全组(务必确保Jenkins master能访问实例的SSH端口,默认22)、IAM角色(需要给角色分配EC2创建/销毁的权限,比如
AmazonEC2FullAccess或者自定义的最小权限策略) - Remote Root Directory:设置slave的工作目录,比如
/home/ec2-user/jenkins(对应AMI里的系统用户路径) - Launch Method:选择
SSH,然后配置对应的SSH凭据(比如EC2 Linux默认用户是ec2-user,Ubuntu是ubuntu,要和AMI里的用户匹配) - Idle Termination Minutes:设置实例空闲多久后自动销毁,比如10分钟(避免闲置浪费资源)
- Number of Executors:根据实例性能设置,比如1(每个实例跑一个测试任务更稳定)
- AMI ID:选择你准备好的、带有
- 保存配置,这时候EC2插件就会根据作业需求自动创建带有
UI_TESTS标签的slave了
二、作业构建配置的后续调整
- 打开你的回归测试作业配置页面
- 确认Restrict where this project can be run已经勾选,且标签表达式是
UI_TESTS - 彻底删除之前手动创建的
UI_TESTS标签节点(避免和自动创建的节点冲突) - 可选优化:
- 在「Build Triggers」里设置触发条件(比如代码提交后自动触发,或者定时执行)
- 若需要,在「Post-build Actions」添加测试结果通知,但这不会影响自动创建slave的功能
三、验证自动创建流程
- 确保当前没有任何带有
UI_TESTS标签的节点 - 手动触发一次构建,此时Jenkins会自动执行:
- 检查是否有可用的
UI_TESTS节点 → 没有则调用AWS API创建实例 - 实例启动后,通过SSH连接并初始化slave环境
- 测试任务完成后,实例会在空闲超时后自动销毁
- 检查是否有可用的
常见问题排查
- 若构建仍提示无标签节点:检查实例模板的
Labels是否和作业里的完全一致(大小写、空格都要匹配) - 若实例创建失败:检查IAM角色权限、安全组是否开放SSH端口、AMI是否能正常启动
- 若实例启动后无法连接:确认SSH凭据正确,且AMI里的SSH服务已正常启动
内容的提问来源于stack exchange,提问作者Bohdan Nesteruk
相关产品推荐
相关产品推荐

