当前位置: 首页 > news >正文

gitlab详解

gitlab 远程仓库

docker部署gitlab

一、gitlab是什么

1、gitlab?

见名知意,git代码仓库

GitLab 是一个一体化的 DevOps(开发运维一体化)平台,简单来说,它就像是你的私人“代码中心+自动化工厂+项目管理办公室“

能干的事情

  • 代码托管与版本控制的中枢:提供一个中央仓库,管理项目的所有代码和历史版本。这就是你 git push 代码最终去的地方。

  • 代码审查与协作的门户:通过 Merge Request (合并请求/MR) 功能,团队成员可以在合并代码前进行讨论、评论和逐行审查,确保代码质量。这是团队协作的核心环节

  • 自动化流水线 (CI/CD) 的引擎:这是 GitLab 最强大的功能之一。你可以在项目根目录下放一个 .gitlab-ci.yml 配置文件,之后每次你 git push 代码,GitLab 就会自动运行构建、测试、部署等一系列任务,这就是 持续集成/持续部署 (CI/CD)。

  • 项目管理的看板:它内置了 Issue (问题/需求单)、Milestone (里程碑) 和 看板 功能,可以用来规划任务、分配工作、追踪 Bug,替代一部分 Jira 的工作

2、群组、项目、用户

群组,项目,用户

群组就是一个很大的组,里面包含很多的项目

用户加入到群组里面,编辑项目

用户不能以自己创建一个项目,在公司里面,如果离职的话,就会删除这个用户的账号,那么这个项目也就没有了

二、gitlab搭建

1、docker部署gitlab

创建持久化目录

[root@node ~]# mkdir -p /data/gitlab/{config,logs,data}

编写docker-compose文件

[root@node gitlab]# cat docker-compose.yml 
version: "3.3"
services:gitlab:hostname: gitlab  # 容器内部主机名container_name: gitlab  # 容器名restart: alwaysports:  # 端口映射,主机端口:容器端口- "443:443"- "80:80"- "2222:22"  # 克隆代码的话,用2222端口,连接gitlab的22端口volumes:  # 数据持久化挂载- "/data/gitlab/config:/etc/gitlab"  # gitlab配置文件- "/data/gitlab/data:/var/opt/gitlab"  # 核心数据,仓库,用户,提交记录,上传文件- "/data/gitlab/logs:/var/log/gitlab"  # 日志image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:latest-linuxarm64environment:GITLAB_OMNIBUS_CONFIG: |  # 下面的内容会直接写入到/etc/gitlab/gitlab.rb这个文件external_url 'http://gitlab.hcie.com'  # 对外提供的域名访问gitlab_rails['gitlab_shell_ssh_port'] = 2222gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.hcie.com"gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = "notify@hcie.com"gitlab_rails['smtp_password'] = "xxxx"gitlab_rails['smtp_domain'] = "smtp.hcie.com"gitlab_rails['smtp_authentication'] = "login"gitlab_rails['smtp_enable_starttls_auto'] = falsegitlab_rails['smtp_tls'] = truegitlab_rails['smtp_openssl_verify_mode'] = "peer"gitlab_rails['gitlab_email_from'] = "notify@hcie.com"gitlab_rails['gitlab_email_display_name'] = "gitlab"user["git_user_email"] = "notify@hcie.com"nginx["client_max_body_size"] = "0"  # 不限制上传大小

启动gitlab

[root@node gitlab]# docker-compose up -d # 启动的非常的慢# 是healthy就可以访问了
[root@docker gitlab]# docker compose ps
WARN[0000] /root/gitlab/docker-compose.yml: `version` is obsolete 
NAME      IMAGE                                                                        COMMAND                  SERVICE   CREATED         STATUS                   PORTS
gitlab    swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:latest   "/assets/init-contai…"   gitlab    5 minutes ago   Up 5 minutes (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp

2、登录gitlab

1、密码文件

查看默认密码

[root@docker config]# pwd
/data/gitlab/config  # gitlab配置目录下面有初始密码[root@docker config]# cat initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 1j3i/+O/je4NBZcMbR2mcpyU7mnZnykd0sETOUPD58g=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

用户名是root,密码只能使用24小时

img

2、修改语言为中文

img

preference里面有切换为中文的

img

保存,刷新页面即可

3、修改密码

因为临时密码只能使用24小时,所以需要修改密码

img

修改密码为huawei@123

3、用户管理

1、创建用户

点击下方的管理员

img

img

img

  • 这里的电子邮件不能乱填的,gitlab会给这个邮件地址发送一封邮件,点击邮件链接才可以改密码的

  • 但是我们之前配置的smpt服务都是瞎写的,邮件是发送不出去的

  • 可以创建用户之后,点击编辑,给他设置密码

img

4、配置ssh拉取代码

创建一个项目,设置为私有的

1、http拉取代码

每次拉取的话,都需要输入用户和密码的

[root@docker workspace]# git clone http://192.168.50.10/dev/testdev.git
Cloning into 'testdev'...
Username for 'http://192.168.50.10': root
Password for 'http://root@192.168.50.10': 
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 2.74 KiB | 2.74 MiB/s, done.
[root@docker workspace]# ls
appA  testdev

每次拉取都需要输入用户名和密码

2、ssh拉取代码

将自己的公钥复制到gitlab中ssh的配置

[root@docker workspace]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDH16BhcY11bbAzazlL3WDB+MfdwVUm4PtQKcPikXYnii/Ho9/P/F/h54QGhemlzjsSb6TX/GZ5jQtA2X8GE7nxZHqO5QFX4yNPmogmFrqxbAmQGlE3FKwyJYc7g937jkn19TzOfuzq+kIEc9b3hzSKGU+gSHZIYbv0HJU1vm5EfaPA8TeHmZzDsA/h6jylFNZRz40xvEntHpXe7xowIT5gKogZs+ugEYbTPnyd1e6vnsvgH2rktrjluR8H82/j8AVFVUeHirVcaU7RCKENdNzAzWoWYIxQsBBgOwL9TymxCQHWsHa5H30PDDGXr3PqBOGONC1H5Su0G8KkhIsmoPtV9J1TMVv8VzyIBtayrS9oOxeLvkCZT0vML2hWygIAs1mBD1PMh8Oi73GKsKB7fJyqrMTQhpaE/dP1st2O2mbP44r4IFA+ztNM+k57PkEdEDNr4gdXZrBh/u+Q/AS/bhmNRPSopgOICmOK5qZHS9HNYBtr8oKr6V51xTNXn5XfNRM= root@docker

点击头像和ssh密钥,粘贴进去即可

img

img

测试拉取

[root@docker workspace]# git clone ssh://git@192.168.50.10:2222/dev/testdev.git
Cloning into 'testdev'...
The authenticity of host '[192.168.50.10]:2222 ([192.168.50.10]:2222)' can't be established.
ECDSA key fingerprint is SHA256:anJBeBbb7MY9zQvlAXymrWCSBbb5ypAMKXRL7lfplYY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.50.10]:2222' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.[root@docker workspace]# ls
appA  testdev

