本文作者:徐曉偉
GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。
基於 CentOS 和 極狐GitLab 官方倉庫指令碼 安裝/配置 GitLab Runner
文件
-
安裝 極狐GitLab Runner
-
自簽名證書或自定義證書頒發機構
-
配置 Runner
-
GitLab runner 最新版手動下載
- v15.6.0 手動下載
-
自簽名證書或自定義證書頒發機構
-
極狐GitLab Runner 高階配置
安裝 GitLab Runner
-
安裝
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash yum -y install gitlab-runner
-
使用 root 使用者執行 GitLab Runner
- __根據使用者的需要操作此步驟,讓 GitLab Runner 使用 root 使用者執行流水線,可能會帶來風險,如:流水線中寫了 rm -rf /** __
- 推薦使用 Docker 執行前,防止出現上述情況
# 以下設定在升級 GitLab Runner 後將失效,需要重新設定一次 # 檢視當前 runner 執行的使用者 ps aux | grep gitlab-runner # 刪除gitlab-runner sudo gitlab-runner uninstall # 安裝並設定--user(例如我想設定為root) gitlab-runner install --working-directory /home/gitlab-runner --user root # 重啟gitlab-runner sudo service gitlab-runner restart # 再次執行會發現--user的使用者名稱已經更換成root了 ps aux | grep gitlab-runner
-
配置證書信任
# 自己生成的證書,如果不進行信任,註冊時可能出現的問題: # ERROR: Registering runner... failed runner=6iuLhyWx status=couldn't execute POST against https://gitlab.example.com/api/v4/runners: Post "https://gitlab.example.com/api/v4/runners": x509: certificate is not valid for any names, but wanted to match gitlab.example.com # 下列執行時,需要本機能使用 GitLab 域名訪問 # 可以修改 本機 /etc/hosts 檔案解決 # 如果域名未解析,會出現 # ERROR: Registering runner... failed runner=z4uLTqoa status=couldn't execute POST against https://gitlab.example.com/api/v4/runners: Post "https://gitlab.example.com/api/v4/runners": dial tcp: lookup gitlab.example.com on 192.168.61.2:53: no such host # 如果建立證書時,未設定“Common Name (e.g. server FQDN or YOUR name) []”時,會出現 # ERROR: Registering runner... failed runner=z4uLTqoa status=couldn't execute POST against https://gitlab.example.com/api/v4/runners: Post "https://gitlab.example.com/api/v4/runners": x509: certificate is not valid for any names, but wanted to match gitlab.example.com # 重新設定了域名證書,需要執行 sudo gitlab-ctl restart,如果修改了 /etc/gitlab/gitlab.rb 檔案,需要先執行 sudo gitlab-ctl reconfigure,再執行 sudo gitlab-ctl restart # 生成的證書不滿足GitLab Runner的檢查時,會出現下列錯誤,請根據前面章節中的內容重新生成 # ERROR: Registering runner... failed runner=z4uLTqoa status=couldn't execute POST against https://gitlab.example.com/api/v4/runners: Post "https://gitlab.example.com/api/v4/runners": x509: certificate relies on legacy Common Name field, use SANs instead # 如果域名證書未生效,或者已過期,會出現下面的錯誤 # x509: certificate has expired or is not yet valid: current time 2022-11-15T20:45:12+08:00 is before 2022-11-15T19:49:27Z # # sudo mkdir -p /etc/gitlab-runner/certs # 本文使用域名是IP:192.168.80.14 # 可根據自己的需要,修改下方的域名及埠 # 使用客戶端下載 GitLab 例項的證書 openssl s_client -showcerts -connect 192.168.80.14:443 -servername 192.168.80.14 < /dev/null 2>/dev/null | openssl x509 -outform PEM > /etc/gitlab-runner/certs/192.168.80.14.crt # openssl s_client -showcerts -connect gitlab.example.com:443 -servername gitlab.example.com < /dev/null 2>/dev/null | openssl x509 -outform PEM > /etc/gitlab-runner/certs/gitlab.example.com.crt # 驗證檔案是否已正確安裝 echo | openssl s_client -CAfile /etc/gitlab-runner/certs/192.168.80.14.crt -connect 192.168.80.14:443 -servername 192.168.80.14 # echo | openssl s_client -CAfile /etc/gitlab-runner/certs/gitlab.example.com.crt -connect gitlab.example.com:443 -servername gitlab.example.com
-
註冊 GitLab Runner
gitlab-runner register
-
提示:Enter the GitLab instance URL (for example, https://gitlab.com/):
輸入 GitLab 的地址
https://192.168.80.14 # https://gitlab.example.com/
-
提示:Enter the registration token:
# 複製 https://192.168.80.14/admin/runners 頁面中的 token(點選:註冊一個Runner即可獲取) # 複製 https://gitlab.example.com/admin/runners 頁面中的 token(點選:註冊一個Runner即可獲取) 6iuLhyWxqypcyaNtUG_C
-
提示:Enter a description for the runner:
輸入流水線的名稱,預設為 CentOS 主機名
-
提示:Enter tags for the runner (comma-separated):
輸入流水線的標籤名(非Git倉庫的標籤),即:.gitlab-ci.yml 檔案中標籤,可為空,**為空時允許所有未指定標籤的流水線使用,可在GitLab頁面中進行隨時調整 **
-
提示:Enter optional maintenance note for the runner:
輸入流水線的描述,可為空
-
提示:Registering runner... succeeded runner=6iuLhyWx
Enter an executor: docker, docker-ssh, parallels, shell, docker-ssh+machine, instance, kubernetes, custom, ssh, virtualbox, docker+machine:選擇流水線執行器
# 輸入 docker,用於後面的 GitLab Pages 做準備 docker
-
提示:Enter the default Docker image (for example, ruby:2.7):
輸入預設docker映象
-
出現下列語句,說明流水線已註冊成功: /etc/gitlab-runner/config.toml 是GitLab Runner配置檔案的位置
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
-
修改流水線配置,使其同時可以執行多個任務
vim /etc/gitlab-runner/config.toml
# 同一時間支援執行的最大任務數 concurrent = 10
-
在以下地址中可看到流水線的狀態
- https://gitlab.example.com/admin/runners
- https://192.168.61.129/admin/runners
-
列出所有
gitlab-runner list
-
檢視狀態
gitlab-runner status
-
停止
gitlab-runner stop
-
啟動
gitlab-runner start
更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網 https://gitlab.cn 進行學習。