AYNUR / RELEASE MANAGEMENT
aynur-deploy
多项目发布,让每次切换都有检查与退路。
一个独立的 Gitee Tag 发布服务。按项目校验仓库与标签,串行准备版本、切换发布目录,并在健康检查失败时恢复已有的上一版本。进程重载由项目配置显式连接。
- 项目类型
- 独立 Rust HTTP 服务 + CLI
- 触发入口
- Gitee Tag Push WebHook
- 状态 / 配置
- SQLite · 项目 TOML
01 / ARCHITECTURE
把发布当作一次可追踪的版本切换。
Gitee 事件经校验后持久化进入 FIFO 串行队列。部署服务准备版本目录,再切换 current 链接、执行重载和健康检查。
一个服务,多个项目
每个项目有独立 TOML、仓库、标签规则、发布路径和健康检查。SQLite 保存部署记录,Git mirror / worktree 用于取出标签所指的代码。
激活与回滚
迁移命令在切换前执行;currentPath 通过符号链接原子切换。若有可恢复的上一版本,健康失败会回滚链接并执行重载。数据库迁移不会随文件回滚自动撤销。
02 / QUICKSTART
为第一个项目建立发布入口。
默认服务监听 127.0.0.1:9091,由 HTTPS 反向代理对外提供 WebHook。
初始化服务
在开发机或构建机安装。目标 Linux 服务器推荐安装匹配架构的预编译二进制,再初始化服务并添加项目。
cargo install aynur-deploy --locked
# 以下在部署服务器执行
sudo aynur-deploy init
sudo aynur-deploy add my-site配置项目与启动
编辑 /etc/aynur-deploy/projects/my-site.toml 中的仓库、路径和健康检查,保存后检查配置。serve 是常驻服务,可交给 Aynur 或 systemd 守护。
sudo aynur-deploy check
sudo aynur-deploy serve连接 Gitee Tag Push
在仓库 WebHook 设置中勾选 Tag Push,Password 使用该项目生成的 webhookToken。发布前先将提交推送到仓库,再推送符合 tagPattern 的标签。
# 示例标签需使用你本次发布的实际时间
git tag deploy-20261030-120000
git push origin deploy-20261030-120000WebHook URL:https://deploy.example.com/v1/hooks/gitee/my-site。将示例域名换成你的发布服务域名;所有项目共用一个服务入口,通过 projectId 区分。
03 / CONFIGURATION
项目配置决定怎么发布。
以下为静态站点结构示例。仓库信息、域名与目录需按实际项目填写,项目配置文件权限保持 0600。
选择发布目标
static:发布仓库中已经构建好的静态产物。binary:运行仓库中已有的二进制产物。rust:在服务器执行 Cargo 构建,并收集指定二进制和资源。
小规格服务器适合在本地或 CI 完成构建,减少线上编译压力。当前 binary 模式从 Git 仓库读取产物;本地压缩包经 SSH 上传属于额外发布流程,不能直接当作现有 WebHook 能力使用。
与 Aynur 组合
在二进制项目的 [reload] 中配置固定参数命令:
commands = [["aynur", "reload", "api", "--update-env"]]
该应用应事先由 Aynur 注册并指向项目 current 下的二进制,且两者使用同一运行用户和状态目录。
projectId = "my-site"
currentPath = "/var/www/my-site/current"
repositoryFullName = "your-team/my-site"
repositoryUrl = "git@gitee.com:your-team/my-site.git"
webhookToken = "替换为 add 生成的项目密码"
tagPattern = "^deploy-[0-9]{8}-[0-9]{6}$"
retainReleases = 3
[healthCheck]
url = "https://site.example.com/"
attempts = 5
intervalMs = 2000
timeoutMs = 5000
[deployment]
type = "static"
entryFile = "index.html"04 / OPERATIONS
用状态和明确的操作管理发布。
项目名是脚本中的稳定标识。list 显示的序号随项目集合变化。
aynur-deploy list
aynur-deploy status my-site
# 停止接收新发布;已有任务继续完成
aynur-deploy stop my-site
# 恢复接收与队列处理
aynur-deploy start my-site服务健康与项目健康
GET /healthz 检查发布服务与 SQLite。项目的健康检查单独使用 TOML 中的 healthCheck.url。
若项目因失败进入 blocked,先处理根因,再执行 aynur-deploy unblock my-site。需要回滚到指定版本时使用 aynur-deploy rollback my-site <commitSha>。
05 / SOURCE & DOCS
配置契约与发布实现。
web.rs 校验事件,db.rs 记录队列,deploy.rs 完成版本准备、激活与回滚。
每个工具各有职责,按你的项目需要组合。
浏览全部相关工具