iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
DevOps

連DevSecOps都不知道怎麼發音怎麼開始學習?系列 第 15

Day.15 自動維護依賴:用 Dependabot 讓套件自己乖乖更新

  • 分享至 

  • xImage
  •  

程式的安全,不只靠「檢查漏洞」,還得確保你用的東西不是十年前的舊貨

在 Day.9 我們用 pip-audit 掃過套件漏洞,知道了「依賴」可能是系統裡最危險的臥底。
但光靠檢查還不夠——因為漏洞幾乎每天都在冒出來,如果只是在發現後人工去更新,很快就會疲於奔命。

這就是 Dependabot 出場的時候。
它就像個不知疲倦的維修工,會每天替你檢查套件,發現有更新就幫你自動開 Pull Request。
你只要 review、跑 CI,決定要不要合併,就能確保依賴一直保持在健康狀態。

1. 為什麼需要自動依賴更新?

  1. 漏洞修補速度
    漏洞公告和修補通常有時間差,晚一步更新就可能多一天風險。

  2. 避免版本落差過大
    長期不更新,會讓專案停在落後版本,等到真的要升級時,痛苦程度指數級上升。

  3. 和 CI/CD 串連
    Dependabot 開的 PR 會自動跑測試,確保更新不會悄悄破壞功能。

2. 開啟 Dependabot

只要在 repo 裡建立一個 .github/dependabot.yml

version: 2
updates:
  - package-ecosystem: "pip"   # Python 套件
    directory: "/"             # requirements.txt 的位置
    schedule:
      interval: "weekly"       # 每週檢查一次
    open-pull-requests-limit: 5

這樣 Dependabot 就會:

  • 每週自動檢查一次 requirements.txt
  • 發現套件有新版本時,開 PR 通知你
    可以調整成 weekly 或 monthly,甚至限制同時間最多 PR 數。

範例 PR 會長這樣:

Bump requests from 2.28.1 to 2.31.0

你可以像普通 PR 一樣 review、測試、合併。

3. 在 CI/CD 裡怎麼配合?

這裡關鍵是:Dependabot 的 PR 不是直接合併,而是要跑過你的 測試 + 安全檢查。
例如:

  • CI 跑 pytest 覆蓋率
  • CI 跑 Bandit / pip-audit
    如果更新後一切綠燈,就可以放心合併。
    這樣,更新變成了一個可控且持續的流程,而不是「有空才一次性大升級」。

Q:更新會不會破壞相容性
A:這就是 CI/CD 的價值。Dependabot 幫你自動更新,測試幫你驗證可用性。只要測試設計完整,就能過濾掉> 危險升級。

4. 總結

到這裡,我們有了兩個不同層級的機制:
pip-audit:找出已知漏洞(靜態檢查)
Dependabot:主動幫你更新(持續維護)

不是單點補洞,而是讓整個流程持續健康。
把「更新依賴」這件麻煩事,自動化成一個持續的流程。
它幫你:

  • 定期檢查套件版本
  • 自動開 PR,搭配 CI 測試
  • 避免專案長期停留在過時版本

我們的 pipeline 不只會檢查,也開始會「自己動起來」。
就像有了個默默巡邏的機械兵,專門盯著依賴的更新狀態,減少人力負擔。


上一篇
Day.14 測試不是演習:用 pytest-cov 揭穿「我有寫測試」的幻覺
下一篇
Day.16 刀劍神域的規則書:用 tfsec 守住雲端 IaC 的致命設定
系列文
連DevSecOps都不知道怎麼發音怎麼開始學習?21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言