likes
comments
collection
share

Building Your Team-GitLab私有仓储环境搭建

作者站长头像
站长
· 阅读数 4

工欲善其事,必先利其器。

本文主要总结团队协助中,GitLab仓储环境搭建。

下文将分docker环境以及单机环境分别说明

Docker版安装

环境准备

Docker 环境安装

开放端口号

#开放9013端口号 
firewall-cmd --zone=public --add-port=9013/tcp --permanent   
#重载防火墙规则 
sudo firewall-cmd --reload

Gitlab工作目录

/data/platform/07_gitlab/workspace

安装配置

Docker环境下安装gitlab

参考docs.gitlab.com/ee/install/…

获取gitlab镜像

 docker pull gitlab/gitlab-ce:latest   

运行gitlab

docker run

  
    docker run --detach \
    -u root \
  --hostname gitlab.rd.avit.com.cn:9013 \
  --publish 443:443 --publish 9013:80 --publish 23:22 \
  --name gitlab \
  --volume /data/platform/07_gitlab/workspace-latest-ee/config:/etc/gitlab \
  --volume /data/platform/07_gitlab/workspace-latest-ee/logs:/var/log/gitlab \
  --volume /data/platform/07_gitlab/workspace-latest-ee/data:/var/opt/gitlab \
   --shm-size 256m \
  gitlab/gitlab-ee:latest

docker compose

version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    hostname: 'gitlab.rd.avit.com.cn'
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.rd.laird.com.cn:9013'
        gitlab_rails['gitlab_shell_ssh_port'] = 2200
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '9013:9013'
      - '443:443'
      - '465:465'
      - '2200:22'
    volumes:
      - '/data/platform/07_gitlab/workspace/config:/etc/gitlab'
      - '/data/platform/07_gitlab/workspace/logs:/var/log/gitlab'
      - '/data/platform/07_gitlab/workspace/data:/var/opt/gitlab'
     deploy:
      resources:
        limits:
          memory: 8g
    shm_size: '256m'

启动

docker-compose -p gitlab --compatibility up -d

访问gitlab容器

docker exec -it gitlab_web_1 bash

查看日志

docker logs -f gitlab_web_1

docker exec -it gitlab_web_1 bash
gitlab-ctl status
# 查看日志
gitlab-ctl tail gitaly
# 或者查看全文
cat /var/log/gitlab/gitaly/current

gitlab-ctl tail gitlab-rails

查看镜像与容器信息

docker images  # 查看镜像
docker ps -a  # 查看所有容器服务的状态
docker port gitlab  # 查看端口映射
docker inspect gitlab #查看容器的具体信息

登录及基础配置

登录Gitlab

Docker运行gitlab成功后,访问地址:http://ip:port,第一次登录需要输入管理员密码

升级

参考docs.gitlab.com/ee/update/

blog.csdn.net/shykevin/ar…

gitlab-com.gitlab.io/support/too…

升级需按版本路径依次升级,升级过程建议先备份、再升级

