本文作者:徐曉偉
GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都透過私有化部署 GitLab 來進行原始碼託管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程式設計師服務。可以一鍵式部署極狐GitLab。
極狐GitLab 依賴機器人 dependabot-gitlab 使用 docker compose 安裝
說明
-
原始碼:https://gitlab.com/dependabot-gitlab/dependabot
-
文件:https://dependabot-gitlab.gitlab.io/dependabot/
- 入門
- 配置檔案
- 環境變數
- 鉤子Webhook
- API
- UI
-
介紹
- 是一個開源的依賴管理工具,可以自動更新應用程式中的依賴庫,保證應用程式的穩定性和安全性。
- 支援多種程式語言和包管理器,包括但不限於Ruby、Python、Java、JavaScript等,並且可以擴充套件到更多的程式語言和包管理器。
- 可以整合到GitLab中,能夠在GitLab的Pull Request頁面上顯示有關依賴更新的資訊,並自動生成相應的合併請求。
- 可以自動檢測GitHub中的依賴庫更新,以及最佳的版本,從而減少手動更新的工作量。
- 可以透過配置檔案來進行自定義設定,以滿足不同專案的依賴管理需求。
- 可以按照指定的時間間隔(如每天、每週)自動進行依賴檢查和更新,減少了手動更新的工作量。
- 可以在更新依賴庫之前自動執行測試,以確保在更新後應用程式仍然能夠正常執行。
- 可以發現應用程式依賴中的漏洞,提供安全更新,從而增強應用程式的安全性。
- 會在更新依賴庫之前自動建立新的分支,以確保更改不影響主分支,確保最大程度的安全。
- 可以為應用程式推薦最佳的依賴版本,以減少應用程式依賴庫的版本衝突。
- 可以透過設定黑名單和白名單來控制依賴庫的更新範圍,以滿足特定專案的需求。
- 可以透過GitLab API來獲得專案和使用者資訊,並根據需要進行相關操作。
- 支援Docker映象,能夠在容器化環境中執行,從而進一步簡化部署過程。
- 是一個持續更新的專案,透過不斷迭代和改進來滿足開發者的需求。
- 具有高度的靈活性和可擴充套件性,能夠適應各種特定專案的需求。
- 為開發人員提供了一種簡單而強大的解決方案,減少了手動更新依賴庫所需要的時間和工作量。
- 是開源的,擁有活躍的社群支援,使用者可以從其他人的經驗中獲取靈感和幫助。
安裝配置
-
克隆專案
git clone https://gitlab.com/dependabot-gitlab/dependabot.git cd dependabot
切換到最後一個標籤(可選)
git checkout -b $(git describe --tags --abbrev=0)
-
將 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
-
將 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
-
將 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
-
設定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
-
使用 docker compose 啟動應用:
docker compose up -d
-
檢視埠(埠未修改時是 3000)並遠端訪問
docker ps
使用
-
在專案根目錄上新建檔案 .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"
-
遠端訪問埠(埠未修改時是 3000)
-
輸入專案相對地址(無域名,如:專案地址為 http://gitlab.example.com/xuxiaowei-com-cn/xuxiaowei-cloud,則填寫的專案地址為 xuxiaowei-com-cn/xuxiaowei-cloud)、Token
- 則使用填寫的 Token 作為建立 分支、PR 的憑證
-
輸入專案相對地址(無域名,如:專案地址為 http://gitlab.example.com/xuxiaowei-com-cn/xuxiaowei-cloud,則填寫的專案地址為 xuxiaowei-com-cn/xuxiaowei-cloud)
- 則使用配置 dependabot-gitlab 的 Token 作為建立 分支、PR 的憑證
-
更多關於極狐GitLab 的最佳實踐,請搜尋關注【極狐GitLab】公眾號或者登入極狐GitLab 官網 https://gitlab.cn 進行學習。