Gitlab CI/CD 自架 Gitlab 與 Gitlab-Runner 主機

前言

上次我們講到 Gitlab 的 Executor 種類,今天我們要來教更經典的自架 Gitlab 與 Gitlab-Runner 主機,Gitlab 有兩個版本,一個是社群版,另一個是企業版,我們這次用 Docker 來安裝 Gitlab 社群版,快速安裝完成 Gitlab,另一方面這樣子的話才可以真正體驗到,自動化的樂趣。

準備虛擬機

首先我們先準備一台虛擬機,我們這裡準備一台 Ubuntu Server


修改 ssh 連線埠號

使用下面指令修改 ssh 連線 port 號,因為 Gitlab 也會啟動 ssh 連線會跟本機衝突。

sudo vim /etc/ssh/sshd_config

這來這裡看各位想改多少 port 存檔

接著重啟 ssh service

sudo systemctl restart ssh

安裝 Docker

接下來我們來安裝 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

開始安裝 Gitlab

首先我們先準備好 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 後,我們需要知道 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 伺服器,記得密碼要去改

留言

此網誌的熱門文章

Docker 之建立與使用 Docker Image 清理本地 Image

Docker 之建立與使用 Docker Image 雲端下載

Docker 之如何安裝 Docker 容器