最近遇到一个问题 droneci 无法触发 pipeline。解决这个问题需要查看日志,首先查看 drone-server 的日志,报错
|
|
经过 google 一下,发现这个报错是出现在 gitlab 上的,所以解决问题的办法,应该在 gitlab 上。 drone “Cannot transition status via :enqueue from :pending (Reason(s): Status cannot transition via "enqueue") 经过 chatgpt 回答: 这个错误消息表明在 GitLab 中尝试执行某个操作时,状态无法从:pending 通过:enqueue 进行转换。这可能是由于几种原因引起的,以下是一些可能的原因和解决方法:
状态不允许转换: GitLab 可能定义了一些状态转换规则,可能不允许从 pending 状态通过 enqueue 进行转换。检查相关文档、代码或配置文件,确保这是一个有效的状态转换。
任务队列问题: enqueue 通常涉及到任务队列,如 Sidekiq。确保你的任务队列配置正确,并且相关的后台任务工作正常运行。
依赖问题: 如果在执行状态转换的操作中涉及到依赖项,确保这些依赖项都已正确配置和安装。可能需要检查 Gemfile(如果使用 Ruby),或者其他项目依赖项的配置文件。
版本兼容性: 检查 GitLab 的版本是否与你的应用程序或项目所需的版本兼容。某些状态转换可能在特定版本中才被支持。
日志和调试: 查看 GitLab 的日志以获取更详细的错误信息。有时,错误信息可能提供更多上下文,帮助你确定问题的根本原因。
数据库问题: 有时,数据库中的问题可能导致状态转换失败。确保数据库连接正常,且数据库中的相应表和字段都正确配置。
权限问题: 检查执行该操作的用户或服务帐户是否具有执行状态转换操作的足够权限。确保相关的访问控制设置是正确的。
研究 GitLab Issue: 查看 GitLab 社区论坛或问题跟踪系统,看看是否有其他人报告过类似的问题,以获取可能的解决方案或工作中的补丁。
如果你能提供更多关于问题上下文的信息,例如执行的具体操作、使用的 GitLab 版本以及相关的代码片段,那么我可能能够提供更具体的帮助。
但是解决问题的办法,是重启了 gitlab 就好了。估计是因为长期 droneci 无法成功进行,造成 gitlab 假死,影响了服务启动。
在 Emacs 中,保存并退出文件的快捷指令是 C-x C-s
和 C-x C-c
:
-
保存文件:
C-x C-s
:按下Control
键同时按下x
和s
,保存当前文件。
-
退出 Emacs:
C-x C-c
:按下Control
键同时按下x
和c
,退出 Emacs。
请注意,如果有未保存的更改,Emacs 会在退出前询问是否要保存。如果你想强制退出而不保存更改,你可以使用 C-x C-c
,然后在提示时输入 !
。
这些是 Emacs 中用于保存和退出的基本快捷键,希望对你有帮助。
“启动僵尸构建死神”?难道是黑客留下的什么中二宣言?
脑子虽然转不过来,但是我手没有停,赶紧去查了下这是什么东西:
“starting the zombie build reaper”,出现这个消息表示 Drone CI 开始清理僵尸构建。
在 Drone CI 中,当一个构建过程完成或失败后,构建容器会被立即删除。但是,在一些情况下,容器可能由于各种原因未能成功删除(例如,出现异常、Docker 容器运行错误等)就可能残留构建容器。
这些残留的构建容器就被称为“僵尸容器”,于是 Drone CI 会启动一个名为 “zombie build reaper” 的定时任务来清理未释放的僵尸容器。
interval”:“24h0m0s” 表示一个时间间隔,其中 “h” 表示小时,“m” 表示分钟,“s” 表示秒。这个时间间隔的意义是每隔 24 小时运行一次任务。
好了,误会解除,它只清理 Drone 系统中的僵尸构建记录,其它 docker 日志也未检查出当天有什么异常记录。
虽然没有直接证据,也无法解释它如何能够“删除”宿主机文件,但此时 Drone 的嫌疑还未解除,直到出现了新的线索。
服务器异常重启
由于实在排查无果,我将事情经过告诉了一位后端大神,在大神的一番操作下,最终在系统记录中发现异常,终于离真相前进一步:
|
|
参考文档: