如何在極狐GitLab Runner Job 新增域名 host?

极狐GitLab發表於2024-03-19

本文作者:徐曉偉

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

在極狐GitLab Runner Job 新增域名host是為了檢出程式碼時使用。

問題

  1. 測試專案公開地址:https://framagit.org/xuxiaowei-com-cn/sleep ,分支:host

  2. 流水線配置

    stages:
       - build
    
    build-job:
       stage: build
       variables:
          # 環境變數
          SLEEP_TIME: 600
       script:
          # 延時一段時間,從環境變數中獲取
          - sleep $SLEEP_TIME
    
  3. 流水線執行日誌如下
    file

  4. 問題原因:未解析 gitlab.test.helm.xuxiaowei.cn 域名

解決辦法

  1. 匯出 helm gitlab 配置

    # 將已配置的值匯出到檔案中
    helm -n gitlab-test get values my-gitlab > my-gitlab.yaml
    
  2. 檢視 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 }}
    
  3. 修改配置如下

    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 }}
    
  4. 更新配置

    helm upgrade -n gitlab-test --install my-gitlab gitlab/gitlab --timeout 600s -f my-gitlab.yaml --version 7.7.0
    
  5. 等待所有 gitlab-runnerpod 刪除完成,新 pod 正常執行時,重試流水線,即可正常檢出程式碼
    file

  6. 說明

    檢出程式碼與當前 .gitlab-ci.yml 使用的什麼映象無關(比如說:在 .gitlab-ci.yml 中使用的映象中無 git,也可以正常執行), 而是使用的 helper 映象建立的容器,此容器還負責上傳/下載快取等操作

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

相關文章