公司裡有一台 gitlab server,但是沒有人在更新,也沒有安裝 CI。

一開始使用覺得沒什麼差,經過沒幾天當我想要試試 CI/CD 時, 突然覺得沒有 CI/CD 的 Gitlab 跟本是個廢物。

所以我自己試著重新安裝了一台 Gitlab + Gitlab-CI。

用 APT 在 Ubuntu 上安裝 gitlab

先安裝基本的套件

1
2
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

加入 gitlab 套件庫

1
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

安裝 gitlab

1
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce

安裝完畢之後,就可以開 Browser 登入 Gitlab 了,預設的帳號是 root

我用 vm 試過之後,覺得用這方法當要更新時,可能會有點麻煩,所以就改試 Docker 的方法

用 Docker 執行 gitlab

前置作業就是在 server 上安裝 docker

接來執行以下 docker 指令,就有一個 gitlab 服務了

1
2
3
4
5
6
7
8
9
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

用 Docker 安裝 gitlab runner

執行以下 docker 指令

1
2
3
4
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

用 docker-compose 安裝 gitlab+gitlab-ci

直接使用 docker-compose 更直接快速的執行 gitlab 跟 runner 服務

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: "3"
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224        
    ports:
      - '80:80'
      - '443:443'
      - '2224:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
  runner:
    image: 'gitlab/gitlab-runner:latest'
    restart: always
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/srv/gitlab-runner/config:/etc/gitlab-runner'

如果要更新,只要兩個指令

1
2
docker-compose pull
docker-compose up -d

把 runner 註冊到 gitlab 裡

先到 Admin Area > Overview > Runners 頁面,找到 registration token

執行 register 指令

1
docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

選項請參考官網 https://docs.gitlab.com/runner/register/

如果 Gitlab 有啟用 SSL,你可能需要帶上 crt file

1
2
docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  --tls-ca-file=/srv/gitlab/config/ssl/gitlab.example.com.crt

回到 Admin Area > Overview > Runners 頁面,看到 runner 的資料出現了。

之後就是試用 Gitlab-CI 的時間了!


Reference