Drone CI集成Gitee触发构建报错:json无法解析数组为gitee.content类型
解决Drone关联Gitee触发构建报错的方法
核心原因
这个错误是Drone对Gitee API的适配逻辑解析返回数据时类型不匹配——代码期望解析单个gitee.content对象,但实际收到了数组,大概率是Drone版本与Gitee API版本不兼容导致的。
具体解决步骤
升级Drone到最新稳定版
旧版Drone对Gitee的接口适配存在缺陷,Gitee后续调整了部分接口的返回格式,新版本已修复这类问题。停止旧容器并重新部署最新版:# 停止并删除旧容器 docker stop drone docker rm drone # 拉取最新镜像启动(替换为你的实际配置参数) docker run -d \ --volume=/var/lib/drone:/data \ --env=DRONE_GITEE_CLIENT_ID=你的Gitee客户端ID \ --env=DRONE_GITEE_CLIENT_SECRET=你的Gitee客户端密钥 \ --env=DRONE_RPC_SECRET=你的RPC密钥 \ --env=DRONE_SERVER_HOST=你的Drone访问域名 \ --env=DRONE_SERVER_PROTO=https \ --publish=80:80 \ --publish=443:443 \ --restart=always \ --name=drone \ drone/drone:latest校验Gitee OAuth应用配置
确认Gitee OAuth应用的回调地址与Drone配置完全一致:比如Drone访问地址是https://drone.yourdomain.com,回调地址必须设为https://drone.yourdomain.com/login,地址不匹配可能导致授权后返回数据格式异常。清理Drone仓库缓存并重新同步
进入Drone数据目录(默认/var/lib/drone),删除仓库缓存后重启容器,再重新激活同步目标仓库:cd /var/lib/drone rm -rf repos docker restart drone确保Runner与Server版本一致
如果使用了独立的Drone runner,必须保证runner版本与Drone server版本完全相同,版本不匹配会引发通信数据解析错误。
验证与排查
完成操作后重新触发构建,若仍报错,查看Drone容器日志获取更详细信息:
docker logs drone
内容的提问来源于stack exchange,提问作者lil box
相关产品推荐
相关产品推荐

