本文作者:徐曉偉
GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。
極狐GitLab Runner Cache 快取 支援 S3 標準協議,如:OSS、OOS 等等
- 支援 S3 標準協議
- 支援 MinIO
- 支援 阿里雲 OSS 物件儲存
- 支援 天翼雲 OOS 物件儲存
說明
-
本文使用 Docker 安裝 MinIO。
-
本文配置極狐 GitLab Runner 的快取型別為 s3,使用的軟體是
MinIO
、阿里雲 OSS 物件儲存
、天翼雲 OOS 物件儲存
。 -
本文的目的是在極狐 GitLab Runner 執行完成時,透過配置流水線中的快取,將 Maven依賴、Node依賴等,上傳到 minio中,在下次執行流水線時,極狐GitLab Runner 會自動下載上次快取的檔案並解壓,提高流水線構建的速度。
-
[使用 MinIO]
-
[分散式 Runner 快取]
-
極狐GitLab Runner 高階配置
http s://docs .gitlab .cn/runner/configuration/advanced-configuration.html(查閱連結請去掉空格)
安裝 minio
-
建立 minio 容器 9000埠:上傳下載檔案的埠 9001埠:後臺管理頁面埠 /minio/data:儲存檔案的目錄
docker run \ -itd \ --restart always \ --privileged=true \ -p 9000:9000 \ -p 9001:9001 \ --name minio1 \ -v /minio/data:/data \ quay.io/minio/minio server /data --console-address ":9001"
firewall-cmd --zone=public --add-port=9000/tcp --permanent firewall-cmd --zone=public --add-port=9001/tcp --permanent firewall-cmd --reload firewall-cmd --list-all
-
預設使用者名稱:minioadmin,預設密碼:minioadmin
-
建立一個Buckets,用於儲存 GitLab Runner 的快取,名稱為:bucket-1
-
建立一個Access Keys,作為 GitLab Runner 上傳、下載快取的憑證。
-
設定 GitLab Runner 的快取配置,配置修改完成後啟動的流水線會立即生效
-
MinIO 配置(支援)
[runners.cache] # 啟用快取的型別為:s3 Type = "s3" # 是否共享快取 # 如果不共享,則會根據 [[runners]] 中的 token 前 8 位建立資料夾,每個 [[runners]] 快取僅自己能使用 Shared = false [runners.cache.s3] # 快取伺服器的地址+埠 ServerAddress = "192.168.80.14:9000" # Access Keys 賬戶憑證 AccessKey = "hCfpQlQuEXtBYEAw" SecretKey = "kHH5RwzCRiRUtujKlNRZZZFpuANm6Yr1" # 建立的 Buckets 名稱 BucketName = "bucket-1" # 設定為 true 代表不使用 https Insecure = true
-
阿里雲 OSS 物件儲存配置(支援)
[runners.cache] # 啟用快取的型別為:s3 Type = "s3" # 是否共享快取 # 如果不共享,則會根據 [[runners]] 中的 token 前 8 位建立資料夾,每個 [[runners]] 快取僅自己能使用 Shared = false [runners.cache.s3] # 快取伺服器的地址+埠 # 此處以青島地區為例,這裡不填寫協議 ServerAddress = "oss-cn-qingdao.aliyuncs.com" # Access Keys 賬戶憑證 AccessKey = "" SecretKey = "" # 建立的 Buckets 名稱 BucketName = "" # 設定為 false 代表使用 https Insecure = false
-
天翼雲 OOS 物件儲存配置
使用的是:經典版物件儲存(經典版)-經典Ⅰ型
[runners.cache] # 啟用快取的型別為:s3 Type = "s3" # 是否共享快取 # 如果不共享,則會根據 [[runners]] 中的 token 前 8 位建立資料夾,每個 [[runners]] 快取僅自己能使用 Shared = false [runners.cache.s3] # 快取伺服器的地址+埠 # 此處以青島地區為例,這裡不填寫協議 ServerAddress = "oos-sdqd.ctyunapi.cn" # Access Keys 賬戶憑證 AccessKey = "" SecretKey = "" # 建立的 Buckets 名稱 BucketName = "" # 設定為 false 代表使用 https Insecure = false # 填寫區域,不填寫無法使用 # 此處以山東青島地區為例 BucketLocation = "sdqd"
-
-
如果未配置流水線快取,在流水線執行時,會出現如下日誌
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted.
No URL provided, cache will not be uploaded to shared cache server. Cache will be stored only locally.
-
流水線正確設定後,在流水線執行時,會出現如下日誌
# 首次設定成功後執行,會出現下列日誌,不過不用擔心,本次執行成功上傳依賴完成後,下次就不會出現了 # 若快取檔案被刪除,也會出現此日誌 WARNING: file does not exist Failed to extract cache
Downloading cache.zip from http://192.168.80.14:9000/bucket-1/runner/HcQesvsi/project/2/default-protected Successfully extracted cache
Uploading cache.zip to http://192.168.80.14:9000/bucket-1/runner/HcQesvsi/project/2/default-protected
-
若要禁用快取,只需要將 Type = "s3" 禁用即可
更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網進行學習。