概述
官方文档:https://docs.gitlab.com/?tab=Use+GitLab
GitHub地址:https://github.com/gitlabhq/gitlabhq
GitLab 是一个基于 Git 的开源分布式版本控制系统,最初由荷兰开发者 Dmitriy Zaporozhets 和 Valery Sizov 于 2011 年创建。它不仅是代码托管平台,更是一个集成了 DevOps 全生命周期管理的协作工具,帮助团队实现从代码开发、测试、部署到运维的全流程自动化。
截至 2025 年,GitLab 已成为全球最受欢迎的 DevOps 平台之一,被广泛应用于企业级软件开发,例如微软、IBM、NASA 等机构均在使用。
GitLab架构图:
功能特点
版本控制
- 基于 Git 的代码管理:GitLab 使用 Git 作为其底层版本控制系统,支持代码的分支管理、合并请求、版本回溯等功能。开发者可以通过分支进行独立开发,然后通过合并请求将代码合并到主分支,确保代码的版本控制和变更管理有序进行。
- 代码审查与合并请求:GitLab 提供了强大的代码审查功能。开发者提交代码后,其他团队成员可以通过合并请求进行代码审查。审查者可以查看代码的变更、添加评论、提出修改意见等。只有在代码通过审查后,才能合并到主分支,从而保证代码的质量。
- 代码仓库管理:用户可以轻松创建、克隆和管理代码仓库。GitLab 支持多种仓库权限设置,如公开仓库、私有仓库和内部仓库,满足不同项目的保密性和共享需求。例如,一个开源项目可以设置为公开仓库,方便全球开发者参与;而企业内部的核心代码则可以设置为私有仓库,仅限授权人员访问。
持续集成与持续部署(CI/CD)
- 内置 CI/CD 流水线:GitLab 提供了强大的内置 CI/CD 功能。开发者可以在代码仓库中配置 .gitlab-ci.yml 文件,定义项目的构建、测试和部署流程。当代码提交或合并请求触发时,GitLab CI/CD 会自动执行线流水任务,包括代码编译、单元测试、代码质量检查、自动化部署等。例如,一个 Web 应用项目可以在代码提交后自动运行测试用例,如果测试通过,则将应用部署到测试环境,大大提高了开发效率和软件交付速度。
- 多环境部署支持:GitLab 支持多种部署环境,如开发环境、测试环境和生产环境。开发者可以通过配置文件指定不同环境的部署策略和参数,实现一键式多环境部署。例如,开发团队可以在开发环境中快速迭代代码,经过测试环境验证后,一键将应用部署到生产环境,减少人为操作错误。
项目管理
- 任务管理与看板:GitLab 提供了类似敏捷开发的项目管理功能。用户可以创建任务(Issue)、分配任务给团队成员、设置任务优先级和截止日期等。同时,GitLab 的看板功能可以将任务按照不同状态(如待办、进行中、已完成)进行可视化展示,方便团队成员实时了解项目进度。
- 里程碑管理:项目管理者可以为项目设置里程碑,将任务分配到不同的里程碑中。里程碑可以帮助团队明确项目阶段目标和交付时间,确保项目按计划推进。例如,一个软件开发项目可以设置多个里程碑,如需求分析里程碑、设计里程碑、开发里程碑和上线里程碑,每个里程碑包含一系列相关任务。
- 文档管理:GitLab 支持在代码仓库中创建和管理文档,如项目文档、开发文档、用户手册等。文档可以使用 Markdown 语法编写,方便团队成员阅读和编辑。同时,GitLab 还提供了文档版本控制功能,确保文档的变更可以追溯。
团队协作
- 多用户支持与权限管理:GitLab 支持多用户协作,团队成员可以根据角色和权限访问项目。项目所有者可以为不同用户分配不同的权限,如读取权限、写入权限、管理权限等。例如,开发人员可以有代码提交和修改权限,而测试人员可以有代码审查和测试权限,确保团队协作的安全性和高效性。
- 讨论与评论功能:GitLab 提供了丰富的讨论和评论功能。团队成员可以在代码、任务、合并请求等地方发表评论、进行讨论。这些讨论记录会保留下来,方便团队成员回顾和查阅,促进团队沟通和协作。
- Web 挂钩和集成:GitLab 支持与其他工具和平台的集成,如 Slack、Jira、Docker 等。通过 Web 挂钩,GitLab 可以将项目事件(如代码提交、任务更新)自动推送到其他工具中,实现团队协作的无缝衔接。例如,当有新的代码提交时,GitLab 可以自动将消息发送到 Slack 群组,提醒团队成员关注。
部署方式
开源版本(GitLab Community Edition)
- 免费使用:GitLab CE 是完全开源的版本,用户可以免费下载和使用。它提供了 GitLab 的基本功能,包括代码管理、项目管理、CI/CD 等。开源版本适合中小团队和开源项目使用,用户可以根据自己的需求进行定制和扩展。
- 自行部署:用户需要自行搭建服务器环境,安装和配置 GitLab。虽然部署过程需要一定的技术知识,但用户可以完全掌控系统的运行环境和数据存储方式。例如,一个小型创业团队可以使用开源版本搭建在本地服务器上,节省成本。
企业版(GitLab Enterprise Edition)
- 付费使用:GitLab EE 是针对企业用户的付费版本。它在开源版本的基础上增加了更多高级功能,如高级的权限管理、审计日志、LDAP 集成、高级的/ CICD 功能等。这些功能可以帮助企业更好地管理复杂的项目和团队,满足企业的安全性和合规性要求。
- 多种部署方式:企业版支持多种部署方式,包括在本地服务器部署、在云平台部署(如 AWS、Azure)以及使用 GitLab 提供的 SaaS 服务(GitLab.com)。企业可以根据自身的资源和需求选择合适的部署方式。例如,大型企业可能会选择在本地服务器部署,以确保数据的安全性和自主性;而一些中小型企业可能会选择使用 GitLab.com,方便快速部署和使用。
SaaS 服务(GitLab.com)
- 托管服务:GitLab.com 是 GitLab 提供的 SaaS 服务,用户无需自行搭建服务器环境,直接在 GitLab.com 上注册账号并使用。它提供了基本的开源版本功能和部分企业版功能,适合个人开发者、小型团队和开源项目使用。使用 SaaS 服务可以节省硬件成本和运维成本,用户可以专注于开发工作。
- 免费与付费套餐:GitLab.com 提供了免费套餐和多种付费套餐。免费套餐包含基本的代码托管、项目管理等功能,但有一些使用限制,如仓库大小限制、CI/CD 任务数量限制等。付费套餐则提供了更多的功能和更高的资源配额,用户可以根据项目需求选择合适的套餐。
Docker部署GitLab CE
参考网址:https://docs.gitlab.com/install/docker/installation/
配置SSH端口
默认情况下,GitLab 使用 port22通过 SSH 与 Git 交互
修改SSH端口
[root@master ~]# vim /etc/ssh/sshd_config
# 默认为22,修改为2222
Port 2222
## 重启sshd服务
[root@master ~]# systemctl restart sshd
编写Docker Compose文件
[root@master ~/gitlab]# cat docker-compose.yaml
services:
gitlab:
image: docker.m.daocloud.io/gitlab/gitlab-ce:16.5.10-ce.0
container_name: gitlab
restart: always
hostname: '10.0.0.20'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.0.0.20'
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
ports:
- '22:22'
- '443:443'
- '80:80'
volumes:
- '/data/gitlab/config:/etc/gitlab'
- '/data/gitlab/logs:/var/log/gitlab'
- '/data/gitlab/data:/var/opt/gitlab'
创建数据目录
[root@master ~/gitlab]# mkdir -p /data/gitlab/{config,logs,data}
启动gitlab
[root@master ~/gitlab]# docker-compose up -d
[+] Running 2/2
✔ Network gitlab_default Created 0.0s
✔ Container gitlab Started
# 检查一下
[root@master ~/gitlab]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13be8dbc138b docker.m.daocloud.io/gitlab/gitlab-ce:16.5.10-ce.0 "/assets/wrapper" 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:22->22/tcp, [::]:22->22/tcp, 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp gitlab
访问gitlab
默认用户名为:root
默认的密码需要查看文件.
[root@master ~]# cat /data/gitlab/config/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: yQaKVjqDN/nQcf4uG2UfkaMy0/vSiMFjWXFOiJNns4k=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

配置GitLab
修改admin密码
第一件事应该修改一下密码,因为默认的密码有效期只有24小时
配置时区

配置中文和星期

配置ssh密钥
