目录
一、问题背景
问题环境
- gitlab: GitLab Enterprise Edition 11.4.12-ee
- gitlab-runner: 13.11.0 (7f7a4bb0)
重现步骤
- 触发 gitlab ci,将 running 状态下的 job cancel
- 重新触发 gitlab ci,发现 job 状态为 pendding.
熟悉 gitlab 的同学可能一眼就能发现问题了,简单来说就是,runner 版本太新了。
二、问题排查
1. 登录 runner 所在服务器,查看 log,获取线索
从日志来看,runner 收到了 job cannel 的消息,也停止了 job,但后续,runner 提交 job 状态给 gitlab 失败,一直重试…
2. 尝试重启 runner 服务,看 pending 任务是否能够变为 running
重启 runner 后,pending 的 job 变为了 running,万能的重启大招啊,但重启只能一时爽,如果想要一直爽,那不就一直…
不行,不行,受不了~
3. 将 WARNING 日志放到网上所搜
找到一个类似的案例
结合公司 gitlab 版本查看,很幸运,版本正如上图所述,低于 11.5
三、解决办法
1. 升级 GitLab 版本
这个方案有权限、不怕跑路的小伙伴可以试试。
2. 降级 Runner
- 查询 gitlab 发布历史,公司使用的版本的发布时间应该在2019年
https://gitlab.com/gitlab-org/gitlab/-/blob/master/changelogs/archive-11.md#1149-2018-12-03 - 查询 gitlab-runner 发布历史,查找 2019 年相应的 gitlab-runner,选择 v11.11.2 进行尝试
https://gitlab.com/gitlab-org/gitlab-runner/-/releases?after=eyJpZCI6IjgxMjAxNSJ9 - 重试复现步骤, cancel job,再新建 job,pending 变为了 running,问题解决