agilelabs-fx-docs main reference/drone-ci-cd.md

Drone 配置参考索引

本页现在承担“速查索引”的职责。正式规范、runner 选择和组织方式请先阅读 Drone CI 配置专题。这里保留原路径,方便历史链接继续可用,同时提供字段速查、runner 对照表、触发写法和示例页导航。

快速入口

.drone.yml 核心字段速查

字段 作用 说明
kind 资源类型 常用值是 pipeline
type runner 类型 当前团队标准是 exec
name pipeline 名称 同仓库可存在多条 pipeline
platform 运行平台 必须写清 osarch
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:latesthub.feinian.net/library/node:25-alpinehub.feinian.net/feinian/node:20-alpine 这是 CI 构建环境,不是最终应用运行镜像。
后端发布镜像 .drone.ymldotnet publish 步骤 hub.feinian.net/dotnet/sdk:10.0hub.feinian.net/dotnet/sdk:8.0 这是 SDK 镜像,不应该作为 ASP.NET 应用运行时镜像。
后端运行时镜像 WebAPI、WebHost、JobHost 的 Dockerfile hub.feinian.net/build/dotnet/aspnet:10.0hub.feinian.net/dotnet/aspnet:10.0hub.feinian.net/dotnet/aspnet:8.0 这是容器启动后的运行环境,不负责源码 publish。
镜像 tag 与部署目标 package-imagedeploy 步骤 version.txtdocker build -t ...:$IMAGE_VERSIONkubectl set image 部署应消费已经推送的镜像 tag,不再重新构建源码。

配置入口速查:

目标 优先检查
前端依赖和构建命令 前端 package.jsonpnpm-lock.yaml、可选 pnpm-workspace.yaml、前端构建步骤
前端产物进入宿主 sync-clientapp 步骤、scripts/ci/*sync*ClientApp 目标目录
后端 publish 输出 dotnet publish 命令、输出目录、SDK 镜像 tag
应用容器运行环境 项目 Dockerfile 的 FROMWORKDIREXPOSEENVENTRYPOINT
多后端制品版本一致 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

文档内示例页导航

相关页面