个人项目[sync-gitea-server]
我们开发时的代码仓库一般都放在阿里云效上,刚开始我们尝试使用云效自带的流水线来实践CI/CD流程,但是云效有很多限制,甚至绑定了阿里云的体系,导致很多场景没法实现自动化,于是我们将CI/CD流程迁移到内网实现。我们对比了一些开源方案,最终选择Gitea
作为代码同步仓库,并使用Gitea
自带的Actions
来实现CI/CD流程。Gitea
的几个特点正好符合我们的需求:
- 轻量级,资源消耗少,部署简单
- 支持兼容
Github Actions
的语法来实施CI/CD流程,可以直接服用现有的大量Actions
能力 - 支持
LDAP
认证,可以直接使用内网的用户体系
唯一的问题是无法实现自动、实时地从云效同步代码到Gitea
,于是我开发了sync-gitea-server
项目,用于实现自动、实时地从云效同步代码到Gitea
。项目的整体框架我是直接从之前的fake-sms项目中复制过来的,所以代码结构上会有很多相似的地方。
💡 项目:sync-gitea-server
sync-gitea-server
是一个用于同步代码仓库的 webhook 服务器。当上游代码仓库(如云效)发生变更时,它会向此服务器发送webhook 事件,服务器随后调用Gitea
API 来同步这些变更。
通过这个服务器,我们可以实现代码仓库的自动、实时同步,无需人工干预。目前该项目已经在我们内网运行,新项目都已经接入,非常稳定。
预览
✨ 特性
- 🚀 易于使用:只需在平台上创建应用程序,并配置云效代码仓库对应的 webhook 密钥,然后将生成的同步地址填到云效的 webhook 配置中
- 🔄 实时同步:通过 webhook 实时触发代码同步
- 🔐 安全可靠:支持 webhook secret 验证,确保请求来源可信
🎯 使用方法
使用 Docker 部署,容器镜像是erguotou/sync-gitea-server
,只需要暴露 7879 端口,挂载/app/db
,并按需配置以下环境变量:
PORT
:服务器端口,默认为7879
LOG_LEVEL
:服务器日志级别,默认为info
JWT_SECRET
:JWT令牌的密钥PUBLIC_URL
:本服务的公共URL,用于接收 webhook 事件ENABLE_LOG_IP
:是否在 webhook 事件中启用 IP 地址记录,默认为false
GITEA_URL
:Gitea
服务器的 URL,作为所有应用的默认值GITEA_TOKEN
:Gitea
用户的令牌,作为所有应用的默认值,在Gitea
的用户设置
->应用
中添加生成DISABLE_REGISTRATION
:是否禁用注册功能,默认为false
🛠️ 开发
项目使用 bun 进行开发,首先需要安装:
1 | curl -fsSL https://bun.sh/install | bash |
然后安装依赖
1 | bun i |
启动开发环境
1 | # 启动服务端 |
个人项目[sync-gitea-server]