POST /api/v1/webhook/{platform}?repo_name={repoName}
Header: X-Reposync-Token: <配置了 webhook.token 时必传>
端点仅解析 payload 并入队,毫秒级返回;git 操作延迟 5 秒执行。
双向同步配置
POST /cerobot/sync/pair # 一键创建双向配置(含首次同步)
GET /cerobot/sync/{repoName}/branch/status # 分支同步状态
GET /cerobot/sync/repo/{repoName}/overview # 仓库同步概览
GET /cerobot/sync/repo/{repoName}/webhook/url # 获取回调地址(手动配置 Hook 用)
POST /cerobot/sync/repo/{repoName}/webhook/register # 手动注册 Webhook
手动同步
POST /cerobot/sync/repo/{repoName}/sync # 整仓同步
POST /cerobot/sync/{repoName}/branch/{branchName}/sync # 分支同步
repo-sync(reposync-java)
跨平台仓库同步服务 —— 基于 Spring Boot 3 的 Java 重写版本,提供 GitLink 与外部平台(GitHub / Gitee / GitLab / Gitcode / osredm)之间的仓库自动同步能力。
原架构中同步职责拆分在 forgeplus(Ruby/Rails,Webhook 编排)与 reposync(Python,git 执行)两个项目中;本项目将两者合并为可独立部署的单一服务,部署依赖收敛为 JDK 17 + MySQL。
功能特性
PlatformHookAdapter接口预留 Hook 注册扩展点(GitLink 已实现)技术栈
git fetch+git push --force)快速开始
环境要求
git(同步核心依赖)1. 初始化数据库
2. 配置
核心配置位于
src/main/resources/application.yml,全部支持环境变量覆盖,默认激活localprofile:SERVER_PORTSYS_ENVCEROBOT_MYSQL_HOST/PORT/DB/USER/PWDSYNC_DIRLOG_PATHGIT_BIN/GIT_TIMEOUT_MINUTESGITHUB_TOKEN/GITEE_TOKEN等WEBHOOK_BASE_URLWEBHOOK_DELAY_SECONDSWEBHOOK_MAX_RETRY/WEBHOOK_RETRY_BACKOFF_SECONDSWEBHOOK_TOKENX-Reposync-TokenWEBHOOK_AUTO_REGISTER3. 启动
启动后访问:
本地测试
完整测试步骤见 首次同步测试 与 增量同步,覆盖首次同步、增量同步、推送冲突与强制覆盖四条路径;Webhook 链路可按
POST /api/v1/webhook/{platform}?repo_name={repoName}手动模拟触发。Windows 环境说明
repo_name可能包含冒号(如双向配置生成的test-pair:1),该字符在 Windows 下不能用作文件名。因此本服务在磁盘路径层面做了转义:repo_nametest-pair:1(原值,保持不变)test-pair_1/sync_test-pair_1.log转义仅在 Windows 生效(
GitExecutor.safeName);Linux 保持原名,与升级前行为一致。Docker 部署
镜像内已预装
git与openssh-client,健康检查指向/actuator/health。API 概览
完整接口定义见 Knife4j 文档,主要接口:
Webhook 接收
端点仅解析 payload 并入队,毫秒级返回;git 操作延迟 5 秒执行。
双向同步配置
手动同步
核心流程
事件状态机:
0 待处理 → 1 处理中 → 2 成功 / 3 失败,失败未达重试上限时回到待处理(触发时间 +30s)。项目结构
相关文档
repo_name含冒号时 Windows 同步目录创建失败的定位与修复