gitlab特点
- 完整的代码托管功能:支持Git版本控制系统,提供强大的代码仓库管理
- 集成的CI/CD:内置完善的持续集成和持续交付流水线
- 问题跟踪与协作:支持问题创建、讨论、优先级设置和任务分配
- 代码审查机制:便于团队进行质量管控、知识共享和模块讨论
- 安全扫描功能:提供静态代码分析、漏洞扫描和容器安全检查
- 扩展集成能力:支持与Jira、Slack、Kubernetes等主流工具的对接
版本区别
GitLab提供GitLab-JH、GitLab-CE和GitLab-EE三个版本,主要区别如下:
GitLab-JH与GitLab-CE的核心差异体现在版本来源、功能和服务支持方面:
- GitLab-CE(Community Edition社区版)
- 面向全球用户提供的免费开源版本
- 提供基础的代码托管和版本控制功能
- 适合个人开发者或小型团队使用
- 不包含企业级服务和技术支持
- GitLab-JH(极狐版)
- 由国内极狐公司基于GitLab-CE/EE二次开发
- 针对中国市场进行了本地化定制
- 提供中文文档支持
- 优化本地用户体验
- 分为两个版本:
- 基础版(免费)
- 专业版(订阅收费)
- 代码仓库部署在中国境内
版本查询提示:可通过 https://packages.gitlab.cn/ 查看GitLab-JH的版本号及镜像tag信息。
部署方式
- Omnibus 本地部署
- Docker 容器化部署
- Kubernetes 集群部署
部署需求
存储需求
Omnibus GitLab 安装需要约 2.5 GB 存储空间。建议采用 LVM 部署以便后续扩容,并优先选择 7200 转 HDD 或 SSD 以保证性能。
CPU 配置
CPU 需求与用户规模及工作负载相关,影响因素包括:
- 用户活跃度
- 自动化程度
- 镜像大小
- 变更频率
推荐最低配置:
- 4 核:支持 500 名用户
- 8 核:支持 1000 名用户
内存配置
内存需求同样取决于用户规模和工作负载,影响因素与 CPU 相同。
推荐最低配置:
- 4GB RAM:支持 500 名用户
- 8GB RAM:支持 1000 名用户
补充建议:
- 服务器需配置至少 2GB swap 空间(即使内存充足)
- 将内核 swappiness 设为较低值(如 10),以平衡 RAM 和 swap 的使用
数据库支持
仅支持 PostgreSQL,可选用内置(Omnibus 集成)或外部数据库。
更多部署要求详见:GitLab 官方文档
本地安装
bash
yum install -y curl policycoreutils-python3 openssh-server perl
curl -L get.gitlab.cn | bash
sudo EXTERNAL_URL="http://gitlab.codemiracle.com" yum install -y gitlab-jh
# 自签证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/C=CN/ST=ZheJiang/L=HangZhou/O=codemiracle/OU=Xianghy/CN=gitlab.codemiracle.com"
# 配置证书
vim /etc/gitlab/gitlab.rb
......
external_url "https://gitlab.codemiracle.com" #指定HTTPS访问
gitlab_rails['gitlab_ssh_host'] = 'gitlab.codemiracle.com' #使用ssh访问gitlab的域名,ssh://git@gitlab.codemiracle.com:/xxx/project.git
letsencrypt['enable'] = false #关闭letsencrypt
nginx['redirect_http_to_https'] = true #指定HTTP重定向为HTTPS
nginx['client_max_body_size'] = '1024m' #gitlab-ce自带Nginx的最大包大小
gitlab_rails['time_zone'] = 'Asia/Shanghai' #配置时区
gitlab_rails['initial_root_password'] = 'admin123' #重置为指定密码
......
gitlab-ctl reconfigure #重载配置
参考文档:https://docs.gitlab.cn/docs/omnibus/settings/ssl/index.html
Docker安装
bash
# 简单示例
export GITLAB_HOME=/home/gitlab
docker run --detach \
--hostname gitlab.codemiracle.com \
--publish 443:443 --publish 80:80 --publish 2202:22 \
--name gitlab \
--restart unless-stopped \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 2048m \
gitlab/gitlab-ce:latest
docker logs -f gitlab #观察部署过程
推荐使用 GitLab-CE 社区版,也可以选择官方最新版 Docker 镜像 registry.gitlab.cn/omnibus/gitlab-jh:latest。
如需查看其他可用镜像标签,请参考:https://hub.docker.com/r/gitlab/gitlab-ce/tags/
K8S部署
bash
# 先决条件
https://docs.gitlab.cn/docs/charts/installation/tools/
helm repo add gitlab https://charts.gitlab.io/
helm repo update
helm search repo gitlab #查看gitlab chart包
helm show chart gitlab/gitlab #查看对应gitlab chart的详情
要安装国内GitLab-JH版,可通过以下命令添加Helm仓库源:
bash
helm repo add gitlab-jh https://charts.gitlab.cn
参考资料:
https://www.cnblogs.com/adblogs/p/18627778
https://docs.gitlab.cn/docs/charts/charts/
bash
helm upgrade --install mygitlab gitlab/gitlab --create-namespace --namespace gitlab -f myvaules.yaml