
Gitly:用 V 语言编写的轻量级自托管 GitHub/GitLab 替代方案
来源标题:Gitly: lightweight, self-hosted GitHub/GitLab alternative written in V
Gitly 是一个用 V 语言编写的轻量级自托管代码托管平台,定位为 GitHub/GitLab 的替代品,目前处于 beta 阶段。它只提供平台控制面,扫描引擎、LDAP/SAML 原生支持、可观测性后端、多区域编排和独立维护的 CI runner 仍需依赖外部服务。默认使用 PostgreSQL,也支持 SQLite,构建需 V 编译器、Git 和 C 编译器。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Gitly 是一个用 V 编写的轻量级、可自托管的 GitHub/GitLab 替代品。
Gitly 目前处于 beta 阶段。它是一个轻量级的代码托管平台,而非完整的 GitLab 发行版。它提供集成的平台控制平面,而扫描引擎、原生 LDAP/SAML 协议处理、托管可观测性后端、多区域编排以及单独维护的 CI runner 仍作为外部服务存在。
当前的 GitLab 能力对比以及剩余的实现顺序记录在 docs/gitlab-parity.md 中。Gitly 被有意描述为轻量级替代品,而非完整的 GitLab 对等实现,因为仍有主要平台领域尚未完成。与 Gitea 的对比见 docs/gitea-parity.md——Gitea 是规模更接近的代码托管平台,因此是更有用的参照标准。
需要较新的 V 编译器、Git 和 C 编译器。在干净的检出上安装 sassc 以编译样式表;构建过程有意不下载未固定版本的生成资源。Markdown 模块已包含在此仓库中。
v run build.vsh ./gitly
Gitly 默认基于 PostgreSQL 构建。使用以下命令创建默认的本地角色和数据库:
v run setup_db.vsh
如需改用 SQLite:
v -d sqlite -o gitly . ./gitly
SQLite 数据库默认为 gitly.sqlite;可通过 config.json 中的 sqlite.path 或 GITLY_SQLITE_PATH 修改。仓库、归档和头像存储可通过 GITLY_REPO_STORAGE_PATH、GITLY_ARCHIVE_PATH 和 GITLY_AVATARS_PATH 覆盖。PostgreSQL 接受 pg 配置块、GITLY_DB_* 变量、常规的 PG* 变量或 DATABASE_URL。
Gitly 使用宿主机的 OpenSSH 服务器,而不是嵌入第二个 SSH 守护进程。配置一个专用的 SSH 账户并设置:
export GITLY_SSH_ENABLED=true export GITLY_SSH_HOSTNAME=git.example.com export GITLY_SSH_PORT=22 export GITLY_SSH_USER=git export GITLY_SSH_AUTHORIZED_KEYS_PATH=/home/git/.ssh/authorized_keys
Gitly 进程必须能够原子性地更新该文件。它会保留其管理块之外的条目,并为活跃的认证密钥和部署密钥安装受限的强制命令。OpenSSH 的配置和安全模型见 docs/ssh.md。
Fork 和镜像行为——包括私有源可见性、分歧处理、凭据加密、SSH 主机密钥固定以及内部主机允许列表——记录在 docs/repository-forks-mirrors.md 中。
包分发、安全数据摄取、运维 API、备份、身份配置以及扩缩容配置记录在 docs/platform.md 中。
使用 SQLite 支持运行已跟踪的测试套件:
v -d sqlite test $(git ls-files '*_test.v')
端到端的首次运行检查使用进程专属端口和隔离的临时数据库/存储,然后克隆一个公共仓库:
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。