iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
DevOps

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

Day.19 從 CI 到 CD:自動部署到自己的伺服器

  • 分享至 

  • xImage
  •  

前言

這幾天,我們讓程式碼經過各種檢查:Lint測試安全掃描容器漏洞… 每一層都守得很緊。
但說實話,程式到目前為止還只是「待在 pipeline 裡的考卷」,一直沒真正跑起來。

今天,我們要跨出下一步──讓程式能在伺服器自動部署。
這就是 CD (Continuous Deployment),從單純的檢查(CI)走向「自動上線」。

CI 是模擬考,CD 才是正式上場比賽。

1. CI vs CD 的差別

很多人常把 CI/CD 混在一起講,但其實它們解決的問題不同:

  • CI (Continuous Integration):自動測試、靜態分析、Lint… 目的是確認程式碼合併後不會壞掉。
  • CD (Continuous Deployment / Delivery):把測過的程式碼自動部署到環境(測試環境或正式環境),讓它真的跑起來。

直觀來說:

  • CI 是在檢查裝備:武器磨好、盔甲修好。
  • CD 則是帶著裝備出城,真的走上戰場。

CI 確保「你能活著出門」,CD 確保「你能在外面打得贏」。

2. 為什麼要自動部署?

有人會說:「反正我用 scp 傳檔、ssh 登進去跑指令,不也能部署?」
沒錯,但這樣等於靠「人」來維持流程,風險和麻煩不少:

  1. 避免人為錯誤
  • 忘了拉最新 commit、上錯分支、重啟漏了參數…
  • 只要一個小失誤,就可能把整個服務弄掛。
  1. 縮短交付時間
  • 程式碼通過測試後,自動部署讓它立即跑起來。
  • 不需要再等一個工程師手動操作,效率差很多。
  1. 安全性提升
  • CD 接在 CI 後面,代表只有通過測試與安全檢查的程式碼能進伺服器。
  • 等於守門人幫你把「不健康的版本」直接攔下來。

比喻來說,自動部署就像有一條輸送帶:
檢查合格的產品會自動送到貨架上,而不是靠員工一箱箱搬。
這樣才快、準、而且安全。

3. VPS 自動部署的核心概念(今天先理解,不急著實作)

當你選擇自己管 VPS,代表你不只要學會「怎麼部署」,還要知道「為什麼這樣部署」。
今天我們先用概念梳理,把明天的實作變成照劇本演。

(1) CI 與 CD 的分工

  • CI:在程式碼合併時自動檢查,防止 bug 和漏洞滲進來。

  • CD:把「檢查過的程式」推到伺服器,並確保它能跑起來。

簡單一句:CI 確保程式健康,CD 確保它活在世界上。

(2) 部署的四大動作

再複雜的工具,本質都在做同一件事:

  1. 連線伺服器(靠 SSH Key,不用帳密,更別用 root)。
  2. 更新程式碼(通常是 git pull 或 scp 傳檔)。
  3. 安裝依賴(pip install、npm install、或 docker pull)。
  4. 重啟服務(systemctl restart 或 docker-compose up -d)。

把這四步想成流程積木:只要組起來,就能變成自己的 CD pipeline。

(3) DevSecOps 的安全提醒

  • Secrets 管理:金鑰一定要放 GitHub Secrets,不要寫進 repo。
  • 最小權限:VPS 上最好建一個專門的 deploy 帳號,不要圖快用 root。
  • 分支保護:Workflow 加上條件,確保只在 main/master 分支觸發部署。

這些細節決定了,你的自動部署是「幫你省事」,還是「幫駭客省事」。

(4) 部署策略的層次

  • 基礎版更新程式碼 + 重啟 → 直觀,但會有短暫 downtime。
  • 進階版Docker 化 → 部署速度快、環境一致。
  • 高階版藍綠部署或滾動更新 → 幾乎零停機,適合流量大、不可中斷的應用。

我們現在只需要基礎版,足夠跑起應用;但知道後面有更高層次,就能理解為什麼大公司要花力氣做複雜 pipeline

4. 結論

到這裡,我們已經看清楚自動部署的樣子:

  • CI 確保程式健康,CD 讓程式真正跑起來。
  • 部署的本質不過四件事連線、更新、安裝、重啟
  • 而安全細節──Secrets、最小權限、分支保護──是讓整個流程站得住腳的關鍵。

「手動部署就像每天親自挑水,辛苦又容易翻桶;自動部署是接好水管,開關一扳,水就源源不絕。」

今天先不用打開終端機,光是把這些概念拆開理解,就能避免明天實作時變成「跟著打字卻不懂為什麼」。


上一篇
Day.18 容器不是黑盒子:用 Trivy 掃描 Docker 鏡像漏洞
下一篇
Day.20 CI/CD 不是自動送頭:用 EC2 + Caddy 打造能上也能退的戰場
系列文
連DevSecOps都不知道怎麼發音怎麼開始學習?21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言