一、GitLab概述
GitLab是基于Git的开源代码托管平台,提供代码仓库管理、CI/CD、代码审查、项目管理等功能,是DevOps一体化平台。
1.1 GitLab核心特性
- 代码仓库:Git仓库托管和管理
- CI/CD:内置持续集成和持续部署
- 代码审查:Merge Request工作流
- 项目管理:Issue、里程碑、看板
1.2 GitLab版本
| 版本 | 说明 | 适用场景 |
|---|---|---|
| Community Edition (CE) | 社区版,免费 | 中小企业 |
| Enterprise Edition (EE) | 企业版,付费 | 大型企业 |
| GitLab.com | SaaS服务 | 个人/小团队 |
二、GitLab安装部署
2.1 Omnibus安装
# 安装依赖
yum install -y curl policycoreutils-python openssh-server
# 添加GitLab仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
# 安装GitLab
EXTERNAL_URL="http://gitlab.fgedu.net.cn" yum install -y gitlab-ce
# 配置GitLab
# /etc/gitlab/gitlab.rb
external_url 'http://gitlab.fgedu.net.cn'
# 重新配置
gitlab-ctl reconfigure
# 查看状态
gitlab-ctl status
# 输出示例
run: gitaly: (pid 12345) 1234s; run: log
run: gitlab-monitor: (pid 12346) 1234s; run: log
run: gitlab-workhorse: (pid 12347) 1234s; run: log
run: logrotate: (pid 12348) 1234s; run: log
run: nginx: (pid 12349) 1234s; run: log
run: postgres: (pid 12350) 1234s; run: log
run: redis: (pid 12351) 1234s; run: log
run: sidekiq: (pid 12352) 1234s; run: log
run: unicorn: (pid 12353) 1234s; run: log
run: gitaly: (pid 12345) 1234s; run: log
run: gitlab-monitor: (pid 12346) 1234s; run: log
run: gitlab-workhorse: (pid 12347) 1234s; run: log
run: logrotate: (pid 12348) 1234s; run: log
run: nginx: (pid 12349) 1234s; run: log
run: postgres: (pid 12350) 1234s; run: log
run: redis: (pid 12351) 1234s; run: log
run: sidekiq: (pid 12352) 1234s; run: log
run: unicorn: (pid 12353) 1234s; run: log
2.2 Docker安装
# 创建目录
mkdir -p /srv/gitlab/config /srv/gitlab/logs /srv/gitlab/data
# 启动GitLab容器
docker run --detach \
--hostname gitlab.fgedu.net.cn \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
# 查看日志
docker logs -f gitlab
# 获取初始密码
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
三、基础配置
3.1 主配置文件
# /etc/gitlab/gitlab.rb
# 外部URL
external_url 'http://gitlab.fgedu.net.cn'
# SSH端口
gitlab_rails['gitlab_shell_ssh_port'] = 22
# 时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 禁用注册
gitlab_rails['gitlab_signup_enabled'] = false
# 配置邮件
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.fgedu.net.cn"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@fgedu.net.cn"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "fgedu.net.cn"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@fgedu.net.cn'
# 配置LDAP
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => 'ldap.fgedu.net.cn',
'port' => 389,
'uid' => 'sAMAccountName',
'bind_dn' => 'CN=gitlab,OU=Service,DC=example,DC=com',
'password' => 'password',
'base' => 'DC=example,DC=com'
}
}
# 应用配置
gitlab-ctl reconfigure
3.2 备份配置
# 配置备份路径
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # 7天
# 创建备份
gitlab-backup create
# 备份文件位置
# /var/opt/gitlab/backups/
# 恢复备份
gitlab-backup restore BACKUP=1704067200_2024_01_01
# 定时备份
# crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
四、用户与权限管理
4.1 用户管理
# Web UI创建用户
# 1. 登录管理员账户
# 2. 点击"Admin Area" -> "Users"
# 3. 点击"New user"
# 使用命令行创建用户
gitlab-rails console
# 创建用户
user = User.new(
username: 'zhangsan',
email: 'zhangsan@fgedu.net.cn',
name: '风哥1号',
password: 'password123',
password_confirmation: 'password123'
)
user.save!
# 设置管理员
user.admin = true
user.save!
# 重置密码
user = User.find_by(username: 'zhangsan')
user.password = 'newpassword'
user.password_confirmation = 'newpassword'
user.save!
# 禁用用户
user = User.find_by(username: 'zhangsan')
user.state = 'blocked'
user.save!
4.2 权限级别
| 角色 | 权限 |
|---|---|
| Guest | 查看项目、创建Issue |
| Reporter | 查看代码、拉取代码 |
| Developer | 推送代码、创建分支、创建MR |
| Maintainer | 管理分支保护、合并MR、管理成员 |
| Owner | 完全控制项目 |
五、项目管理
5.1 创建项目
# Web UI创建项目
# 1. 点击"Projects" -> "New project"
# 2. 选择项目类型(空白项目/模板/导入)
# 3. 填写项目信息
# 4. 设置可见性级别
# 使用API创建项目
curl --request POST \
--header "PRIVATE-TOKEN: your_token" \
--data "name=my-project" \
--data "visibility=private" \
"http://gitlab.fgedu.net.cn/api/v4/projects"
# 克隆项目
git clone http://gitlab.fgedu.net.cn/group/project.git
git clone git@gitlab.fgedu.net.cn:group/project.git
5.2 分支管理
# 创建分支
git checkout -b feature/new-feature
# 推送分支
git push origin feature/new-feature
# 设置受保护分支
# Settings -> Repository -> Protected branches
# 使用API设置保护分支
curl --request POST \
--header "PRIVATE-TOKEN: your_token" \
--data "name=main" \
--data "push_access_level=40" \
--data "merge_access_level=40" \
"http://gitlab.fgedu.net.cn/api/v4/projects/1/protected_branches"
# 删除分支
git push origin --delete feature/old-feature
六、CI/CD配置
6.1 GitLab Runner
# 安装Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash
yum install -y gitlab-runner
# 注册Runner
gitlab-runner register
# 输入GitLab URL
# 输入注册Token
# 输入Runner描述
# 输入Runner标签
# 选择执行器(shell/docker/kubernetes)
# 查看Runner
gitlab-runner list
# 启动Runner
gitlab-runner start
# 查看状态
gitlab-runner status
6.2 CI/CD Pipeline配置
# .gitlab-ci.yml
stages:
- build
- test
- deploy
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
build:
stage: build
image: maven:3.8-openjdk-11
script:
- mvn clean package -DskipTests
artifacts:
paths:
- target/*.jar
expire_in: 1 week
test:
stage: test
image: maven:3.8-openjdk-11
script:
- mvn test
artifacts:
reports:
junit: target/surefire-reports/*.xml
deploy:
stage: deploy
image: alpine:latest
script:
- echo "Deploying to production..."
only:
- main
when: manual
# Docker构建
docker_build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- main
七、运维命令
7.1 常用管理命令
# 查看状态
gitlab-ctl status
# 启动服务
gitlab-ctl start
# 停止服务
gitlab-ctl stop
# 重启服务
gitlab-ctl restart
# 重新配置
gitlab-ctl reconfigure
# 查看日志
gitlab-ctl tail
gitlab-ctl tail nginx
gitlab-ctl tail unicorn
# 检查配置
gitlab-rake gitlab:check
# 检查环境
gitlab-rake gitlab:env:info
# 进入Rails控制台
gitlab-rails console
# 进入数据库
gitlab-rails dbconsole
# 重建索引
gitlab-rake gitlab:elastic:index
八、最佳实践
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 备份频率 | 每日备份 | 数据安全 |
| 分支保护 | 保护主分支 | 代码质量 |
| 代码审查 | 强制MR | 团队协作 |
| 资源限制 | 设置配额 | 资源管理 |
注意事项:
- 定期备份配置文件和数据
- 及时更新安全补丁
- 监控服务器资源
- 配置合理的CI/CD资源限制
九、总结
GitLab是功能强大的DevOps平台。通过本培训文档,您应该掌握了:
更多视频教程www.fgedu.net.cn
- GitLab安装部署方法
- 基础配置和邮件设置
- 用户与权限管理
- 项目和分支管理
- CI/CD Pipeline配置
- 运维管理和最佳实践
IT运维培训文档系列 | 第429篇 | GitLab代码仓库管理培训
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
