You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drone 0.8构建任务卡在Pending状态问题求助

解决Drone 0.8在Docker Swarm部署后任务卡在Pending的问题

你好,针对你遇到的「Drone 0.8通过Swarm Stack部署后,前两个构建任务正常执行,后续全部卡在pending」的问题,结合Drone 0.8的特性和Swarm部署的常见坑,我整理了几个优先级从高到低的排查方向和解决方法:

1. 补全Drone Swarm模式核心配置

Drone 0.8在Swarm环境下运行时,必须明确开启Swarm调度支持,否则默认的单节点Runner并行任务上限就是2个——这刚好对应你前两个任务成功、后续卡住的现象。

排查点:

你的server服务配置里,是否缺少以下关键环境变量?

  • DRONE_SWARM=true:让Drone使用Swarm原生调度能力分配任务
  • DRONE_AGENTS_MAX:设置允许的最大并行构建任务数(默认值为2)

修复操作:

更新你的stack配置文件,给server服务添加这些环境变量:

services:
  server:
    # 保留你原有的镜像、端口、挂载配置...
    environment:
      # 保留你原来的DRONE_OPEN、DRONE_HOST等变量...
      - DRONE_SWARM=true
      - DRONE_AGENTS_ENABLED=true
      - DRONE_AGENTS_MAX=8  # 根据你的集群资源调整,比如设为4或8

更新后重新部署:

docker stack deploy -c your-drone-stack.yml drone

2. 检查Swarm集群资源是否耗尽

如果Swarm所有节点的CPU、内存都被占满,Docker无法调度新容器,就会导致Drone任务卡在pending状态。

排查步骤:

  1. 查看所有Swarm节点状态,确保没有节点离线:
docker node ls
  1. 查看单个节点的运行任务,检查资源占用:
docker node ps <你的节点ID>
  1. 实时监控容器资源使用情况:
docker stats

修复建议:

  • 如果节点资源不足,要么扩容Swarm集群,要么清理闲置容器释放资源
  • 给Drone服务设置资源限制,避免占用过多集群资源:
server:
  # 其他配置...
  deploy:
    resources:
      limits:
        cpus: '0.5'
        memory: 512M
      reservations:
        cpus: '0.25'
        memory: 256M

3. 检查Drone SQLite数据库状态

你挂载了/data/local/drone目录,Drone 0.8默认用SQLite存储任务数据,如果数据库文件锁死或者损坏,会导致任务队列无法正常推进。

排查步骤:

  1. 查看Drone Server日志,寻找数据库相关报错:
docker exec -it $(docker ps -qf "name=drone_server") tail -f /var/log/drone/drone.log

重点关注是否有database is locked或corrupt database这类信息。
2. 检查挂载目录权限,确保Drone容器能读写:

ls -l /data/local/drone/

Drone默认用UID/GID为1000的用户运行,需确保该目录权限对该用户开放。

修复建议:

  • 如果是数据库锁问题:先停止Drone服务,删除/data/local/drone/drone.sqlite-journal文件,再重启服务
  • 如果数据库损坏:用SQLite自带命令检查修复:
sqlite3 /data/local/drone/drone.sqlite "PRAGMA integrity_check;"

若修复无效,只能备份现有数据后删除数据库文件,让Drone重建。

4. 重置Drone任务队列

如果前面的排查都没问题,可能是任务队列出现了异常堆积。

修复操作:

  1. 先在Drone Web UI里手动取消几个pending的任务,观察是否有新任务能启动
  2. 强制重启Drone Server服务,重置队列:
docker service update drone_server --force

建议优先从第一个配置问题入手,这大概率是你遇到的核心原因——毕竟默认并行数刚好是2,完美匹配你前两个任务成功的现象。

内容的提问来源于stack exchange,提问作者Iman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:48:22