例如当前为13.4.1 升级到最新版本需先升级13.8.8 》13.12.15》14.0.12》14.3.6》14.9.5》14.10.5》15.0.5》15.1.6》15.4.6》15.11.8》16.0.3

  docker run --detach \
    -u root \
  --hostname 192.168.3.252\
  --publish 443:443 --publish 9013:80 --publish 23:22 \
  --name gitlab \
  --restart=always \
  --privileged=true \
  --volume /data/platform/07_gitlab/workspace/config:/etc/gitlab \
  --volume /data/platform/07_gitlab/workspace/logs:/var/log/gitlab \
  --volume /data/platform/07_gitlab/workspace/data:/var/opt/gitlab \
  gitlab/gitlab-ce:13.4.1-ce.0
  
  
    docker run --detach \
    -u root \
  --hostname 192.168.3.224\
  --publish 443:443 --publish 9013:80 --publish 23:22 \
  --name gitlab \
  --restart=always \
  --privileged=true \
  --volume /data/platform/07_gitlab/workspace/config:/etc/gitlab \
  --volume /data/platform/07_gitlab/workspace/logs:/var/log/gitlab \
  --volume /data/platform/07_gitlab/workspace/data:/var/opt/gitlab \
  gitlab/gitlab-ce:13.4.1-ce.0
  
  
     docker run --detach \
    -u root \
    -m 8g \
  --hostname gitlab.rd.avit.com.cn\
  --publish 8443:443 --publish 9013:80 --publish 822:22 \
  --name gitlab \
  --restart=always \
  --privileged=true \
  --volume /data/platform/07_gitlab/workspace/config:/etc/gitlab \
  --volume /data/platform/07_gitlab/workspace/logs:/var/log/gitlab \
  --volume /data/platform/07_gitlab/workspace/data:/var/opt/gitlab \
  -v /etc/localtime:/etc/localtime \
  -v /etc/timezone:/etc/timezone \
  gitlab/gitlab-ce:13.4.1-ce.0
  
  
     docker run --detach \
    -u root \
  --hostname 192.168.3.252\
  --publish 443:443 --publish 9013:80 --publish 23:22 \
  --name gitlab \
  --restart=always \
  --privileged=true \
  --volume /data/platform/07_gitlab/workspace-15.4.6-ce/config:/etc/gitlab \
  --volume /data/platform/07_gitlab/workspace-15.4.6-ce/logs:/var/log/gitlab \
  --volume /data/platform/07_gitlab/wworkspace-15.4.6-ce/data:/var/opt/gitlab \
  gitlab/gitlab-ce:15.4.6-ce.0

14.1后升级需先执行

gitlab-rake gitlab:background_migrations:finalize[<job_class_name>,<table_name>,<column_name>,'<job_arguments>']


docker exec -it gitlab gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,push_event_payloads,event_id,'[["event_id"], ["event_id_convert_to_bigint"]]']
 
docker exec -it gitlab gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"], ["id_convert_to_bigint"]]']

迁移

gitlab.com/gitlab-org/…

异常

在Gitlab迁移恢复数据出现must be owner of extension plpgsql解决方法

www.jianshu.com/p/09a2b0c25…

其他问题

Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file And restart this container to reload settings. To do it use docker exec:

Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
And restart this container to reload settings.
To do it use docker exec:

  docker exec -it gitlab vim /etc/gitlab/gitlab.rb
  docker restart gitlab

If this container fails to start due to permission problems try to fix it by executing:

  docker exec -it gitlab update-permissions
  docker restart gitlab

Backup

gitlab-backup create

Restore

cd /data/platform/07_gitlab/workspace-13.4.1-ce.0/data
rsync -av root@192.168.3.163:/etc/gitlab/ config

cd /data/platform/07_gitlab/workspace-13.4.1-ce.0/data
rsync -av root@192.168.3.163:/var/opt/gitlab/backups/ backups

First ensure your backup tar file is in the backup directory described in the gitlab.rb configuration gitlab_rails['backup_path']. The default is /var/opt/gitlab/backups. The backup file needs to be owned by the git user.

sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

Stop the processes that are connected to the database. Leave the rest of GitLab running:

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status

Next, ensure you have completed the restore prerequisites steps and have run gitlab-ctl reconfigure after copying over the GitLab secrets file from the original installation.

Next, restore the backup, specifying the timestamp of the backup you wish to restore:

# This command will overwrite the contents of your GitLab database!
# NOTE: "_gitlab_backup.tar" is omitted from the name
sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

docker

# backup
docker exec -it gitlab gitlab-backup create
# Stop the processes that are connected to the database
# Verify that the processes are all down before continuing
docker exec -it gitlab status

# Run the restore. NOTE: "_gitlab_backup.tar" is omitted from the name
docker exec -it gitlab gitlab-backup restore BACKUP=1686012534_2023_06_06_13.4.1

