Building Your Team-GitLab仓储环境搭建

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

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

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

Docker版安装

环境准备

Docker 环境安装

在Linux服务器上安装Docker环境,具体可以参考:docs.docker.com/engine/inst...

开放端口号

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

Gitlab工作目录

bash 复制代码
/data/platform/07_gitlab/workspace

安装配置

Docker环境下安装gitlab

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

获取gitlab镜像

bash 复制代码
 docker pull gitlab/gitlab-ce:latest   

运行gitlab

docker run

bash 复制代码
  
    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

vbnet 复制代码
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'

启动

css 复制代码
docker-compose -p gitlab --compatibility up -d

访问gitlab容器

bash 复制代码
docker exec -it gitlab_web_1 bash

查看日志

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

查看镜像与容器信息

bash 复制代码
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

bash 复制代码
  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后升级需先执行

bash 复制代码
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:

bash 复制代码
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:

sql 复制代码
  docker exec -it gitlab update-permissions
  docker restart gitlab

Backup

lua 复制代码
gitlab-backup create
​

Restore

ruby 复制代码
cd /data/platform/07_gitlab/workspace-13.4.1-ce.0/data
rsync -av [email protected]:/etc/gitlab/ config
​
cd /data/platform/07_gitlab/workspace-13.4.1-ce.0/data
rsync -av [email protected]:/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.

bash 复制代码
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:

arduino 复制代码
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:

ini 复制代码
# 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

ini 复制代码
# 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权限问题

bash 复制代码
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","

bash 复制代码
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端口

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

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

    ruby 复制代码
    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

    安装GitLab软件包

    ini 复制代码
    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常用命令

bash 复制代码
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
rust 复制代码
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http://192.168.3.163:8082'

2.unicorn['port']

bash 复制代码
### Advanced settings
unicorn['listen'] = 'localhost'
unicorn['port'] = 8082

3.nginx['listen_port']

shell 复制代码
##! **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. 修改配置文件, 指定参数
bash 复制代码
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'] = "[email protected]"
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配置的发信人
perl 复制代码
# 继续修改配置
gitlab_rails['gitlab_email_from'] = "[email protected]"
user["git_user_email"] = "[email protected]"

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

复制代码
gitlab-ctl reconfigure
gitlab-ctl restart
  1. 测试

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

bash 复制代码
gitlab-ctl tail

参考

相关推荐
南菠湾1 小时前
如何在 Visual Studio Code 中配置SSH、Git 和 Copilot插件
git·vscode·ssh
asom222 小时前
GitFlow 工作模式(详解)
git
南菠湾4 小时前
How to set up SSH, Git and Copilot Extensions in Visual Studio Code
git·ssh·copilot
Jditinpc15 小时前
Git使用
git
貂蝉空大16 小时前
Git 常用命令大全
git
兔斯基灬木木19 小时前
【技术工具】源码管理 - GIT工具
git
工呈士20 小时前
Git 工作流与版本管理策略
前端·git·面试
C++ 老炮儿的技术栈21 小时前
文本文件与二进制文件的区别
大数据·c语言·开发语言·c++·git·算法·visual studio
MC皮蛋侠客1 天前
使用Gitlab CI/CD结合docker容器实现自动化部署
ci/cd·docker·gitlab
遇见火星1 天前
Jenkins 配置gitlab的 pipeline流水线任务
servlet·gitlab·jenkins