GitLab安装

1curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
2sudo echo "deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/gitlab-ce.list
3sudo apt-get update
4sudo 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端口会被占用

1sudo systemctl stop systemd-resolved
2sudo 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
}
1# 启动容器
2docker run -it -d --name dns --net=host -v /etc/coredns:/etc/coredns/ coredns/coredns:latest -conf /etc/coredns/corefile
3# 设置自动重启
4docker update --restart=always dns

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

GitLab Runner设置

安装

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

注册 shell runner

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

1sudo gitlab-runner register \
2  --non-interactive \
3  --url "https://code.io/" \
4  --token "$RUNNER_TOKEN" \
5  --executor "shell" \
6  --description "my runner"

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

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

检查

1sudo gitlab-runner verify
2sudo gitlab-runner health-check
3sudo gitlab-runner status

磁盘休眠设置

安装hdparm

1sudo 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备份

备份到磁盘的脚本

1#!/bin/bash
2
3DATE=$(date +"%Y-%m-%d_%H-%M-%S")
4gitlab-rake gitlab:backup:create BACKUP=$DATE
5cp /etc/gitlab/gitlab.rb /disk0/backup/gitlab/$DATE-gitlab.rb
6cp /etc/gitlab/gitlab-secrets.json /disk0/backup/gitlab/$DATE-gitlab-secrets.json

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

TODO: 恢复脚本

优化内存占用

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

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

/etc/gitlab/gitlab.rb
1sidekiq['concurrency'] = 15
2postgresql['shared_buffers'] = '256M'
3postgresql['max_worker_processes'] = 8