GitLab安装

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
sudo echo "deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/gitlab-ce.list
sudo apt-get update
sudo apt-get install gitlab-ee

修改/etc/gitlab/gitlab.rb文件,尤其是external_url,可以改为局域网的域名,例如code.io

然后执行sudo gitlab-ctl reconfigure,在执行该命令后24小时内,管理员密码会被删除,位置在/etc/gitlab/initial_root_password,账号名为root

dns解析设置

由于bind9一直设置不好,使用的是coredns。

首先得安装docker,这一步略去

首先得停掉systemd-resolved的服务,不然53端口会被占用

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

然后创建文件/etc/coredns/corefile

内容为:

.:53 {
    hosts {
        # ip host
        192.168.111.22 code.io
        fallthrough
    }
    # forward . dns-1 dns-2
    forward . 114.114.114.114
    log
}
# 启动容器
docker run -it -d --name dns --net=host -v /etc/coredns:/etc/coredns/ coredns/coredns:latest -conf /etc/coredns/corefile
# 设置自动重启
docker update --restart=always dns

然后把内网的路由器的dns服务器设置为当前电脑的ip,连上该路由器的电脑都能自动解析该域名到GitLab了

GitLab Runner设置

安装

# 下载
# amd64
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
# arm64,可以给Jetson使用
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_arm64.deb"
# 安装
sudo dpkg -i gitlab-runner_amd64.deb
# 以gitlab-runner用户安装,runner类型为shell
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 启动
sudo gitlab-runner start

注册 shell runner

GitLab管理员添加一个runner,然后在创建后的页面复制token,保持该页面,在runner机器上运行

sudo gitlab-runner register \
  --non-interactive \
  --url "https://code.io/" \
  --token "$RUNNER_TOKEN" \
  --executor "shell" \
  --description "my runner"

等待网页发生变化提示创建成功即可使用

runner的配置文件默认在/etc/gitlab-runner/config.toml

检查

sudo gitlab-runner verify
sudo gitlab-runner health-check
sudo gitlab-runner status

磁盘休眠设置

安装hdparm

sudo apt install hdparm

执行fdisk -l查看分区名称,然后打开/etc/hdparm.conf

/dev/sda {
        spindown_time = 120
        apm = 128
}

然后可以通过sudo hdparm -C /dev/sda查看磁盘状态,如果磁盘一直没有休眠,可以用sudo lsof /dev/sda查看访问磁盘的进程

GitLab备份

备份到磁盘的脚本

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H-%M-%S")
gitlab-rake gitlab:backup:create BACKUP=$DATE
cp /etc/gitlab/gitlab.rb /disk0/backup/gitlab/$DATE-gitlab.rb
cp /etc/gitlab/gitlab-secrets.json /disk0/backup/gitlab/$DATE-gitlab-secrets.json

脚本中备份了secrets.json,这很重要,不然恢复后很多东西用不了

TODO: 恢复脚本

优化内存占用

GitLab占用内存过多经常导致gcc编译崩溃

目前参考 该文章的方案暂时修改了一些配置

ruby {title="/etc/gitlab/gitlab.rb"} sidekiq['concurrency'] = 15 postgresql['shared_buffers'] = '256M' postgresql['max_worker_processes'] = 8