你有沒有這種經驗:網站做好了,工程師說「部署需要一天」。改了一個 typo,又要等半天才能上線。更慘的是,上線之後才發現 SSL 憑證沒裝、某個頁面 404、手機版排版整個跑掉。
這些問題的根源都一樣:手動部署。
在 HEY!BOSS 銀月數位顧問,我們用 CI/CD 自動部署,從程式碼推送到網站上線,只要 2 分鐘,零人工介入。這篇文章公開我們的完整技術架構。
一、什麼是 CI/CD?
CI(Continuous Integration,持續整合)是指每次程式碼變更都自動進行建置和測試,確保新的程式碼不會破壞現有功能。
CD(Continuous Deployment,持續部署)是指通過測試的程式碼自動部署到生產環境,不需要人工操作。
兩者結合就是 CI/CD Pipeline:程式碼從開發者的電腦到使用者的瀏覽器,全程自動化、全程可追蹤、全程可重複。
二、HEY!BOSS 的 CI/CD Pipeline 完整流程
以下是我們實際運行的 Jenkins Pipeline,每次部署都會經過這 6 個階段:
Stage 1:Git Push — 觸發 Pipeline
工程師把程式碼 push 到 GitLab,GitLab 的 Webhook 自動通知 Jenkins:「有新的程式碼了,開始工作。」整個 pipeline 從這裡自動啟動,不需要任何人按任何按鈕。
Stage 2:Build — 建置專案
Jenkins 拉取最新程式碼,執行建置指令(npm build / yarn build)。如果是 Vue、React 等前端框架,這個階段會把 TypeScript 編譯成 JavaScript、壓縮 CSS、優化圖片、生成靜態檔案。
Stage 3:Test — 自動測試
建置成功後,自動執行測試套件。包含:
- 單元測試 — 核心功能的邏輯驗證
- 整合測試 — API 呼叫和資料流的正確性
- Playwright E2E 測試 — 模擬真實使用者操作,從瀏覽器層級驗證功能
任何測試失敗,pipeline 立即中斷,不會有有問題的程式碼進入生產環境。
Stage 4:Deploy — Docker 容器部署
測試通過後,Jenkins 自動執行部署:
- 打包 Docker Image
- 推送到私有 Docker Registry
- 在生產伺服器上拉取新的 Image
- 用 docker-compose 重啟服務
Docker 容器化的好處是環境一致性。開發環境能跑的,生產環境一定也能跑。不會出現「在我電腦上是好的啊」這種問題。
Stage 5:SSL — Let's Encrypt 自動憑證
網站部署完成後,如果是新的域名,Nginx Proxy Manager 會自動透過 Let's Encrypt 申請免費的 SSL 憑證。HTTPS 強制跳轉也是自動設定的。憑證到期前會自動續期,不需要記任何日期。
Stage 6:DNS — 自動域名設定
透過 AWS Route 53 API,新的子域名會自動建立 DNS 記錄,指向正確的伺服器 IP。從域名到 HTTPS 連線,全部自動完成。
三、Nginx Proxy Manager:反向代理的指揮中心
當你有數十個甚至上百個網站都部署在同一台伺服器上時,需要一個「流量指揮中心」來決定每個域名應該導向哪個 Docker Container。這就是 Nginx Proxy Manager 的角色。
- 反向代理 — 根據域名自動將流量導向對應的容器
- SSL 管理 — 集中管理所有域名的 SSL 憑證
- Access Control — 可以對特定站點設定 IP 白名單或密碼保護
- Web UI — 圖形化介面管理所有代理規則,不用手寫 Nginx config
HEY!BOSS 的 100 個品牌網站,全部透過同一個 Nginx Proxy Manager 管理。新增一個站點只要在 UI 上點幾下,或是透過 API 自動新增。
四、監控:部署完才是開始
很多公司的 DevOps 做到部署就結束了。但在 HEY!BOSS,我們認為部署完才是真正的開始。上線後的監控同樣重要:
Health Check 健康檢查
每 5 分鐘自動對所有網站發送 HTTP 請求,確認網站正常回應。如果連續三次失敗,立即推送 Telegram 警報,並附上錯誤訊息和伺服器狀態。
Cost Report 成本報告
每天自動計算 AWS 的使用成本,推送到 Telegram。當日費用超過設定的閾值會觸發警報,避免意外的費用暴增(例如被 DDoS 攻擊導致流量費用飆升)。
部署通知
每次 CI/CD Pipeline 完成(無論成功或失敗),都會推送 Telegram 通知,包含:部署的專案名稱、觸發者、耗時、成功/失敗狀態。如果失敗,還會附上錯誤 log 的關鍵行。
五、實際數據:HEY!BOSS 的部署效率
以下是我們實際的部署數據:
- 平均部署時間 — 1 分 47 秒(含建置、測試、部署、SSL)
- 部署成功率 — 98.5%(失敗的 1.5% 全部在測試階段被攔截,沒有影響到生產環境)
- 回滾時間 — 15 秒(docker-compose 切回上一個 Image)
- SSL 申請時間 — 平均 23 秒(Let's Encrypt DNS 驗證)
- 零手動介入 — 從 git push 到上線,沒有任何人工步驟
這不是實驗室的理想數據,是我們每天實際在跑的生產環境數據。
「部署應該像呼吸一樣自然。你不會每次呼吸都要手動操作肺部,部署也不應該。CI/CD 讓部署變成一個不需要思考的動作。」
六、為什麼這很重要?
CI/CD 不只是技術面的提升,更是商業面的競爭優勢:
- 速度 — 產品更新從「每月一次」變成「隨時可以」,更快回應市場需求
- 品質 — 自動測試攔截問題,用戶看到的永遠是穩定版本
- 成本 — 省下的人工部署時間,可以投入更有價值的開發工作
- 信心 — 不用擔心「部署會不會出事」,因為流程是可重複、可預測的
HEY!BOSS 銀月數位顧問的每一個客戶專案,都享有這套 CI/CD 基礎設施。不是加購選項,是標配。