
Dronelab是一个包装器和Docker镜像集,旨在让用户能够在Gitlab CI管道中使用Drone CI插件。它通过转换参数和环境变量,使Drone CI插件能够在Gitlab CI环境中正常工作,无需对插件本身进行修改。
适用于需要在Gitlab CI管道中使用Drone CI插件的场景,尤其是当团队已经有现成的Drone插件,但希望在Gitlab CI环境中复用这些插件时。例如:文件下载、云服务部署、消息通知等常见CI/CD任务。
以下以Download插件为例,展示在Gitlab CI中使用Dronelab的基本方式。
在Drone中的基本用法:
yaml# .drone.yml pipeline: download: image: plugins/download source: https://example.com/file.tar.gz
在Gitlab CI中使用Dronelab的对应配置:
yamldownload: image: dronelab/download script: dronelab variables: source: https://example.com/file.tar.gz
说明:
dronelab/[插件名]作为镜像script: dronelab(Gitlab CI要求script为必填项)variables提供插件所需参数1. 作为单个YAML变量提供参数
可将插件参数以YAML字符串形式放在plugin变量中,适用于需要提供对象类型参数的场景:
yamldownload: image: dronelab/download script: dronelab variables: plugin: | source: https://example.com/file.tar.gz
对于需要复杂参数(如对象)的插件(如CloudFormation插件):
Drone中的配置:
yaml# .drone.yml pipeline: deploy: image: robertstettner/drone-cloudformation stackname: my-awesome-stack template: templates/stack.yml params: Version: 123 Environment: staging
Gitlab CI中使用Dronelab的配置:
yamlawscf: image: dronelab/cloudformation script: dronelab variables: stackname: my-awesome-stack template: templates/stack.yml plugin: | params: Version: 123 Environment: staging
2. 作为dronelab命令的参数提供
通过-p选项为dronelab命令提供参数,适用于需要覆盖模板变量的场景:
yaml.awscf-template: &cftemplate image: dronelab/cloudformation variables: template: templates/stack.yml plugin: | params: Version: 123 Environment: staging stackone: <<: *cftemplate script: dronelab -p stackname stackone stacktwo: <<: *cftemplate script: dronelab -p stackname stacktwo
可多次使用-p选项提供多个参数:
yamlstackthree: <<: *cftemplate script: > dronelab -p stackname stacktwo -p region eu-west-1 -p mode createOrUpdate
3. 秘密和直接创建插件变量
Drone插件通常通过环境变量工作,Dronelab会自动将参数转换为PLUGIN_<变量名>格式的环境变量。对于秘密参数,Drone插件通常使用<插件名>_<变量名>格式(无PLUGIN_前缀),可通过Gitlab CI的CI/CD变量配置。
以Matrix插件为例,假设在Gitlab CI/CD设置中配置了MATRIX_PASSWORD秘密变量:
yamlmessage-one: image: dronelab/matrix script: dronelab variables: username: matrix_user homeserver: https://matrix.org roomid: abcdefghijklmnopqrstuvwxyz:matrix.org template: Hello from Gitlab!
也可显式引用秘密变量:
yamlmessage-two: image: dronelab/matrix script: dronelab variables: username: matrix_user password: $MATRIX_PASSWORD homeserver: https://matrix.org roomid: abcdefghijklmnopqrstuvwxyz:matrix.org template: Hello from Gitlab!
当通过多种方式提供相同参数时,优先级从低到高为:
PLUGIN_<变量名>或秘密变量(如<插件名>_<变量名>)variables中的独立变量plugin YAML变量-p选项提供的命令行参数示例:
yamldownload: image: dronelab/download script: dronelab -p source https://example.com/file_version_1.gz # 优先级最高 variables: source: https://example.com/file_version_2.gz # 优先级次之 plugin: | source: https://example.com/file_version_3.gz # 优先级最低
上述配置将使用https://example.com/file_version_1.gz作为source参数。
在Drone中,所有插件共享同一个工作空间,步骤间的文件自动可用。在Gitlab CI中,若全局缓存未启用,需显式配置cache或artifacts以在作业间传递文件。
Dronelab镜像基于Alpine构建,包含dronelab二进制文件。其工作流程如下:
PLUGIN_<变量名>)DRONELAB环境变量指定的上游插件二进制文件注意:并非所有Drone环境变量在Dronelab中都可用,部分变量可能格式不同,但大多数插件仅依赖少量变量,因此兼容性良好。
如需报告bug或提问,请https://github.com/mprasil/dronelab/issues/new%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务