上次我們講到 Gitlab 的 Executor 種類,今天我們要來教更經典的自架 Gitlab 與 Gitlab-Runner 主機,Gitlab 有兩個版本,一個是社群版,另一個是企業版,我們這次用 Docker 來安裝 Gitlab 社群版,快速安裝完成 Gitlab,另一方面這樣子的話才可以真正體驗到,自動化的樂趣。
首先我們先準備一台虛擬機,我們這裡準備一台 Ubuntu Server
使用下面指令修改 ssh 連線 port 號,因為 Gitlab 也會啟動 ssh 連線會跟本機衝突。
sudo vim /etc/ssh/sshd_config
這來這裡看各位想改多少 port 存檔
接著重啟 ssh service
sudo systemctl restart ssh
接下來我們來安裝 Docker,在官網可以也可以查看怎麼安裝,我這邊直接把指令複製過來官網連結,先安裝 repository。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
在來安裝 Docker Package
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
在來我們將 Docker 加入使用者權限裡面,這樣才不用下 sudo 命令 docker 指令,先將 使用者名稱加入至 Docker 中
sudo usermod -aG docker $USER
再來切換使用者使用的群組
newgrp docker
首先我們先準備好 docker compose 腳本,建立一個叫 docker-compose.yml 的檔案,然後我們要安裝的 image 是 gitlab-ce 及 gitlab-runner,腳本有幫各位寫好了
version: "3.8"
services:
gitlab-ce:
container_name: gitlab-ce
restart: always
image: 'gitlab/gitlab-ce:latest'
hostname: 192.168.18.136
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.18.136'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
gitlab-runner:
container_name: gitlab_runner
restart: always
image: gitlab/gitlab-runner:latest
volumes:
- /srv/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
接著我們使用 docker compose 啟用 gitlab 及 gitlab-runner 變開始安裝
docker compose up -d
注意事項:
比較需要注意的是 gitlab-ce 這個 container,裡面的 hostname 及 GITLAB_OMNIBUS_CONFIG 裡的 external_url,必須設定好虛擬機的 ip,這樣 gitlab 運行才會順利。
過幾分鐘輸入我們虛擬機的 ip 地址就可以看到我們 gitlab 成功安裝
安裝好 gitlab 後,我們需要知道 gitlab 的 root 權限密碼,先查看 gitlab 的 container id 是什麼
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbafc34e717c gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 16 minutes ago Up 15 minutes gitlab_runner
5473ca18b304 gitlab/gitlab-ce:latest "/assets/wrapper" 16 minutes ago Up 8 minutes (healthy) 0.0.0.0:22->22/tcp, :::22->22/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp gitlab-ce
接下來進到 gitlab bash 裡面
docker exec -it 5473ca18b304 bash
在來查看密碼檔位置
cat /etc/gitlab/initial_root_password
有如以下這就是密碼,用這碼密碼登入後,記得馬上改成自己的密碼,這把密碼只有 24 小時效用
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: BIXFMiwwYPQbAFX8LfhtPnMfi9cFy+yNRadGnlMRVRA=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
登入後有如以下圖示,這樣就可以是用我們的 Gitlab 伺服器,記得密碼要去改