註冊 GitLab Runner use Shell

原本是在 Runner 內使用 ssh 直接去做佈署, 但是這樣很沒有效率 失誤率也很高, 所以之後會打算使用 Ansible 來做佈署動作, 不過不管哪一種都是需要使用將GitLab Runner 安裝在宿主主機上, 而不是透過 GitLab Runner in Docker 的這種方式, 因為不管要存取 SSH 金鑰還是鑰呼叫 ansible-playbook 都是直接安裝在宿主主機比較方便啊.

這邊就簡單介紹如何配置跟註冊, 並使用簡單的 shell 來操作遠端機器

Install GitLab Runner using the official GitLab repositories

教學網址 Install GitLab Runner using the official GitLab repositories

我是使用 CentOS 就按照步驟做吧

Add GitLab’s official repository

1
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

Install the latest version of GitLab Runner

1
sudo yum install -y gitlab-runner

好的, 再來是註冊 runner

1
2
3
4
5
6
7
8
sudo gitlab-runner register \
--non-interactive \
--url "http://dev-gitlab-depoly.samchu.com/" \
--registration-token "213" \
--executor "shell" \
--description "sam-vm" \
--run-untagged \
--locked="false"

註冊成功後就會寫入到 /etc/gitlab-runner/config.toml

如果你註冊兩個應就會像是這樣

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ sudo cat /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[session_server]
session_timeout = 1800

[[runners]]
name = "sam-vm"
url = "http://dev-gitlab-depoly.samchu.com/"
token = "1245ygfsf2rwerw644t"
executor = "shell"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]

[[runners]]
name = "sam-vm2"
url = "http://dev-gitlab-depoly.samchu.com/"
token = "xdaceAmczojuSGyyxERn"
executor = "shell"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]

如果需要移除所有 Runner

1
sudo gitlab-runner unregister --all-runners

或是暴力一點直接殺檔案, 之後再到網頁上自己移除

1
sudo rm /etc/gitlab-runner/config.toml

問題排除

1.Runner Clone 位置錯誤

如果你發現 runner 活著, 但它 git clone 的位置老是錯誤, 有可能是一開始的 GitLab 就認錯了, 所以 Runner 也會記錯, 解決方法是 提供給它 clone 的正確位置

1
2
3
4
sudo sed -i \
-e '/^ executor/a\ clone_url = "https://dev-gitlab.samchu.com"' /etc/gitlab-runner/config.toml

sudo gitlab-runner restart

2.Runner 執行時預設的 User

預設會建一個 gitlab-runner 用戶來執行, 可以移除後再安裝並指定用戶為 centos, 但是某個時間點又會跳回 gitlab-runner 導致腳本錯誤, 所以這做法就不採用了,如果有需要可參考下面指令

1
2
3
4
5
sudo gitlab-runner uninstall

sudo gitlab-runner install --working-directory /home/centos --user centos

sudo systemctl daemon-reload

創用 CC 授權條款
SAM的程式筆記 朱尚禮製作,以創用CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款釋出。