使用shell执行器的GitLab CI流水线卡住如何解决?
GitLab CI Shell执行器流水线卡住排查方案
- 确认GitLab Runner运行状态
登录部署runner的服务器,执行gitlab-runner status检查服务是否正常运行,若返回停止状态,执行gitlab-runner start启动服务后重新触发流水线。 - 核对Runner与项目的匹配规则
检查注册的runner是否已绑定对应项目,同时确认.gitlab-ci.yml中job设置的tag与runner的tag匹配,若runner设置为仅运行带tag的job,未配置tag的job会一直处于pending状态卡住。 - 排查执行环境权限问题
Shell执行器默认使用gitlab-runner系统用户执行所有job命令,可手动切换到该用户,逐条执行你配置中的job命令,确认无权限不足、环境变量缺失等问题。 - 移除命令中的交互式操作
若配置中的命令存在需要人工确认的逻辑(比如包安装需要输入确认、SSH连接需要手动信任主机指纹等),会导致流水线挂起,需要给命令添加静默执行参数,例如yum install -y <包名>、SSH命令添加-o StrictHostKeyChecking=no参数。 - 清理Runner异常缓存
长期运行的Shell Runner可能残留文件锁、异常后台进程,可进入默认工作目录/home/gitlab-runner/builds/删除对应项目的缓存目录,执行gitlab-runner restart重启服务后重试。 - 查看Runner运行日志定位根因
执行journalctl -u gitlab-runner -f实时打印Runner运行日志,触发流水线后可查看具体的执行卡住节点,定位具体错误信息。
内容的提问来源于stack exchange,提问作者g g
相关产品推荐
相关产品推荐

