Drone 配置参考索引
本页现在承担“速查索引”的职责。正式规范、runner 选择和组织方式请先阅读 Drone CI 配置专题。这里保留原路径,方便历史链接继续可用,同时提供字段速查、runner 对照表、触发写法和示例页导航。
快速入口
- 正式专题:Drone CI 配置专题
- Windows / Mac 示例:Windows / Mac Runner 的 Drone 示例
- Linux 多应用示例:Linux amd64 WebAPI + 多 ClientApp 的 Drone 示例
.drone.yml 核心字段速查
| 字段 | 作用 | 说明 |
|---|---|---|
kind |
资源类型 | 常用值是 pipeline |
type |
runner 类型 | 当前团队标准是 exec |
name |
pipeline 名称 | 同仓库可存在多条 pipeline |
platform |
运行平台 | 必须写清 os 与 arch |
node |
runner 选择 | 通过 runner_name 绑定固定机器 |
trigger |
触发条件 | 约束分支、tag、事件 |
steps |
执行步骤 | 每一步是一组明确边界的命令 |
depends_on |
步骤依赖 | 用于控制并行与汇总顺序 |
environment |
环境变量 | 适合放缓存路径、镜像标签、脚本参数 |
最小骨架:
---
kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
node:
runner_name: cn-build-02
trigger:
event:
- push
branch:
- main
steps:
- name: build
commands:
- bash scripts/ci/build.sh
三个固定 runner 对照表
| runner | platform.os |
platform.arch |
node.runner_name |
适合场景 |
|---|---|---|---|---|
| Windows 64 | windows |
amd64 |
win-build |
Electron Windows 包、PowerShell 构建 |
| Mac ARM | darwin |
arm64 |
mac-arm-build |
macOS 应用、Apple Silicon 构建 |
| Linux amd64 | linux |
amd64 |
cn-build-02 |
WebAPI、前后端混合仓库、Docker/K8s |
trigger 常用写法
只监听主干 push:
trigger:
event:
- push
branch:
- main
监听主干和版本 tag:
trigger:
event:
- push
- tag
ref:
- refs/heads/main
- refs/tags/v*
要点:
- 分支触发优先使用
branch。 - 分支与 tag 混合时,优先用
ref精确表达。 - 多平台 pipeline 共存时,触发条件要配合命名与发布规则一起设计,不要默认全部同时触发。
depends_on 与步骤拆分速查
推荐拆分:
- 环境准备
- 依赖恢复
- 编译 / 测试
- 产物汇总
- 打包 / 发布
- 部署
速查规则:
- 能并行的前端构建不要串成单链。
- 汇总步骤必须等待所有需要的构建结果。
- 会写同一目录的步骤不要并行。
- 镜像和部署步骤只消费最终产物,不再重新编译源码。
- Docker 发布项目应把发布版本落盘到最终发布目录中的
version.txt,并随镜像一起发布,供运行时/fwdiag/v读取。
构建镜像与运行时镜像速查
CI 里常见的“镜像”至少分成三类,排查时先确认自己要改的是哪一类:
| 要改什么 | 看哪里 | 常见示例 | 不要混淆 |
|---|---|---|---|
| 前端构建镜像 | .drone.yml 的前端构建步骤 |
hub.feinian.net/build/node:latest、hub.feinian.net/library/node:25-alpine、hub.feinian.net/feinian/node:20-alpine |
这是 CI 构建环境,不是最终应用运行镜像。 |
| 后端发布镜像 | .drone.yml 的 dotnet publish 步骤 |
hub.feinian.net/dotnet/sdk:10.0、hub.feinian.net/dotnet/sdk:8.0 |
这是 SDK 镜像,不应该作为 ASP.NET 应用运行时镜像。 |
| 后端运行时镜像 | WebAPI、WebHost、JobHost 的 Dockerfile | hub.feinian.net/build/dotnet/aspnet:10.0、hub.feinian.net/dotnet/aspnet:10.0、hub.feinian.net/dotnet/aspnet:8.0 |
这是容器启动后的运行环境,不负责源码 publish。 |
| 镜像 tag 与部署目标 | package-image、deploy 步骤 |
version.txt、docker build -t ...:$IMAGE_VERSION、kubectl set image |
部署应消费已经推送的镜像 tag,不再重新构建源码。 |
配置入口速查:
| 目标 | 优先检查 |
|---|---|
| 前端依赖和构建命令 | 前端 package.json、pnpm-lock.yaml、可选 pnpm-workspace.yaml、前端构建步骤 |
| 前端产物进入宿主 | sync-clientapp 步骤、scripts/ci/*sync*、ClientApp 目标目录 |
| 后端 publish 输出 | dotnet publish 命令、输出目录、SDK 镜像 tag |
| 应用容器运行环境 | 项目 Dockerfile 的 FROM、WORKDIR、EXPOSE、ENV、ENTRYPOINT |
| 多后端制品版本一致 | WebAPI、JobHost 等 publish 目录中的 version.txt 是否来自同一版本来源 |
典型写法:
steps:
- name: build-a
commands:
- bash scripts/ci/build-a.sh
- name: build-b
commands:
- bash scripts/ci/build-b.sh
- name: sync-assets
depends_on:
- build-a
- build-b
commands:
- bash scripts/ci/sync-assets.sh