AWS Ubuntu上部署的GitLab Docker Runner注册成功但无法执行作业
错误根因
你配置的Runner执行器为docker+machine,该执行器的作用是基于Docker Machine自动创建弹性CI任务节点,需要填写[runners.machine]段的完整配置才能正常运行。你当前配置中该段的MachineDriver、MachineName等必填参数全部为空,因此触发missing Machine options报错,执行器无法初始化,作业无法分配运行资源。
解决方案
根据你的实际使用场景选择对应处理方式即可:
场景1:无需弹性扩缩容,仅需要单实例Docker执行器(绝大多数普通用户适用)
你注册Runner时选错了执行器,修改为普通docker执行器即可解决:
- 打开配置文件
/srv/gitlab-runner/config/config.toml,做两处修改:- 将
executor = "docker+machine"替换为executor = "docker" - 删除整个空的
[runners.machine]配置段
- 将
- 重启Runner容器让配置生效:
docker restart gitlab-runner - 重启后验证Runner状态:
docker exec gitlab-runner verify
操作完成后再触发CI作业即可正常运行。
场景2:确实需要使用docker+machine实现AWS EC2弹性节点扩缩容
你需要补全[runners.machine]段的必填配置:
- 先确认Runner宿主机已安装Docker Machine以及AWS EC2驱动
- 补全
[runners.machine]配置,参考示例如下,需根据你的实际AWS资源修改对应参数:
[runners.machine] IdleCount = 1 IdleTime = 1800 MachineDriver = "amazonec2" MachineName = "gitlab-ci-machine-%s" MachineOptions = [ "amazonec2-access-key=你的AWS访问密钥ID", "amazonec2-secret-key=你的AWS秘密访问密钥", "amazonec2-region=AWS区域", "amazonec2-vpc-id=对应VPC ID", "amazonec2-subnet-id=对应子网ID", "amazonec2-security-group=Runner节点安全组名称", "amazonec2-instance-type=EC2实例规格", "amazonec2-ami=对应区域的兼容AMI ID", ]
- 配置修改完成后重启Runner容器生效,查看日志确认没有相关报错即可。
内容的提问来源于stack exchange,提问作者shorif2000
相关产品推荐
相关产品推荐

