当前位置: 首页 > news >正文

drone发版工具

Drone 本身并不是“一键发版”的独立工具,而是一套轻量级、基于 Docker 的 CI/CD 引擎。

把“发版”这件事交给 Drone 的做法,就是在仓库根目录放一个 `.drone.yml`,把“编译-打包-推送-部署”全部写成 Pipeline;以后只要 `git push` 或打 Tag,Drone 会自动跑完整个流程,相当于“发版工具”。

下面给出一个最小可运行的 Go 项目发版模板,以及常见发版策略,你直接抄过去改镜像名、主机地址即可上线。

---

1. 安装(一次性)

```bash
# 服务器任意目录
git clone https://gitee.com/drone/drone-compose.git # 示例仓库
cd drone-compose
docker-compose up -d # 默认给你拉起 drone-server + drone-runner
```

内存占用 300-600 MB,4C4G 云主机足够 。

---

2. 在项目里放 `.drone.yml`(Go 二进制发版示例)

```yaml
kind: pipeline
type: docker
name: release

# 只在打 Tag 时触发(v1.2.3 这种)
trigger:
event:
- tag

steps:
- name: build
image: golang:1.22-alpine
commands:
- go mod tidy
- CGO_ENABLED=0 go build -ldflags "-s -w" -o app .

- name: tarball
image: alpine
commands:
- tar czf app-${DRONE_TAG}.tar.gz app

- name: publish-binary
image: plugins/github-release # 官方插件,自动把 tarball 上传到 GitHub Release
settings:
files: app-*.tar.gz
api_key:
from_secret: gh_token # 在 Drone UI 里提前填好

- name: docker-build
image: plugins/docker
settings:
repo: your-harbor.com/library/app
tags: ${DRONE_TAG},latest
registry: your-harbor.com
username:
from_secret: harbor_user
password:
from_secret: harbor_pwd

- name: deploy-prod
image: appleboy/drone-ssh # 远程 SSH 插件
settings:
host: 10.0.0.21
user: deploy
key:
from_secret: ssh_key
script:
- docker pull your-harbor.com/library/app:${DRONE_TAG}
- docker stop app || true
- docker rm app || true
- docker run -d --name app -p 8080:8080 your-harbor.com/library/app:${DRONE_TAG}
```

说明
- 第 1-2 步:编译 & 打压缩包
- 第 3 步:自动在 GitHub/Gitee 生成 Release 并上传二进制
- 第 4 步:把镜像推到私有 Harbor
- 第 5 步:SSH 到生产机拉镜像、停旧容器、起新容器——完成“发版”

---

3. 多环境进阶:Promote 手动提升

Drone 还支持“先构建→后人工提升”模式,避免 Tag 一推就直接上生产。

```bash
# 把第 42 号构建提升到 staging
drone build promote your/app 42 staging

# 验证无误后再升到 production
drone build promote your/app 42 production
```

在 `.drone.yml` 里用 `when:` 区分环境即可 。

---

4. 小团队落地经验(引用社区实践)

- 4C4G 云主机就能跑 Drone + Harbor,比 Jenkins 省 70 % 资源
- 配置全部写在 `.drone.yml`,仓库即文档,成员换项目 5 分钟就能看懂
- 镜像 tag 统一用 `${DRONE_TAG}` 或 `${DRONE_COMMIT:0:7}`,方便回滚
- 把 `secrets`(仓库令牌、SSH 私钥、镜像仓库密码)全部收进 Drone UI,不走明文

---

一句话总结

Drone 没有“发版”按钮,但只要写好 `.drone.yml`,打 Tag = 发版,后面编译、打包、推镜像、部署、通知全自动完成;再配合 `drone build promote` 还能实现“灰度→生产”两级发布,整条链路就是一套极简而完整的“Drone 发版工具”。

http://www.jsqmd.com/news/183245/

相关文章:

  • Java Web 开发者必修课:揭秘“热加载”的魔法与边界
  • 【开题答辩全过程】以 基于微信小程序的二手物品交易平台为例,包含答辩的问题和答案
  • 挖掘AI原生应用在业务流程增强中的价值
  • 来聊聊用西门子1200玩转液体混合控制的骚操作。这个项目最带劲的地方在于用仿真系统就能模拟真实产线的全套流程,省了买设备的钱还能随便折腾
  • MongoDB保存非结构化元数据如动作参数配置
  • 【开题答辩全过程】以 高校日常日常教学管理系统为例,包含答辩的问题和答案
  • 【开题答辩全过程】以 基于uni-app框架的智慧迎新系统为例,包含答辩的问题和答案
  • SEO优化标题这样写:吸引更多开发者关注Sonic数字人
  • 边缘计算环境中基于启发式算法的深度神经网络卸载策略附Matlab代码
  • 政务数字人落地实践:基于Sonic模型的智能播报系统构建
  • 再见 Pip!Python 包管理神器 uv 上手指南:用 Rust 重写的安装速度快到离谱
  • 【开题答辩全过程】以 基于Python的学生选课系统设计与实现为例,包含答辩的问题和答案
  • CH340/CP2102/FT232常见芯片驱动下载对照表及识别方法
  • 本地知识库:数据安全时代的智能文件管家
  • 不同的多电平变换器拓扑在电池储能应用中的应用附Simulink仿真
  • 利用Jupyter快速启动VoxCPM-1.5-TTS-WEB-UI详解
  • MyBatis-Plus 分页插件失效?深扒 PageHelper 与 MP 冲突的底层源码,教你避开“假分页”陷阱
  • 【开题答辩全过程】以 基于python的阳泉房产推荐系统为例,包含答辩的问题和答案
  • DeepSeek 部署报错 “Connection refused“?Ollama 本地服务连接失败的 3 种终极解决方案
  • 采用SRF算法的分流有源滤波器【并联有源滤波器的仿真电路可降低谐波和无功功率】附Simulink仿真
  • 实用指南:AI RAG 向量数据库深度对比
  • 168_尚硅谷_二维数组介绍和入门
  • Sonic数字人四川话模拟可行性分析:地域化应用新方向
  • Node.js console.time轻松测函数耗时
  • VoxCPM-1.5-TTS-WEB-UI语音合成支持服务注册与发现机制
  • Mathtype授权一台机?我们的服务支持多实例运行
  • HTML表单提交数据?现在用API调用生成语音
  • 导师严选10个AI论文写作软件,助本科生轻松搞定毕业论文!
  • 军事模拟系统:指挥官训练中使用VoxCPM-1.5-TTS-WEB-UI生成敌情通报
  • 达姆施塔特工业大学发现:专家混合模型AI安全机制存在脆弱性