本篇要解決的問題
有時公司會使用自架的 Git Server,而不是直接使用現有的 GitHub、GitLab,本篇是使用 Docker,在本機安裝 GitLab,再加上 GitLab Runner,這樣就可以有自己的版控功能,也可以寫檔案做自動化測試。
跟一般教學文不同的是,大部份自架 GitLab,都會講到怎麼裝上 SSL。
但 August 實測後發現,本機產生的憑證會一直有問題,即便用的是 OpenSSL,也沒有辦法推拉專案,所以本篇不會有裝 SSL 的部份。
如果有知道怎麼在本機 Docker 裝 SSL 的棒油,歡迎留言提供方式。
準備好 docker-compose.yml
新增一個名為「gitlab」的資料,裡面新增三個資料夾,以及一個 yml 檔,如下:
gitlab
├─config
├─data
├─logs
└─docker-compose.yml
docker-compose.yml 的內容:
services:
gitlab:
image: gitlab/gitlab-ce
container_name: gitlab-docker
hostname: "gitlab.enrf"
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "http://192.168.11.111:8807"
letsencrypt['enable'] = false
volumes:
- "C:/Docker/gitlab/gitlab/config:/etc/gitlab"
- "C:/Docker/gitlab/gitlab/logs:/var/log/gitlab"
- "C:/Docker/gitlab/gitlab/data:/var/opt/gitlab"
ports:
- "8807:8807"
- "8808:22"
external_url 'https://192.168.11.111:8807'
,這邊的 IP 請改成自己的 IP,因為目標是建起來後,同網域的大家都可以使用,所以填寫的是 192.168 開頭的。
Port 的部份,因為 August 本機的 80、22 都被別的程式佔用了,所以改用別的 Port。
開啟終端機,執行:
docker-compose up -d
執行完後,當看到 Container 被建起來了,大概還要再等 5 分鐘,網站才打得開。
打開瀏覽器,網址輸入我們寫在 docker-compose.yml 上的,像這邊的範例就是:http://192.168.11.127:8807
找出管理員預設密碼
看到了 GitLab 架好後,問題來了,GitLab 預設會提供一組管理員的帳號,登入這個帳號的帳密是什麼?
預設帳號是:root。
密碼的部份,我們的資料夾裡,剛有開了一個「config」的空資料夾,當 GitLab 安裝好,會看到裡面多了很多檔案,其中有一個叫:
initial_root_password
打開這個檔案,就會看到預設密碼:
安裝 GitLab Runner
GitLab Runner 要另外安裝,不直接裝在 GitLab 的專案裡。
新開名為「gitlab-runner」的資料夾,裡面放一個 docker-compose.yml 的檔案。
docker-compose.yml 的內容:
services:
gitlab-runner:
image: "gitlab/gitlab-runner:latest"
container_name: "gitlab-runner"
restart: always
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "D:/Docker/gitlab-runner/gitlab-runner/config:/etc/gitlab-runner"
environment:
- "CI_SERVER_URL={GitLab URL}"L
- "REGISTRATION_TOKEN={Runner 註冊 token}"
有二個地方要修改。
第一個,CI_SERVER_URL
要填寫的是我們 GitLab 的網址,像本篇的範例就是填:http://192.168.11.111:8807。
第二個,REGISTRATION_TOKEN
,這要從 GitLab 後台建立 Runner 時取得,步驟如下。
1 登入管理員帳號後,照下圖的順序點擊:
接著會開始填寫 Runner 的資料,都選好、填好後,點擊「創建執行器」,下一個畫面,就會看到 token:
把 token 貼上 docker-compose.yml 上,然後開啟終端機,執行:
docker-compose up -d
執行完後,Container 上就會看到 gitlab-runner 正在運行。
接著終端機上繼續輸入以下並執行:
docker-compose exec gitlab-runner gitlab-runner register
執行後,會需要回答幾個問題。
URL、token,因為我們在運行 docker-compose 時都先填了,所以可以直接按下 Enter 確認。
後續的題目,因為 August 這邊只是為了測試 Runner 能不能執行,所以都先簡單回答:
Enter an executor: docker
Enter the default Docker image: alpine:latest
建立成功時,會顯示一個訊息:
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
意思就是 Runner 的 config 檔已經建立在 /etc/gitlab-runner/config.toml 裡。
我們所在的 gitlab-runner 資料夾,也會看到這個檔案,打開來會看到內容。
測試 Runner
為了測試 Runner 有沒有活跳跳,我們建一個專案來測試。
建專案時可以直接用 GitLab 提供的範本,這邊 August 選用「Pages/Plain HTML」這個。
建好後,把專案 clone 到我們本機,因為是範本建立的,所以本身就會有一個「.gitlab-ci.yml」,這個檔就是觸發我們 Runner 用的。
範本裡的這個檔案,原本的寫法是把專案架成靜態頁面,因為我們沒有做其他配置,所以執行起來一定會失敗。
幾年前 August 有寫一篇,是怎麼用 GitLab 來架靜態頁的方法,有興趣的朋友再自行研究囉:
GitLab Pages:3 + 3 個步驟讓 GitLab 專案產生靜態頁
這邊是為了測試,我們簡單的用個 tidy 來測試 html,把 .gitlab-ci.yml 的內容改成以下:
stages:
- test
test_job:
image: alpine:latest
stage: test
before_script:
- apk update
- apk add tidyhtml
script:
- echo "Running basic test..."
- find . -name "*.html" | xargs tidy -q -e
tags:
- runner
tags 寫 runner
,是 August 在建立 Runner 時,有寫要認這個 tag 才會執行 Runner。
修改好後,推上 GitLab。
進到 GitLab 後台的專案裡,左側導覽列點擊「建置」>「流水線」,專案通過、失敗,都會看到圖示:
以上,便是怎麼在 Windows 的本機,用 Docker 安裝 GitLab,以及 GitLab Runner。
最後祝大家母親節快樂~
Top comments (0)