如何依賴機器人安裝極狐GitLab

极狐GitLab發表於2024-03-14

本文作者:徐曉偉

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

極狐GitLab 依賴機器人 dependabot-gitlab 使用 docker compose 安裝

說明

  1. 原始碼:https://gitlab.com/dependabot-gitlab/dependabot

  2. 文件:https://dependabot-gitlab.gitlab.io/dependabot/

    1. 入門
    2. 配置檔案
    3. 環境變數
    4. 鉤子Webhook
    5. API
    6. UI
  3. 介紹

    1. 是一個開源的依賴管理工具,可以自動更新應用程式中的依賴庫,保證應用程式的穩定性和安全性。
    2. 支援多種程式語言和包管理器,包括但不限於Ruby、Python、Java、JavaScript等,並且可以擴充套件到更多的程式語言和包管理器。
    3. 可以整合到GitLab中,能夠在GitLab的Pull Request頁面上顯示有關依賴更新的資訊,並自動生成相應的合併請求。
    4. 可以自動檢測GitHub中的依賴庫更新,以及最佳的版本,從而減少手動更新的工作量。
    5. 可以透過配置檔案來進行自定義設定,以滿足不同專案的依賴管理需求。
    6. 可以按照指定的時間間隔(如每天、每週)自動進行依賴檢查和更新,減少了手動更新的工作量。
    7. 可以在更新依賴庫之前自動執行測試,以確保在更新後應用程式仍然能夠正常執行。
    8. 可以發現應用程式依賴中的漏洞,提供安全更新,從而增強應用程式的安全性。
    9. 會在更新依賴庫之前自動建立新的分支,以確保更改不影響主分支,確保最大程度的安全。
    10. 可以為應用程式推薦最佳的依賴版本,以減少應用程式依賴庫的版本衝突。
    11. 可以透過設定黑名單和白名單來控制依賴庫的更新範圍,以滿足特定專案的需求。
    12. 可以透過GitLab API來獲得專案和使用者資訊,並根據需要進行相關操作。
    13. 支援Docker映象,能夠在容器化環境中執行,從而進一步簡化部署過程。
    14. 是一個持續更新的專案,透過不斷迭代和改進來滿足開發者的需求。
    15. 具有高度的靈活性和可擴充套件性,能夠適應各種特定專案的需求。
    16. 為開發人員提供了一種簡單而強大的解決方案,減少了手動更新依賴庫所需要的時間和工作量。
    17. 是開源的,擁有活躍的社群支援,使用者可以從其他人的經驗中獲取靈感和幫助。

安裝配置

  1. 克隆專案

    git clone https://gitlab.com/dependabot-gitlab/dependabot.git
    cd dependabot
    

    切換到最後一個標籤(可選)

    git checkout -b $(git describe --tags --abbrev=0)
    
  2. 將 gitlab 網址儲存到環境變數:SETTINGS__GITLAB_URL

    # https://dependabot-gitlab.gitlab.io/dependabot/guide/getting-started.html#step-3-start-the-app
    export SETTINGS__GITLAB_URL=https://gitlab.com
    
  3. 將 gitlab 訪問令牌儲存到環境變數(可選):SETTINGS__GITLAB_ACCESS_TOKEN

    # 推薦在環境變數檔案中新增,新增完成後重新整理環境變數(防止敏感資訊儲存在歷史記錄中)
    # https://dependabot-gitlab.gitlab.io/dependabot/guide/getting-started.html#step-3-start-the-app
    export SETTINGS__GITLAB_ACCESS_TOKEN=gitlab_access_token
    
  4. 將 github 訪問令牌儲存到環境變數(可選):SETTINGS__GITHUB_ACCESS_TOKEN

    # 推薦在環境變數檔案中新增,新增完成後重新整理環境變數(防止敏感資訊儲存在歷史記錄中)
    # https://dependabot-gitlab.gitlab.io/dependabot/guide/getting-started.html#step-3-start-the-app
    export SETTINGS__GITHUB_ACCESS_TOKEN=github_access_token
    
  5. 設定Webhook回撥地址(可選,埠未修改時是 3000):SETTINGS__DEPENDABOT_URL

    # Webhook 文件:https://dependabot-gitlab.gitlab.io/dependabot/config/webhooks.html
    export SETTINGS__DEPENDABOT_URL=http://dependabot-gitlab.example.xuxiaowei.com.cn:3000
    
  6. 使用 docker compose 啟動應用:

    docker compose up -d
    
  7. 檢視埠(埠未修改時是 3000)並遠端訪問

    docker ps
    

使用

  1. 在專案根目錄上新建檔案 .gitlab/dependabot.yml(預設,可使用環境變數 SETTINGS__CONFIG_FILENAME 進行修改),以 Maven 為例

    # 版本號
    version: 2
    
    # 倉庫
    registries:
        # 自定義倉庫名
      rdc-releases:
        # 倉庫型別
        type: maven-repository
        # 倉庫地址
        url: https://packages.aliyun.com/maven/repository/xxxxxxx-release-xxxxxx/
        # 使用者名稱
            username: 使用者名稱(官方程式可能存在bug,無法使用環境變數,可使用只讀賬戶減小風險)
        # 密碼
        password: 密碼(官方程式可能存在bug,無法使用環境變數,可使用只讀賬戶減小風險)
      rdc-snapshots:
        type: maven-repository
        url: https://packages.aliyun.com/maven/repository/xxxxxxx-snapshot-xxxxxx/
        username: 使用者名稱(官方程式存在bug,無法使用環境變數,可使用只讀賬戶減小風險)
        password: 密碼(官方程式存在bug,無法使用環境變數,可使用只讀賬戶減小風險)
    
    # 掃描更新
    updates:
        # 掃描依賴型別
      - package-ecosystem: maven
        # 掃描依賴目錄
            directory: /
        # 預設:5
        # 建立更新依賴未合併的最大PR數量
        open-pull-requests-limit: 200
        # 定時器
        schedule:
            # 頻率
          interval: daily
            # 時間,不指定時為隨機時間
          time: "04:00"
            # 時區
          timezone: "Asia/Shanghai"
        registries:
            # 使用哪些倉庫
          - rdc-releases
          - rdc-snapshots
        # 忽略不更新的依賴資訊
        ignore:
            # 忽略的依賴名(Maven 座標)
          - dependency-name: org.springframework.boot:spring-boot-starter-parent
            # 忽略的版本號
            versions:
                # Spring Boot 3 不支援 JDK 8
                # 大於等於版本號 3 的不升級
              - ">= 3"
          - dependency-name: org.springframework.cloud:spring-cloud-dependencies
            versions:
              - ">= 2022"
          - dependency-name: com.alibaba.cloud:spring-cloud-alibaba-dependencies
            versions:
              - "= 2021.1"
              - ">= 2022"
    
  2. 遠端訪問埠(埠未修改時是 3000)

    1. 輸入專案相對地址(無域名,如:專案地址為 http://gitlab.example.com/xuxiaowei-com-cn/xuxiaowei-cloud,則填寫的專案地址為 xuxiaowei-com-cn/xuxiaowei-cloud)、Token

      1. 則使用填寫的 Token 作為建立 分支、PR 的憑證
    2. 輸入專案相對地址(無域名,如:專案地址為 http://gitlab.example.com/xuxiaowei-com-cn/xuxiaowei-cloud,則填寫的專案地址為 xuxiaowei-com-cn/xuxiaowei-cloud)

      1. 則使用配置 dependabot-gitlab 的 Token 作為建立 分支、PR 的憑證

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

相關文章