How to run GitLab CI Runner in Docker container?

如何使用 Docker 架設 GitLab CI Runner 跑自動化部署?

一枝莉莉
6 min readMar 9, 2021

Let’s getting start!

Environment & Tools

  • Mac
  • Docker
  • GitLab

Work Flow

  1. Install Docker
  2. Get CI Runner token
  3. Register runner on Docker

First — Install Docker

Step 1. 使用 Homebrew 安裝 Docker (前提 Homebrew 已安裝)

$ brew cask install docker

Step 2. 啟動 Docker for mac

$ open /Applications/Docker.app

Step 3. 安裝完 Docker 後

首先要開始註冊 Gitlab CI Runner
在註冊前要先知道自己 Gitlab CI 的 Runner token

Homebrew是一款自由及開放原始碼的軟體套件管理系統,用以簡化macOS系統上的軟體安裝過程,最初由馬克斯·霍威爾寫成。因其可延伸性得到了一致好評,而在Ruby on Rails社群廣為人知。 Homebrew使用GitHub,通過用戶的貢獻擴大對軟體包的支援。 (維基百科)

Second — Get CI Runner token

Gitlab提供3種Runner權限

What’s types of GitLab runner?
1. Shared Runner
2. Group Runners
3. Specific Runner

Shared Runner

當數個專案的 CI/CD job 都有相同的需求,可以節省為了每一個專案各開一個 Runner ,而導致可能性的閒置。Runner 會根據 Project 正在運行的 job 來挑選接下來要運行的 job ,可避免有某個 Project 過量的 job 導致其他 project 的 job 無法執行。

如果是全repo共用的token要進入admin頁面並且選Runners頁面,就能找到你網站對應的URL與token。

Group Runners

該 Group 下的所有 Project 皆有此 Runner 的權限。採用 FIFO 來處理 jobs。

Specific Runner

當組織中的多個專案 CI/CD job 需求的環境差很多時,需要採用這個來確保環境的隔離。此 Runner 採用 FIFIO 來處理 jobs。

假如是要註冊對特定repo使用的runner則是進入repo後點選 Setting -> CI/CD 然後點選頁面的Runner

Third — Register runner on Docker

有了URL及token就能開始註冊runner

Step 1. 啟動 gitlab-runner (Use Docker Volume way)

  1. 建立 Docker Volume
$ docker volume create gitlab-runner-config

2. 啟動服務並且連接到剛建立的 Docker Volume

$ docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest

Step 2. Register Docker Runner (依照上個步驟的Docker Volume)

  1. 連結到 Gitlab 做 runner 的註冊
$ docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register

Step 3. 依序輸入相對應的資訊

  1. 輸入你的 Gitlab URL
$ Please enter the gitlab-ci coordinator URL

可在 Project (sidebar) -> Settings -> Runners -> “Set up a specific Runner manually” 的第二項

2. 輸入 Gitlab-ci 的 token

$ Please enter the gitlab-ci token for this runner

同上的第三項

3. 輸入你想在 Gitlab 呈現的 runner 說明/名稱

$ Please enter the gitlab-ci description for this runner

4. 輸入 此Runner相關的tag

$ Please enter the gitlab-ci tags for this runner (comma separated):

5. 輸入Runner的啟動

$ Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

可依照個人需求修改(多以 Docker 為例,因為 Docker 能做的事情非常多),一般輸入 “docker“。

6. 輸入你打算使用的 Default docker image

$ Please enter the Docker image (eg. alpine:latest):

如果上個問題是寫Docker,就會出現這個問題,

此設定為當gitlab-ci沒有指定要使用哪個Docker image執行的話,預設要用哪個Docker image。

此Docker image預設會從 Docker hub下載,也可以在 project 的.gitlab-ci.yml 自行設定 image。

Step 4. 接著會顯示如下的訊息表示安裝成功

$ Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

完成上面步驟就會自動連到 gitlab 網站。

Reference

--

--

一枝莉莉

Product Manager | 喜歡發現生活中的樂趣 | 左撇子 | 平時熱衷於觀察社會及研究 UI /UX 設計 | 愛上旅行 / 做甜點 / 影樂欣賞 / 瑜珈。