GitLab管理员常用配置及设置汇总


之前在 虚拟机Ubuntu 22.04上搭建GitLab操作步骤 上介绍了在Ubuntu 22.04上如何搭建社区版的GitLab,这里整理下作为GitLab管理员时在搭建完GitLab CE后,如何对其进行配置或设置

  • 更改仓库存储位置:切换到root用户下操作

    • 默认存放位置:/var/opt/gitlab/git-data/repositories

    • 自定义存放位置:/home/gitlab/git-data

    • 修改配置文件/etc/gitlab/gitlab.rb,取消对git_data_dirs的注释,调整为

      复制代码
      git_data_dirs({
          "default" => {
              "path" => "/home/gitlab/git-data"
          }
      })
    • 依次执行如下命令

      复制代码
      mkdir -p /home/gitlab/git-data
      chown -R git:git /home/gitlab/git-data
      gitlab-ctl stop
      gitlab-ctl reconfigure
      gitlab-ctl start
      • 若默认存放路径中已存在项目,则需要将已存在的所有项目(@hashed目录下所有内容)拷贝到新指定的@hashed目录下

      • 若出现storage_directory[/home/spring/gitlab/...](gitlab::gitlab-rails line 104) had an error: Mixlib::ShellOut::ShellCommandFailed类似错误,则需要设置/home/gitlab目录也为git用户,即执行如下命令:

        复制代码
        chown -R git:git /home/gitlab
      • 在/home/gitlab/git-data目录下会生成repositories目录

  • 更改仓库备份位置:切换到root用户下操作

    • 默认备份文件存储位置:/var/opt/gitlab/backups

    • 自定义存放位置:/home/gitlab/backups

    • 修改配置文件/etc/gitlab/gitlab.rb,取消对gitlab_rails['backup_path']的注释,调整为:

      复制代码
      gitlab_rails['backup_path'] = "/home/gitlab/backups"
    • 依次执行如下命令

      复制代码
      mkdir -p /home/gitlab/backups
      chown -R git:git /home/gitlab/backups
      gitlab-ctl stop
      gitlab-ctl reconfigure
      gitlab-ctl start
  • 仓库备份(两块硬盘数据同步):在root用户下操纵

    • GitLab完整备份,执行如下其中一条命令

      复制代码
      gitlab-rake gitlab:backup:create # gitlab 12.2以下版本
      gitlab-backup create # gitlab 12.2以上版本
      • 会在设置的备份文件存储路径/home/gitlab/backups下生成.tar文件,如1719565848_2024_06_28_17.1.1_gitlab_backup.tar
    • 其它需要备份的文件

      • /etc/gitlab/gitlab.rb # 配置文件
      • /etc/gitlab/gitlab-secrets.json # 数据库加密密钥等
      • /var/opt/gitlab/nginx/conf # nginx配置文件
      • /etc/postfix/main.cfpostfix # 邮件配置
    • 自动备份

      • 编辑crontab文件,执行:crontab -e,编辑文件内容如下,每晚12点执行备份

        复制代码
        0 0 * * * gitlab-backup create
        0 0 * * * cp /etc/gitlab/gitlab.rb /home/gitlab/backups/
        0 0 * * * cp /etc/gitlab/gitlab-secrets.json /home/gitlab/backups/
        0 0 * * * cp -a /var/opt/gitlab/nginx/conf /home/gitlab/backups/
      • 重启crontab服务,执行如下命令

        复制代码
        service cron restart
      • 注:备份时需要保持GitLab处于正常运行状态

    • 设置备份过期时间

      • 打开/etc/gitlab/gitlab.rb文件,取消对gitlab_rails['backup_keep_time']的注释,调整为如下内容:以秒为单位,设置希望保留每个备份的秒数,这里设置为保存30天

        复制代码
        gitlab_rails['backup_keep_time'] = 2592000
      • 依次执行如下命令

        复制代码
        gitlab-ctl stop
        gitlab-ctl reconfigure
        gitlab-ctl start
    • GitLab备份恢复,依次执行如下命令

      复制代码
      gitlab-ctl stop unicorn # 停止相关数据连接服务
      gitlab-ctl stop sidekiq
      gitlab-rake gitlab:backup:restore BACKUP=1719565848_2024_06_28_17.1.1 # 编号,1719565848_2024_06_28_17.1.1_gitlab_backup.tar,输入两次yes
      gitlab-ctl start
      • 注:GitLab版本号要相同
  • GitLab迁移

    • 在新服务器上安装相同版本的GitLab
    • 将备份生成的备份文件拷贝到新服务器的相同目录下
  • 添加新用户

    • 进入:http://192.168.18.215/admin , 点击:Overview --> Dashboard
      • 点击 New user: 填写Name, Username, Email,如Name:fengbingchun; Username: fengbingchun; Email: fengbingchun@163.com
        • 取消勾选:can create top level group
        • Projects limit: 若设置为0,则新用户不允许创建项目
        • 点击 Create user
      • 点击Edit进入后:设置密码、也可重新编辑用户
    • 注:新用户首次登录,要求修改密码
  • 编辑用户

    • 进入:http://192.168.18.215/admin , 点击:Overview --> Dashboard --> Latest users
      • 点击要编辑的用户,点击Edit
      • 修改,然后点击Save changes
  • 删除用户

    • 进入:http://192.168.18.215/admin , 点击:Overview --> Dashboard --> Latest users
      • 点击要删除的用户,点击三个"竖点",点击"Delete user"
      • 需要确认,根据提示输入,然后点击Delete suer按钮
    • 注:删除用户后无法撤销或恢复,可用Block user替代
  • 添加新组

    • 进入:http://192.168.18.215/admin , 点击:Overview --> Groups --> New group
      • Group name:如soft
      • 其它项使用默认
      • 点击Create group
      • 一个组是多个项目的集合
      • 每个部门可创建一个组,部门下的项目全放在此组下
      • 组的成员只能查看他们有权访问的项目
      • 现有的项目可以移动到组中
  • 创建新项目

    • 左键点击用户图标左侧的"+" --> 点击New project/repository --> 点击Create blank project
      • Project name: 如test
      • Project URL:如果此项目是某个组中的,则点击Pick a group or namespace,选择一个组;否则此项目不属于任何组
      • 其它使用默认
      • 点击Create project
  • 将用户添加到项目

    • 进入到项目:点击Manage --> Members: 点击Invite members
      • Username,name or email address:已存在的用户
      • Select a role: 一般为Developer或Maintainer
      • 点击Invite
    • 注:角色(role)如果为Developer则默认不能向protected分支提交code
  • 设置/取消指定分支为protected

    • 进入项目页:Settings --> Repository --> Protected branches:点击Expand:
      • 取消protected: 点击指定分支为Unprotect
      • 设置protected: 点击Add protected branch
        • Branch:选择一个分支
        • Allowed to merge:一般选择Maintainers角色
        • Allowed to push and merge:一般选择Maintainers角色
        • 点击Protect
    • 注:默认受保护分支不允许Developer直接push code,也没有merge权限
  • 取消merge后增加的新的commit ID

    • 提交merge request时勾选squash commits when merge request is accepted或merge时勾选squash commit:好像不起作用
    • 调整GitLab的默认merge策略:进入项目
      • Settings --> Merge requests: 勾选:Fast-forward merge,默认勾选的是Merge commit: 点击Save changes
  • 设置未登录用户的默认语言为中文

    • 进入:http://192.168.18.215/admin , 点击:Settings --> Preferences --> Localization
    • Default language:选择Chinese, Simplified - 简体中文(92% translated)
    • 点击 Save changes
  • 设置用户在没有活动的情况下保持登录的时间,如设置为5分钟

    • 进入:http://192.168.18.215/admin , 点击:Settings --> General

    • Session duration(minutes):5

    • 点击 Save changes

    • 依次执行如下命令

      复制代码
      gitlab-ctl stop
      gitlab-ctl reconfigure
      gitlab-ctl start
  • GitLab Web界面显示中文:每个用户单独设置

    • 进入主页后,点击用户头像,然后点击"preferences"
      • Localization: Language:选择Chinese, Simplified - 简体中文(92% translated)
      • 点击 Save changes
      • 刷新页面即可
  • GitLab同个账号不能同时登录多个PC机:每个用户单独操作

    • 可通过撤销非本机的Active Sessions来防止登录多个PC机
      • 点击用户图标 --> Preferences --> Active Sessions:移除掉非当前session的所有其它项
  • 双重认证(two-factor authentication(2FA)):每个用户单独操作

    • 获取验证码
      • 手机应用商店上安装Authenticator,由微软开发
      • 登录GitLab: 点击用户图标 --> Preferences --> Account --> 点击"Enable two-factor authentication"
      • 打开手机的Authenticator,扫描二维码
      • 输入current password
      • 输入verification code:Authenticator显示的一次性密码代码,长度为6位,每30秒更新一次
      • 保存或下载恢复码:点击Copy codes或Download codes,保存的文件名为gitlab-recovery-codes.txt,此文件非常重要,在收不到验证码时,可使用此恢复,并且只能使用一次
      • 点击Proceed
    • 设置Tokens: 点击用户图标 --> Preferences --> Access Tokens:启用双重认证后,git clone/pull/push code时,需要使用token作为密码
      • 点击"Add new token"
      • 填写Token name:可任意填写,如test
      • 填写Expiration date:最长截止日期为1年
      • Select scopes:必须勾选read_repository和write_repository
      • 点击"Create personal access token"
      • 复制保存个人token
    • 注:首次clone代码时,需要填写用户名和密码,此密码为个人token而不是登录密码
  • 取消双重认证:每个用户单独操作

    • 点击用户图标 --> Preferences --> Account:点击Manage two-factor authentication
    • Disable two-factor authentication: 输入用户密码,点击Disable two-factor authentication,再点击Disnable
  • 关闭Auto DevOps

    • 进入:http://192.168.18.215/admin , Settings --> CI/CD
    • 点击"Continuous Integration and Deployment":
    • 取消勾选:Default to Auto DevOps pipeline for all projects、Enable instance runners for new projects
    • 点击 Save changes
  • 管理员常用设置汇总

    • 新建项目、新建用户、新建群组
    • 编辑/删除所有项目、编辑/删除用户、编辑/删除群组
    • 监控:系统信息(可查看CPU数、内存使用情况、磁盘使用情况)、后台任务、运行状况检查
    • 项目的可见性与访问控制
    • 设置用户是否可创建项目及可创建的数目(默认为100000)以及是否允许用户创建顶级群组
    • 设置项目创建期间可从GitHub、Bitbucket源导入
    • 设置项目中支持的单个文件的最大大小,默认为100MiB
    • 设置新用户最小密码长度、是否需电子邮件确认
    • 设置是否强制执行双重认证
    • 设置新项目默认分支名称、默认分支保护、允许向保护分支push的角色(Developers、Maintainers)
    • 设置未登录用户的默认语言
    • 设置会话持续时间(用户在没有活动的情况下保持登录的时间)
  • 注:

    • GitLab使用的是UTC时间,即GitLab Web端显示的是UTC时间:UTC+8小时=北京时间
    • 不要在非个人机上clone code时输入个人GitLab用户名和密码,会被Git的凭证助手记录(Git Credential Manager),删除此凭证
      • windows:
        • 控制面板 --> 用户账户 --> 凭据管理器 --> 管理Windows凭据 --> 找到git:http://192.168.18.215: 将其删除
        • 若有~/.git-credentials文件,将其删除
      • ubuntu:若有~/.git-credentials文件,将其删除
相关推荐
明月心9521 天前
git remote add 用法
gitlab
only_Klein1 天前
jenkins流水线报错:Connection reset by peer
ci/cd·kubernetes·gitlab·jenkins·ssl
梁萌2 天前
docker部署gitlab和gitlab runner
docker·eureka·gitlab
johnnyAndCode2 天前
Idea 设置GitLab时使用账密,而不是token的配置方法
gitlab·idea
天外飞雨2 天前
Gitlab使用
gitlab
BUTCHER53 天前
GitLab SSH 密钥配置
运维·ssh·gitlab
明月心9523 天前
GitLab使用
gitlab
明月心9524 天前
gitlab pull requets
gitlab
BUTCHER54 天前
GitLab基本设置
gitlab
张小凡vip4 天前
Kubernetes---gitlab的ci/cd发布基于k8s的项目示例参考
ci/cd·kubernetes·gitlab