drone使用
一、drone使用
drone中文使用手册:Drone 中文文档 | Drone CI 中文文档
1.1 安装drone 服务端
文档中给出了与各种代码平台进行集成,本篇使用gitlab进行集成
1.1.1 代码平台创建应用
各个代码平台创建应用的流程都大同小异,这里讲解gitlab的应用创建
步骤:用户设置->应用
名称:对应用设置一个名称,这里设置为droneredirect URL:这里填写的是drone服务端的网址,这里为http://10.22.51.91:8000/loginURL格式:<你的Drone服务地址>/login
范围:勾选api即可

应用创建成功后会生成如下页面,保存好对应的程序id和密码

应用程序id:b3a00532377c78e5cc4c3309783db99c0a041486440fee3c616b30fcd0eb7974
密码:353ac8ba81c10df27c7656bdf1f214b27b00dd53da85d646fdc51e34858688be
1.1.2 创建共享秘钥
创建一个共享密钥来验证 Runner 和Drone Server 之间的通信。也可以自己填写,确保两端一直即可
[root@localhost /root/.ssh]# openssl rand -hex 163a9dcab8c7e72898b78455b24cd812251.1.3 下载drone server docker镜像
Drone Server 使用轻量的 Docker 镜像分发。镜像包含自身运行的所有程序,没有任何外部依赖。使用 latest 标签可以确保你使用的 Drone 始终是最新版本。
docker pull drone/drone:latest1.1.4 配置选项
Drone Server 使用环境变量进行配置。本文引用了配置选项的子集,具体定义如下。有关配置选项的完整列表,请参阅 配置。
-
-
DRONE_GITLAB_CLIENT_ID
必填项,提供你在上一步创建应用中生成的
应用程序id。
-
-
-
DRONE_GITLAB_CLIENT_SECRET
必填项,提供你在上一步中创建应用生成的
密码。
-
-
-
DRONE_GITLAB_SERVER
可选项,提供你的 GitLab 服务器 url。默认值为
https://gitlab.com,表示使用 gitlab.com 服务。
-
-
-
DRONE_GIT_ALWAYS_AUTH
可选项,配置值为布尔值,用于配置 Drone 在克隆公共存储库时是否进行身份验证。该选项仅应在使用启用私有模式的自托管 GitLab 时启用。
-
-
-
DRONE_RPC_SECRET
必填项,提供在上一步中生成的
共享密钥。这用于验证 Server 和 Runner 之间的 rpc 连接。必须为 Server 和 Runner 提供相同的秘密值。
-
-
-
DRONE_SERVER_HOST
必填项,提供你的外部主机名或 IP 地址,例如
drone.domain.com。如果使用 IP 地址,你可以包括端口。注意:
需要与redirect URL一致,但需要去掉login
-
-
-
DRONE_SERVER_PROTO
必填项,提供你的外部协议方案。此值应设置为
http或https。如果你配置 ssl 或 acme,此字段默认为https。如果你将 Drone 部署在负载均衡或带有禁止 SSL 的反向代理后面,则此值应设置为https。
-
-
-
DRONE_USER_FILTER
可选项,GitLab 用户或组织列表,使用逗号分隔。注册仅限于此列表中的用户,或者是此列表中组织成员的用户。如果未设置此值,注册将向公众开放。
-
1.1.5 启动drone server docker 容器
根据配置选项修改后,启动drone server docker容器
docker run \ --volume=/var/lib/drone:/data \ --env=DRONE_GITLAB_SERVER=http://10.22.51.72 \ --env=DRONE_GITLAB_CLIENT_ID=b3a00532377c78e5cc4c3309783db99c0a041486440fee3c616b30fcd0eb7974 \ --env=DRONE_GITLAB_CLIENT_SECRET=353ac8ba81c10df27c7656bdf1f214b27b00dd53da85d646fdc51e34858688be \ --env=DRONE_RPC_SECRET=3a9dcab8c7e72898b78455b24cd81225 \ --env=DRONE_SERVER_HOST=10.22.51.91:8000 \ --env=DRONE_SERVER_PROTO=http \ --publish=8000:80 \ --restart=always \ --detach=true \ --name=drone \ drone/drone:latest1.1.5.1 参数解释
docker run \ --volume=/var/lib/drone:/data \ # 数据持久化 --env=DRONE_GITLAB_SERVER=http://10.22.51.72 \ # GitLab 地址 --env=DRONE_GITLAB_CLIENT_ID=b3a00532377c78e5cc4c3309783db99c0a041486440fee3c616b30fcd0eb7974 \ # GitLab 应用ID --env=DRONE_GITLAB_CLIENT_SECRET=353ac8ba81c10df27c7656bdf1f214b27b00dd53da85d646fdc51e34858688be \ # GitLab 应用密码 --env=DRONE_RPC_SECRET=3a9dcab8c7e72898b78455b24cd81225 \ # Drone 内部通信密钥,可以生成或自己填写 --env=DRONE_SERVER_HOST=10.22.51.91:8000 \ # Drone 访问域名 --env=DRONE_SERVER_PROTO=http \ # Drone 使用 http --publish=8000:80 \ # 端口映射 --restart=always \ # 开机/崩溃自动重启 --detach=true \ # 后台运行 --name=drone \ # 容器名字叫 drone drone/drone:latest # 使用 drone 官方镜像最新版本1.1.6 访问drone server 服务端
访问10.22.51.91:8000,会来到drone的网页端,如果尚未通过身份验证,Drone 会将你重定向到 Gitlab 进行授权
授权后,将被重定向回你的 Drone Web 管理界面。如果这是你第一次使用 Drone,你的 Web 管理界面将在几秒钟内为空,而 Drone 会将你的存储库列表与 Gitlab 同步。
授权成功后可以回到gitlab的应用界面,可以看到已经授权的应用

