Gitlab Runner执行流水线时第二个任务Pending,如何解决?
检查标签匹配:确认第二个任务的
tags配置和Runner的标签完全一致。如果.gitlab-ci.yml里第二个任务指定了特定标签,但你的Runner没有对应标签,任务会一直Pending。去项目设置→CI/CD→Runners里核对Runner标签,再对比流水线配置里的tags字段。调整Runner并发数:Runner的
concurrent参数控制同时执行的任务数,默认可能是1。如果第一个任务在运行,第二个就会排队。找到Runner的config.toml文件(通常在/etc/gitlab-runner/或用户目录下),把concurrent改成大于1的数值(比如2),然后执行gitlab-runner restart重启服务。核对阶段与依赖配置:检查第二个任务的
stage是否在第一个任务的阶段之后,有没有错误的needs或dependencies设置。比如如果两个任务同属一个阶段但Runner并发不够,或者needs引用了不存在的任务,都会导致Pending。仔细检查.gitlab-ci.yml里的阶段顺序和依赖规则。排查Runner实际状态与负载:即使显示活跃,Runner可能处于忙碌或资源不足状态。在GitLab的Runner页面查看“Last contact”是否正常,以及当前是否有其他任务占用。登录Runner所在服务器,用
gitlab-runner status确认服务运行正常,用top/htop检查CPU、内存负载,资源不足会导致Runner无法承接新任务。检查任务特殊配置:如果第二个任务用了
dockerexecutor,确认Docker daemon是否运行,Runner是否有Docker访问权限。也可以查看Runner日志(gitlab-runner logs),看有没有任务启动失败的报错信息,比如环境变量缺失、缓存挂载失败等问题。重新注册Runner:如果以上方法都无效,尝试重新注册Runner。执行
gitlab-runner register,按照提示重新配置标签、executor等信息,完成后重启Runner服务。
内容的提问来源于stack exchange,提问作者sai nishanth