# Restart the GitLab container
docker restart gitlab

# Check GitLab
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=true

grafana权限问题

docker exec -it gitlab bash
chown -R gitlab-prometheus:root /var/opt/gitlab/grafana/data  # 修改权限
gitlab-ctl restart

gitaly启动问题

{"error":"open /var/opt/gitlab/gitaly/gitaly.pid: permission denied","

docker exec -it gitlab bash
ll /var/opt/gitlab/gitaly/gitaly.pid
chmod 777 /var/opt/gitlab/gitaly/gitaly.pid

单机版安装

GitLab环境说明

安装服务器:3.163-CentOS release 6.10 (Final)

安装路径: /var/opt/gitlab

配置路径: /etc/gitlab/gitlab.rb

GitLab安装说明

访问官方安装文档说明

gitlab 分为gitlab-ce和gitlab-ee,我们要安装ce社区版

gitlab-ce是社区版,免费的

gitlab-ee是企业版,收费的

  1. 安装依赖库和打开http、ssh端口

    sudo yum install -y curl policycoreutils-python openssh-server cronie
    sudo lokkit -s http -s ssh
    
    
  2. 安装邮件服务器,并设置开机启动

    sudo yum install postfix
    sudo service postfix start
    sudo chkconfig postfix on
    
  3. 添加GitLab仓库到yum源,并用yum方式安装到服务器上

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
    
    

    安装GitLab软件包

    sudo EXTERNAL_URL="http://192.168.3.163:8082" yum -y install gitlab-ee
    

    EXTERNAL_URL也可以安装完成后在/etc/gitlab/gitlab.rb中配置

  4. 访问hostname(http://192.168.3.163:8082 )并登陆

    首次访问默认账号为root

GitLab常用命令

sudo gitlab-ctl start    # 启动所有 gitlab 组件;
sudo gitlab-ctl stop        # 停止所有 gitlab 组件;
sudo gitlab-ctl restart        # 重启所有 gitlab 组件;
sudo gitlab-ctl status        # 查看服务状态;
sudo gitlab-ctl reconfigure        # 启动服务;
sudo vim /etc/gitlab/gitlab.rb        # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
sudo gitlab-ctl tail        # 查看日志;

GitLab端口号配置

  1. 修改配置文件, 指定参数external_url
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http://192.168.3.163:8082'

2.unicorn['port']

### Advanced settings
unicorn['listen'] = 'localhost'
unicorn['port'] = 8082

3.nginx['listen_port']

##! **Override only if you use a reverse proxy**
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port
nginx['listen_port'] = 8082

GitLab邮件配置

邮件是GitLab不得不配置的一块, 它提供了代码提交提醒, 用户密码找回等功能. GitLab也提供了几种邮件配置方案, 有使用sendmail, postfixsmtp, 这里只介绍smtp, 其中sendmail太过于古老, 现在几乎被postfix替代了, 而postfix配置没有smtp方便, 当然, 最主要的还是不想启动postfix邮件服务器, 直接用第三方的服务

  1. 修改配置文件, 指定参数
vi /etc/gitlab/gitlab.rb

# 依次修改
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.mxhichina.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab@yinnote.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "yinnote.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false

这里以阿里云企业邮箱配置为例子, 注意smtp端口号, 加密和不加密是不一样的

  1. 修改gitlab配置的发信人
# 继续修改配置
gitlab_rails['gitlab_email_from'] = "gitlab@yinnote.com"
user["git_user_email"] = "gitlab@yinnote.com"

当修改完成后, 记得重新加载配置并重启

gitlab-ctl reconfigure
gitlab-ctl restart
  1. 测试

这个相对来讲就比较简单了, 你可以到登录页面, 点击忘记密码, 看是否有邮件发送过来, 正常情况会发送一封重置密码的邮件, 否则就得自己找原因了, 通过下列命令监听日志打印

gitlab-ctl tail

参考