☰
开源git 代码管理服务器
2026/10/6 12:43:00 网站建设 项目流程

基于 CodeFever Community (https://github.com/PGYER/codefeverCodeFever 是完全免费开源的 Git 代码托管服务,支持一行命令安装到自己服务器!CodeFever Community Edition (A Self-hosted Git Services)! - PGYER/codefeverhttps://github.com/PGYER/codefever)系统做了修改,升级优化 新的仓库地址:
https://gitee.com/caiqiaohch/codefeverhttps://gitee.com/caiqiaohch/codefever

gitlib太重了,这个开源系统功能还不足,为了满足低配置1核心2G的云服务器部署需求,特增加了远程仓库导入和 CI/CD 功能,在线编辑文件,正常显示md文件,支持各种文本显示,png等图片显示预览,对齐gitlib 功能,特将其开源:

完全开源的 Git 代码托管服务

增加内容:

本项目在CodeFever Community官方版本基础上做了一批增强, 主要集中在CI/CD、外部仓库导入与同步、在线文件管理、后台运维四个方面:

展开查看本次改动明细

1. CI/CD:兼容官方 gitlab-runner(新增)

  • 新增协议兼容层/api/v4/*(application/controllers/runnerapi.php):Runner 注册 / 校验 / 注销 / 重置令牌、拉取作业、分片回传日志、更新作业状态。官方gitlab-runner二进制可直接注册到 CodeFever,.gitlab-ci.yml原样复用, Runner 侧零改造。
  • 新增管理接口application/controllers/api/ci.php:流水线创建 / 取消 / 重试 / 删除、单作业重试、从失败阶段重试、作业级取消、when: manual手动触发、定时流水线、CI Lint 校验、CI 变量(env / file, 支持环境作用域)、CI 设置、统计看板、Runner 二进制下载。
  • 新增数据表:cc_ci_runners、cc_ci_runner_reg_tokens、cc_ci_pipelines、cc_ci_jobs、cc_ci_schedules、cc_ci_settings、cc_ci_variables、cc_ci_cache_versions。
  • 新增权限项UAC_REPO_CI_MANAGE(0x24), Developer 及以上角色可管理 CI。
  • Runner 拉取代码走gitlab-ci-token:<job token>BasicAuth, 在apiv1/internal.php::authHTTP中鉴权并校验仓库归属, Go 网关零改动。
  • 作业日志写入/data/codefever/ci-traces/<job_id>.log, 不入库, 避免大字段频繁写入。

2. 后台 worker(新增application/controllers/worker.php)

  • 单文件锁保证单实例常驻循环, 统一处理:导入任务执行、流水线解析与作业派发、定时流水线触发、失联 / 超时作业自动回收(判 failed)、trace 日志保留期(默认 30 天)与目录容量(默认 2GB)清理。
  • push 触发路径只落一条流水线记录, 重活全部交给 worker, 不拖慢 push、不长期占用 php-fpm。

3. 外部仓库导入与同步(新增)

  • repository_model::import()+Import_task_model(cc_import_tasks):支持 GitHub / GitLab / Gitee 一键导入;Gitee 可用访问令牌直接列出并挑选仓库。
  • 导入为后台异步任务:提交后返回任务号, 前端可轮询进度(clone 进度百分比 / 状态 / 结果仓库), 用户离开页面不受影响;凭据仅用于 clone, 用完即清除且永不回传前端。
  • 新增接口:import、importTask、importTasks、giteeRepos、remoteInfo(自动识别仓库名 / 展示名 / 描述 / 默认分支)、sync(镜像式重新同步)、updateSourceUrl(维护同步源与账密或个人令牌)。
  • 新增常量GIT_COMMAND_IMPORT, 复用 fork 的裸克隆逻辑。

4. 在线文件管理(新增)

  • saveFile/createFile/deleteFile/renameFile/uploadFile:浏览器内直接新建、编辑、删除、重命名与上传文件, 自动生成提交, 带baseSha冲突检测(冲突返回0x040D)。

5. 下载与展示(新增 / 修复)

  • downloadZip:按分支或 Tag 打包下载仓库源码 ZIP。
  • reporaw:私有仓库图片经 Web 会话鉴权输出, 解决 Markdown 内图片无法显示的问题;二进制安全读取(新增Command::runBinary), 单文件上限 50MB;文本文件 mime 兜底识别(json / yaml / shell 等)。
  • 仓库详情页暴露当前用户角色, 供前端判断写操作入口。

6. 账号与后台运维

  • 个人访问令牌:新增cc_user_tokens与api/user.php的listToken/addToken/removeToken, 支持 gitee / github / other, 令牌值打码且不回传, 供仓库同步使用。
  • 管理后台新增删除用户 / 仓库 / 仓库组:删除用户前自动把其仓库与组转交给操作管理员, 删除仓库 / 组时级联清理 CI 流水线与作业、trace、变量、Runner、Webhook、合并请求、成员等关联数据。
  • 仓库体积统计与缓存(getRepositorySizes), 管理后台与仓库设置展示体积, push 后自动失效重算。

7. 其他修复与改进

  • 修复 SSH / HTTP 网关仓库路径解析不一致(internal.php正则兼容无前导斜杠)。
  • 首次推送时自动把被推送的真实分支设为默认分支(不再写死 master)。
  • 修复文件历史查询(git log --left-only导致取不到历史)。
  • 统一仓库组名 / 显示名的格式与长度校验。
  • 新增错误码0x0413(Sync Fail)。
  • 数据库结构除通用脚本外, 新增 MySQL 5.7 / MySQL 8.0 专用脚本(misc/db_structure.mysql57.sql、misc/db_structure.mysql80.sql);create_db.sh/update.sh不再引用已废弃的db_update_20220215.sql。
  • 引入 YAML 解析库Spyc(application/third_party/Spyc.php)用于解析.gitlab-ci.yml。

8. CentOS 9 一键初始化与部署脚本(新增misc/centos9/)

  • centos9-init.sh: 全新 CentOS 9 / Stream 9 服务器的系统初始化(软件源、Nginx、MariaDB、PHP 7.4、Git、Go、git 用户、数据目录、PHP-FPM 池、SELinux / 防火墙), 幂等设计。
  • centos9-install.sh: 应用部署(配置文件生成、Composer 依赖、Go 网关编译、systemd 单元、nginx vhost、数据库初始化、定时任务), 支持环境变量非交互执行, 并自动生成自签名证书。
  • 新增codefever-workersystemd 单元, 让后台 worker(导入任务 / CI 流水线 / 定时触发 / 作业回收 / trace 清理)随系统常驻与开机自启。

如何安装

CodeFever提供Docker 镜像安装、从零开始安装和CentOS 9 一键脚本安装三种安装方式,可以根据自己的实际需要选择安装方式。

  • (推荐)最简单的安装方式是使用Docker, 只需要一行命令即可完成, 具体可见: Docker 镜像安装
  • 如果出于学习、研究或定制化需求, 也可以手动方式安装, 具体可见: 从零开始安装
  • 如果服务器是CentOS 9 / CentOS Stream 9, 可直接使用新增的一键脚本(需 root, 幂等可重复执行):
    1. bash misc/centos9/centos9-init.sh—— 系统初始化: EPEL / Remi 源、Nginx、MariaDB 10.5、PHP 7.4(含yaml扩展)、Git、Go、cronie、sendmail, 以及git运行用户、/data/codefever数据目录(git-storage / file-storage / ssl / ci-traces)、PHP-FPM 池(listen127.0.0.1:9000, 以 git 身份运行)、SELinux 与防火墙放行。
    2. bash misc/centos9/centos9-install.sh—— 应用部署: 生成env.yaml/config.yaml(随机 session / totp 密钥与 gateway token)、软链数据目录、安装 Composer 依赖、编译 Go 网关、部署 systemd 单元(codefever-httpgw/codefever-worker/codefever-authkeys)与 nginx vhost、初始化数据库、注册 git 定时任务并启动全部服务。域名、证书与数据库参数可用环境变量(DEPLOY_DIR/DOMAIN/SSL_CRT/SSL_KEY/SSL_AUTO/DB_PASS)传入, 未传则交互式填写;未提供证书时自动生成自签名证书。
  • 数据库结构除通用的misc/db_structure.sql外, 还提供了 MySQL 5.7 / MySQL 8.0 专用脚本(misc/db_structure.mysql57.sql/misc/db_structure.mysql80.sql), 可按实际数据库版本选择

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询