如何在CentOS 安裝極狐GitLab Runner?

极狐GitLab發表於2024-03-08

本文作者:徐曉偉

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

基於 CentOS 和 極狐GitLab 官方倉庫指令碼 安裝/配置 GitLab Runner

文件

  1. 安裝 極狐GitLab Runner

  2. 自簽名證書或自定義證書頒發機構

  3. 配置 Runner

  4. GitLab runner 最新版手動下載

    1. v15.6.0 手動下載
  5. 自簽名證書或自定義證書頒發機構

  6. 極狐GitLab Runner 高階配置

安裝 GitLab Runner

  1. 安裝

    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    yum -y install gitlab-runner
    
  2. 使用 root 使用者執行 GitLab Runner

    1. __根據使用者的需要操作此步驟,讓 GitLab Runner 使用 root 使用者執行流水線,可能會帶來風險,如:流水線中寫了 rm -rf /** __
    2. 推薦使用 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
    
  3. 配置證書信任

    # 自己生成的證書,如果不進行信任,註冊時可能出現的問題:
    # 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
    
  4. 註冊 GitLab Runner

    gitlab-runner register
    
  5. 提示:Enter the GitLab instance URL (for example, https://gitlab.com/):

    輸入 GitLab 的地址

    https://192.168.80.14
    # https://gitlab.example.com/
    
  6. 提示:Enter the registration token:

    # 複製 https://192.168.80.14/admin/runners 頁面中的 token(點選:註冊一個Runner即可獲取)
    # 複製 https://gitlab.example.com/admin/runners 頁面中的 token(點選:註冊一個Runner即可獲取)
    6iuLhyWxqypcyaNtUG_C
    
  7. 提示:Enter a description for the runner:

    輸入流水線的名稱,預設為 CentOS 主機名

  8. 提示:Enter tags for the runner (comma-separated):

    輸入流水線的標籤名(非Git倉庫的標籤),即:.gitlab-ci.yml 檔案中標籤,可為空,**為空時允許所有未指定標籤的流水線使用,可在GitLab頁面中進行隨時調整 **

  9. 提示:Enter optional maintenance note for the runner:

    輸入流水線的描述,可為空

  10. 提示: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
    
  11. 提示:Enter the default Docker image (for example, ruby:2.7):

    輸入預設docker映象

  12. 出現下列語句,說明流水線已註冊成功: /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" 
    
  13. 修改流水線配置,使其同時可以執行多個任務

    vim /etc/gitlab-runner/config.toml
    
    # 同一時間支援執行的最大任務數
    concurrent = 10
    
  14. 在以下地址中可看到流水線的狀態

    1. https://gitlab.example.com/admin/runners
    2. https://192.168.61.129/admin/runners
  15. 列出所有

    gitlab-runner list
    
  16. 檢視狀態

    gitlab-runner status
    
  17. 停止

    gitlab-runner stop
    
  18. 啟動

    gitlab-runner start
    

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

相關文章