本文作者:徐曉偉
GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。
在極狐GitLab Runner Job 新增域名host是為了檢出程式碼時使用。
問題
-
測試專案公開地址:https://framagit.org/xuxiaowei-com-cn/sleep ,分支:
host
-
流水線配置
stages: - build build-job: stage: build variables: # 環境變數 SLEEP_TIME: 600 script: # 延時一段時間,從環境變數中獲取 - sleep $SLEEP_TIME
-
流水線執行日誌如下
-
問題原因:未解析 gitlab.test.helm.xuxiaowei.cn 域名
解決辦法
-
匯出 helm gitlab 配置
# 將已配置的值匯出到檔案中 helm -n gitlab-test get values my-gitlab > my-gitlab.yaml
-
檢視 gitlab runner 預設配置
# 此處為節選,不同版本可能會存在差異,請以 https://artifacthub.io/packages/helm/gitlab/gitlab?modal=values 中的配置為準 gitlab-runner: runners: config: | [[runners]] [runners.kubernetes] image = "ubuntu:22.04" {{- if .Values.global.minio.enabled }} [runners.cache] Type = "s3" Path = "gitlab-runner" Shared = true [runners.cache.s3] ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }} BucketName = "runner-cache" BucketLocation = "us-east-1" Insecure = false {{ end }}
-
修改配置如下
gitlab-runner: runners: config: | [[runners]] [runners.kubernetes] image = "ubuntu:22.04" [[runners.kubernetes.host_aliases]] ip = "172.25.25.32" hostnames = [ "gitlab.test.helm.xuxiaowei.cn" ] {{- if .Values.global.minio.enabled }} [runners.cache] Type = "s3" Path = "gitlab-runner" Shared = true [runners.cache.s3] ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }} BucketName = "runner-cache" BucketLocation = "us-east-1" Insecure = false {{ end }}
-
更新配置
helm upgrade -n gitlab-test --install my-gitlab gitlab/gitlab --timeout 600s -f my-gitlab.yaml --version 7.7.0
-
等待所有
gitlab-runner
舊pod
刪除完成,新pod
正常執行時,重試流水線,即可正常檢出程式碼
-
說明
檢出程式碼與當前
.gitlab-ci.yml
使用的什麼映象無關(比如說:在.gitlab-ci.yml
中使用的映象中無git
,也可以正常執行), 而是使用的 helper 映象建立的容器,此容器還負責上傳/下載快取等操作
更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網 https://gitlab.cn 進行學習。