如何使用Drone OSS执行构建任务?构建停滞问题求助
解决Drone OSS构建卡在Loading的问题及正确使用方式
Drone OSS和企业版核心差异在于内置单节点执行器,无需额外runners,所有构建直接在Drone服务器节点本地执行,以下是具体配置和排查步骤:
1. 确认服务器基础环境配置
- 必须在Drone服务器节点安装Docker,且Drone容器启动时必须挂载Docker socket:
未挂载socket会导致Drone无法创建流水线步骤容器,直接卡在Loading状态。docker run ... -v /var/run/docker.sock:/var/run/docker.sock ... drone/drone:oss - 确保Drone进程对Docker socket有读写权限,若出现权限错误,可临时调整socket权限(
chmod 666 /var/run/docker.sock)或配置容器以root用户运行。
2. 使用OSS兼容的流水线语法
Drone OSS仅支持基础单阶段Docker类型流水线,不支持企业版的多阶段构建、矩阵任务、服务依赖等高级特性,示例.drone.yml如下:
kind: pipeline type: docker # OSS仅支持docker类型,为必填项 name: default steps: - name: hello-world image: alpine:3.18 # 使用公开可拉取的镜像 commands: - echo "Drone OSS build executed successfully" - apk add --no-cache curl - curl --version
注意:不要添加services、matrix、stages等企业版专属字段,否则流水线会因解析失败卡在Loading。
3. 验证Drone服务器启动参数
启动Drone时需设置以下适配OSS特性的关键参数:
DRONE_AGENTS_ENABLED=false:禁用外部runner支持(OSS原生不兼容)DRONE_RUNNER_CAPACITY=2:设置并发构建数(默认1,可按需调整)- 确保
DRONE_SERVER_HOST和DRONE_SERVER_PROTO配置正确,否则流水线步骤无法回调服务器获取任务。
4. 排查日志定位问题
查看Drone容器日志:
docker logs <your-drone-container-id>
常见错误及解决:
permission denied while trying to connect to the Docker daemon socket:Docker socket挂载或权限问题,重新挂载socket并调整权限。pull access denied for <image-name>:镜像拉取失败,检查镜像是否公开,或在Drone系统设置中配置私有镜像拉取密钥。pipeline parse error: unknown field "services":使用了OSS不支持的字段,修改.drone.yml移除相关内容。
内容的提问来源于stack exchange,提问作者chkhd
相关产品推荐
相关产品推荐

