1. 首页 > IT综合教程 > 正文

429. GitLab代码仓库管理培训

一、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

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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息