1.GitLab ARM64源码编译搭建
2.Gitea源码分析(一)
3.GitLab ARM64源码在信创统信UOS下的仓仓库搭建
GitLab ARM64源码编译搭建
本文由神州数码云基地团队整理撰写,若转载请注明出处。库源 GitLab 是源码一个基于 Ruby on Rails 的开源应用,实现自托管的下载 Git 项目仓库,通过 Web 界面进行访问和管理。仓仓库GitLab 提供了多种安装和部署方式,库源集中趋势指标源码包括操作系统软件源安装、源码Docker 方式部署以及源代码方式安装。下载官方构建的仓仓库软件包和镜像主要针对 X 架构,不支持 ARMv8,库源且 Docker 镜像多基于 Ubuntu Linux,源码CentOS 系统不兼容。下载 为满足在 CentOS7、仓仓库Arm 架构服务器上部署 GitLab 的库源需求,采用源码编译 GitLab 的源码方式。 安装版本为 gitlab-ce:--stable。环境准备
安装环境要求:Ruby 2.7.4
Redis 6.2.4
Git:2..1
Go:.
Postgres:
Node: .x
Nginx:1..1
安装步骤
安装 Ruby
Gitlab-ce:--stable 版本要求 Ruby 2.7.4。安装 Git
要求 Git 2..1,官方建议使用 Gitaly 提供的冲刺涨停公式源码版本。安装 Go
要求 Go .。安装 Node 和 yarn
要求 Node >= v..1,推荐使用 .x,因为更快。要求 yarn = v1..x,暂不支持 Yarn 2。安装数据库
GitLab .0 及更高版本需要 PostgreSQL 或以上版本。安装 Redis
版本:6.2.4。编译 GitLab
编译核心代码
完成三个部分的编译工作,最终得到主要目录结构。配置核心代码
主要修改数据库配置属性。编译 GitLabShell
安装所需依赖后,进行编译。编译 GitLab-Workhorse
编译完成后,完成编译工作。安装 GitLab 页面
安装 Gitaly
至此 GitLab 服务已启动,接下来安装 Nginx,部署前端页面。富鑫指标源码安装 Nginx
要求 Nginx 1..1,注意修改 server_name 为你的 IP 或域名。启动 Nginx
完成部署。登录 GitLab
第一次登录时,需要设置 root 账户密码。Gitea源码分析(一)
Gitea是一个基于Go编写的Git代码托管工具,源自于gogs项目,具有良好的后端框架和前端集成。
前端框架采用Fomantic UI和Vue,路由控制器框架在年4月从macaron切换到chi,形成了gitea项目的结构基础。
在调用接口时,gitea引入了'User','Repo','Org'等内容,简化了接口调用,便于管理。'ctx.User'和'ctx.Repo'内容动态变化,打开依赖包源码需要用户登录和进入仓库时赋值。
在'routers'下,'handler'相关文件分为'get'和'post'两类,前者涉及前端渲染,后者负责执行操作。
'get'请求通过'templates'中的文件渲染到前端,通过'ctx.Data["name"]'传递需要渲染的数据,获取URL参数使用'c.Query'。
'post'请求接收前端数据,通常通过'form'传值,从'context'生成,可以使用'form.xxx'直接调用,添加内容则需在'form'结构体中定义。
渲染生成网页使用'ctx.Html(,tplName)',根据'context'内容做条件判断。
权限管理功能实现中,数字越大权限越高,便于后续对比。idea看源码利器'UnitType'包含多项,如仓库页面导航栏显示。检查权限时,对比AccessModeRead和模块权限,大于则认为具有读权限。
gitea默认运行于单一服务器,伸缩性有限。若需分布式改造,需解决大规模并发访问、存储库分片和数据库支撑等问题。通过ELB负载均衡分散到多个节点,数据库使用集群方案,但存储库分片面临巨大挑战,现有技术难以实现。
官方文档提供了其他开源库的介绍,包括配置文件、容器方式下的轻量仓库与CI使用方案等。深入研究可发现Gitea的配置、路由控制框架chi、权限管理实现及分布式架构改造思路。
GitLab ARM源码在信创统信UOS下的搭建
GitLab是一个基于Ruby on Rails语言开发的开源应用,提供私有化的Git项目仓库,可通过Web界面进行访问和管理。GitLab官方提供了多种安装方式,包括通过操作系统软件源安装、Docker容器部署以及源代码自编译安装。然而,GitLab官方构建的软件包和镜像主要针对X架构,并未提供针对ARMv8的版本。UOS操作系统支持多种CPU架构(AMD、ARM、MIPS、SW)和六种国产CPU平台(鲲鹏、龙芯、申威、海光、兆芯、飞腾)以及Intel/AMD的主流CPU,UOSV基于Debian stable,内核为4.,支持多种架构。由于GitLab官方Omnibus安装包并未支持arm架构,因此需要通过源码编译来安装GitLab-ce .1-stable在UOSV arm架构上。
在部署GitLab-ce .1-stable之前,首先需要搭建编译环境,包括Ruby 2.7.4、redis 6.2.4、git 2..0、Go:.、Postgres: 、Node: .x、Nginx:1..1。编译过程较为平顺,但安装Ruby、Node和Go时需要注意选择国内镜像源以确保顺利编译。GitLab-ce:-1-stable版本要求Git2..x或以上版本,推荐使用Gitaly提供的git版本。UOSV 版本若选择调试工具包,则系统自带的git版本不符合要求,需要手动安装Gitaly所提供的git版本,确保版本满足GitLab要求。安装完成后,系统会显示版本为2..0,满足要求。此外,还需安装GraphicsMagick支持GitLab引入的自定义图标功能,以及安装Postfix邮件服务器和exiftool以支持GitLab Workhorse功能。Ruby的安装也非常重要,更换国内Ruby Gem源能够提高编译过程的稳定性。
在完成编译环境搭建后,需为GitLab创建一个名为git的用户。GitLab .1及以后版本仅支持PostgreSQL数据库,GitLab-ce .1-stable需要PostgreSQL 或以上版本,并且需要pg_trgm扩展和btree_gist扩展。GitLab .0及以后版本要求Redis版本4.0或以上,推荐使用6.0或以上版本。部署GitLab-ce .1-stable需要编译三个部分:gitLab核心代码、gitlab-shell和GitLab-Workhorse。编译完成后,主要目录结构会根据部署环境进行相应调整。
配置GitLab的各个组件时,需要将源码配置调整为已搭建环境的配置。主要修改数据库配置为已安装的PostgreSQL 版本。安装过程中可能会遇到一些小问题,如使用sudo执行某些命令时的超时错误。解决这类问题通常需要检查和调整环境变量,确保git账号的环境变量能够正常工作。例如,通过修改/etc/sudoers文件,确保在执行sudo命令时保留所需的环境变量,如GOPROXY。安装完成后,GitLab及其环境应已正确配置,系统架构识别为arm,GitLab版本为.1,redis版本未读取但不影响使用。至此,GitLab在UOSV arm架构上成功部署完毕。