拉取成功了

注意配置主机的域名解析,我上面都是使用的ip

常见的问题

1、gitlab头像无法正常的显示

在配置文件/etc/gitlab/gitlab.rb中添加如下项:

# http的配置
gitlab_rails['gravatar_plain_url'] = 'http://cdn.libravatar.org/avatar/%{hash}?s=%{size}&d=identicon'# https的配置

然后执行:

gitlab-ctl reconfigure
gitlab-rake cache:clear RAILS_ENV=production

刷新就会显示页面了

后面出一个k8s部署gitlab

http://www.jsqmd.com/news/620084/

相关文章:

  • 基于VRIF 2.0与OpenXR:实现Pico串流开发与多平台一键部署
  • Svelte 与 SvelteKit 生态资源全解析:从入门到实战
  • 碳交易机制下考虑需求响应的综合能源系统优化运行 综合能源系统是实现“双碳”目标的有效途径
  • 2026新都装修公司口碑王炸榜:本地真实业主力荐,半包到整装避坑指南 - 推荐官
  • 我用 AI 辅助开发了一系列小工具():文件提取工具兆
  • Qwen3-VL-4B Pro实战:手把手教你搭建智能图片分析工具
  • XGBoost-原理推导(中):从目标函数到最优切分点
  • 2026年发泡水泥优质企业推荐榜:黄湖节能领衔,专业轻质水泥实力企业精选 - 海棠依旧大
  • 2026成都别墅装修口碑王炸榜!TOP10实力公司全解析,从设计到落地一篇搞定 - 推荐官
  • 2026评测:波光跳泉领域这些企业表现亮眼,市场评价高的波光跳泉生产厂家坤湛喷泉专注行业多年经验,口碑良好 - 品牌推荐师
  • 浏览器自动化六大技术路线深度对比:从模拟点击到 Chrome 扩展注入既
  • 海外项目实战:用uniapp搞定谷歌登录,绕过网络限制的纯前端方案(附完整代码)
  • 生物显微镜设计避坑指南:Zemax仿真中那些容易忽略的‘可制造性’细节
  • Windows下PostgreSQL 14安装失败?手把手教你解决‘Problem running post-install step‘错误
  • 2026年4月海口美兰半挂租赁买卖,文昌半挂技术实力与市场口碑领航者 - 品牌推荐师
  • 批量音频音量调整工具使用说明:固定增减分贝与目标响度两种模式怎么选
  • uniapp消息推送权限处理指南:如何优雅地引导用户开启通知权限
  • 深入解读ATPG Pattern类型:除了Basic Scan,Clock PO和RAM Sequential模式怎么用?
  • 从金牛奖到数据实验室:一家头部公募如何在数智化深水区重构投研生产力
  • MindSpore 环境配置完全指南雀
  • 别再为3D模型发愁了!用HelixToolkit.Wpf在WPF里加载并操控模型(附完整代码)
  • 2026成都全包装修公司实力红黑榜:深扒10家高口碑品牌,附真实案例与报价陷阱解析 - 推荐官
  • 【仅限头部AI实验室内部流通】:LLM训练流水线版本控制Checklist v2.1(含SHA-3哈希校验模板)
  • Detectron2实战:从零构建自定义目标检测模型的完整指南
  • NumPy怎么删去单维度_np.squeeze()移除shape中长度为1的冗余轴
  • 怎样跨库跨表导出JSON数据_结构与数据分离提取
  • TI IWR1843+DCA1000数据采集实战:手把手教你用Matlab调用LUA脚本配置mmWave Studio参数
  • 【模拟IC】从指标到参数:二级运放GBW与相位裕度的设计实战
  • 新都装修公司实力大起底!2026最新TOP10排名,专治老房翻新与别墅豪宅装修 - 推荐官
  • USB运动控制五轴雕刻机系统完全开源资料:PCB生产支持,多版本C++源码,五轴联动与RTCP...