1.2 安装drone runner
Drone Runner 会主动轮询服务器以获取要执行的流水线任务。针对不同的用例和运行时环境,Drone 提供了不同类型的 Runner。你可以选择其中一种或多种不同类型的 Runner 进行组合,安装一个或多个 Runner 来运行你的流水线。
这里使用docker runner
1.2.1 拉取镜像
安装 Docker 并拉取公共镜像:
docker pull drone/drone-runner-docker:11.2.2 配置
Docker Runner 是使用环境变量配置的。本文引用了以下配置选项。有关配置选项的完整列表,请参阅 配置。
-
-
DRONE_RPC_HOST
提供
Drone Server的主机名(和可选端口)。Runner 连接到指定主机地址的 Server 以接收 Pipeline 以执行。
-
-
-
DRONE_RPC_PROTO
提供用于连接
Drone Server的协议。该值必须是http或https。
-
-
DRONE_RPC_SECRET :提供用于向
Drone Server进行身份验证的共享密钥。这必须与你的 Drone Server 配置中定义的 Secret 匹配。
1.2.3 安装启动容器
修改配置后,进行安装启动
docker run --detach \ --volume=/var/run/docker.sock:/var/run/docker.sock \ --env=DRONE_RPC_PROTO=http \ --env=DRONE_RPC_HOST=10.22.51.91:8000 \ --env=DRONE_RPC_SECRET=3a9dcab8c7e72898b78455b24cd81225 \ --env=DRONE_RUNNER_CAPACITY=2 \ --env=DRONE_RUNNER_NAME=local-runner \ --restart=always \ --name=drone-runner \ drone/drone-runner-docker:11.2.3.1 参数解释
docker run --detach \ # 后台运行容器 --volume=/var/run/docker.sock:/var/run/docker.sock \ # 让容器能调用宿主机Docker(必选) --env=DRONE_RPC_PROTO=http \ # 连接Drone Server用的协议 --env=DRONE_RPC_HOST=10.22.51.91:8000 \ # Drone Server的地址 --env=DRONE_RPC_SECRET=3a9dcab8c7e72898b78455b24cd81225 \ # 通信密钥(必须和Server一致) --env=DRONE_RUNNER_CAPACITY=2 \ # 同时跑几个构建任务 --env=DRONE_RUNNER_NAME=local-runner \ # Runner名称(随便写) --restart=always \ # 开机/崩溃自动重启 --name=drone-runner \ # 容器名字 drone/drone-runner-docker:1 # Docker类型Runner镜像1.2.4 验证安装结果
使用 docker logs 命令查看日志并验证 Runner 是否成功与 Drone Server 建立连接。
[root@localhost /root]# docker logs drone-runnertime="2026-05-06T08:10:41Z" level=info msg="starting the server" addr=":3000"time="2026-05-06T08:10:41Z" level=info msg="successfully pinged the remote server"time="2026-05-06T08:10:41Z" level=info msg="polling the remote server" arch=amd64 capacity=2 endpoint="http://10.22.51.91:8000" kind=pipeline os=linux type=docker1.3 快速使用
Drone 支持针对不同运行时环境的不同类型的流水线,这里使用docker流水线
之前访问服务端时已经认证过来,那么现在就不用认证了
现在,找到项目进入后

单击激活按钮会在你的存储库中添加一个 Webhook,以便在你每次推送代码时通知 Drone。
请注意,你必须拥有存储库的管理员权限才能启用。
回到gitlab项目的webhook界面,可看到自动添加了一个webhook

1.3.1 配置流水线
通过在 git 存储库的根目录中创建一个 .drone.yml 文件来配置流水线。在这个文件中,定义了每次收到 webhook 时执行的一系列步骤
kind: pipelinetype: dockername: default
steps:- name: greeting image: alpine commands: - echo hello - echo world以下是此示例中使用变量的概览:
-
kindkind 属性定义了对象的种类。此示例定义了一个流水线对象。其他类型的对象是 secret 和 signature 对象。
-
typetype 属性定义流水线的类型。此示例定义了一个 Docker 流水线,其中每个流水线步骤都在 Docker 容器内执行。Drone 支持 不同类型 的流水线执行环境。
-
namename 属性定义了流水线的名称。你可以为你的项目定义一个或多个流水线。
-
steps:Step 部分定义了一系列串行执行的流水线步骤。如果流水线中的任何步骤失败,流水线将立即退出。-
namename 属性定义流水线步骤的名称。
-
imageimage 属性定义了一个容器镜像,shell 命令在其中执行。你可以使用来自任何容器注册表(Registry,包括私有容器注册表)的流水线中的任何镜像。
-
commandscommands 属性将在容器内执行的 shell 命令列表定义为入口点。如果任何命令返回非零退出代码,则流水线步骤将失败。
-
更多流水线文档:Overview | Drone CI 中文文档
1.3.2 具体示例
在gitlab中创建.drone.yml,添加如下内容
kind: pipelinetype: dockername: greeting
steps:- name: en image: alpine commands: - echo hello world
- name: fr image: alpine commands: - echo bonjour monde提交后将自动触发构建
回到drone界面,可以看到构建已经触发

点击franches,可以看到具体的构建流程

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
赣公网安备36072602000131号