drone使用

2042 字
10 分钟
drone使用

一、drone使用#

drone中文使用手册:Drone 中文文档 | Drone CI 中文文档

1.1 安装drone 服务端#

文档中给出了与各种代码平台进行集成,本篇使用gitlab进行集成

1.1.1 代码平台创建应用#

各个代码平台创建应用的流程都大同小异,这里讲解gitlab的应用创建

步骤:用户设置->应用

  • 名称:对应用设置一个名称,这里设置为drone
  • redirect URL:这里填写的是drone服务端的网址,这里为http://10.22.51.91:8000/login
    • URL格式:<你的Drone服务地址>/login
  • 范围:勾选api即可

image-20260506163043362
image-20260506163043362

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

image-20260506154112384
image-20260506154112384

应用程序idb3a00532377c78e5cc4c3309783db99c0a041486440fee3c616b30fcd0eb7974

密码353ac8ba81c10df27c7656bdf1f214b27b00dd53da85d646fdc51e34858688be

1.1.2 创建共享秘钥#

创建一个共享密钥来验证 RunnerDrone Server 之间的通信。也可以自己填写,确保两端一直即可

Terminal window
[root@localhost /root/.ssh]# openssl rand -hex 16
3a9dcab8c7e72898b78455b24cd81225

1.1.3 下载drone server docker镜像#

Drone Server 使用轻量的 Docker 镜像分发。镜像包含自身运行的所有程序,没有任何外部依赖。使用 latest 标签可以确保你使用的 Drone 始终是最新版本。

Terminal window
docker pull drone/drone:latest

1.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

      必填项,提供你的外部协议方案。此值应设置为 httphttps。如果你配置 ssl 或 acme,此字段默认为 https如果你将 Drone 部署在负载均衡或带有禁止 SSL 的反向代理后面,则此值应设置为 https

    • DRONE_USER_FILTER

      可选项,GitLab 用户或组织列表,使用逗号分隔。注册仅限于此列表中的用户,或者是此列表中组织成员的用户。如果未设置此值,注册将向公众开放。

1.1.5 启动drone server docker 容器#

根据配置选项修改后,启动drone server docker容器

Terminal window
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:latest

1.1.5.1 参数解释#

Terminal window
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的应用界面,可以看到已经授权的应用

image-20260506170644217
image-20260506170644217

1.2 安装drone runner#

Drone Runner 会主动轮询服务器以获取要执行的流水线任务。针对不同的用例和运行时环境,Drone 提供了不同类型的 Runner。你可以选择其中一种或多种不同类型的 Runner 进行组合,安装一个或多个 Runner 来运行你的流水线。

这里使用docker runner

1.2.1 拉取镜像#

安装 Docker 并拉取公共镜像:

Terminal window
docker pull drone/drone-runner-docker:1

1.2.2 配置#

Docker Runner 是使用环境变量配置的。本文引用了以下配置选项。有关配置选项的完整列表,请参阅 配置

    • DRONE_RPC_HOST

      提供 Drone Server 的主机名(和可选端口)。Runner 连接到指定主机地址的 Server 以接收 Pipeline 以执行。

    • DRONE_RPC_PROTO

      提供用于连接 Drone Server 的协议。该值必须是 httphttps

  • DRONE_RPC_SECRET :提供用于向 Drone Server 进行身份验证的共享密钥。这必须与你的 Drone Server 配置中定义的 Secret 匹配。

1.2.3 安装启动容器#

修改配置后,进行安装启动

Terminal window
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:1

1.2.3.1 参数解释#

Terminal window
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 建立连接。

Terminal window
[root@localhost /root]# docker logs drone-runner
time="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=docker

1.3 快速使用#

Drone 支持针对不同运行时环境的不同类型的流水线,这里使用docker流水线

之前访问服务端时已经认证过来,那么现在就不用认证了

现在,找到项目进入后

image-20260506170524871
image-20260506170524871

单击激活按钮会在你的存储库中添加一个 Webhook,以便在你每次推送代码时通知 Drone。

请注意,你必须拥有存储库的管理员权限才能启用。

回到gitlab项目的webhook界面,可看到自动添加了一个webhook

image-20260506170947744
image-20260506170947744

1.3.1 配置流水线#

通过在 git 存储库的根目录中创建一个 .drone.yml 文件来配置流水线。在这个文件中,定义了每次收到 webhook 时执行的一系列步骤

Terminal window
kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world

以下是此示例中使用变量的概览:

  • kind

    kind 属性定义了对象的种类。此示例定义了一个流水线对象。其他类型的对象是 secretsignature 对象。

  • type

    type 属性定义流水线的类型。此示例定义了一个 Docker 流水线,其中每个流水线步骤都在 Docker 容器内执行。Drone 支持 不同类型 的流水线执行环境。

  • name

    name 属性定义了流水线的名称。你可以为你的项目定义一个或多个流水线。

  • steps:Step 部分定义了一系列串行执行的流水线步骤。如果流水线中的任何步骤失败,流水线将立即退出。

    • name

      name 属性定义流水线步骤的名称。

    • image

      image 属性定义了一个容器镜像,shell 命令在其中执行。你可以使用来自任何容器注册表(Registry,包括私有容器注册表)的流水线中的任何镜像。

    • commands

      commands 属性将在容器内执行的 shell 命令列表定义为入口点。如果任何命令返回非零退出代码,则流水线步骤将失败。

更多流水线文档:Overview | Drone CI 中文文档

1.3.2 具体示例#

在gitlab中创建.drone.yml,添加如下内容

Terminal window
kind: pipeline
type: docker
name: greeting
steps:
- name: en
image: alpine
commands:
- echo hello world
- name: fr
image: alpine
commands:
- echo bonjour monde

提交后将自动触发构建

回到drone界面,可以看到构建已经触发

image-20260506171838672
image-20260506171838672

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

image-20260506171944504
image-20260506171944504

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

drone使用
https://2233941.xyz/posts/drone使用/
作者
lumifly
发布于
2026-07-19
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
lumifly
不逐世间万丈星河,自守一隅细碎明光
✨ 今日一言
" 加载中... "
——
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
本年还剩 -- --%
本月还剩 -- --%
本周还剩 -- --%
距离--
--
--
天气预报
站点统计
文章
24
分类
1
标签
15
总字数
136,852
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录