如何配置極狐GitLab Runner Cache 快取

极狐GitLab發表於2024-03-13

本文作者:徐曉偉

GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。

極狐GitLab Runner Cache 快取 支援 S3 標準協議,如:OSS、OOS 等等

  1. 支援 S3 標準協議
  2. 支援 MinIO
  3. 支援 阿里雲 OSS 物件儲存
  4. 支援 天翼雲 OOS 物件儲存

說明

  1. 本文使用 Docker 安裝 MinIO。

  2. 本文配置極狐 GitLab Runner 的快取型別為 s3,使用的軟體是 MinIO阿里雲 OSS 物件儲存天翼雲 OOS 物件儲存

  3. 本文的目的是在極狐 GitLab Runner 執行完成時,透過配置流水線中的快取,將 Maven依賴、Node依賴等,上傳到 minio中,在下次執行流水線時,極狐GitLab Runner 會自動下載上次快取的檔案並解壓,提高流水線構建的速度。

  4. [使用 MinIO]

  5. [分散式 Runner 快取]

  6. 極狐GitLab Runner 高階配置
    http s://docs .gitlab .cn/runner/configuration/advanced-configuration.html(查閱連結請去掉空格)

安裝 minio

  1. 建立 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
    
  2. 預設使用者名稱:minioadmin,預設密碼:minioadmin

  3. 建立一個Buckets,用於儲存 GitLab Runner 的快取,名稱為:bucket-1

  4. 建立一個Access Keys,作為 GitLab Runner 上傳、下載快取的憑證。

  5. 設定 GitLab Runner 的快取配置,配置修改完成後啟動的流水線會立即生效

    1. 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
      
    2. 阿里雲 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
      
    3. 天翼雲 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"
      
  6. 如果未配置流水線快取,在流水線執行時,會出現如下日誌

    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. 
    
  7. 流水線正確設定後,在流水線執行時,會出現如下日誌

    # 首次設定成功後執行,會出現下列日誌,不過不用擔心,本次執行成功上傳依賴完成後,下次就不會出現了
    # 若快取檔案被刪除,也會出現此日誌
    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 
    
  8. 若要禁用快取,只需要將 Type = "s3" 禁用即可

更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網進行學習。

相關文章