喂!我是 Wei

Front-End Engineer

Be a Problem Solver.

⌘K

導覽

所有文章緣起互動小功能

文章分類

目錄
一個基本的前端 CI Pipeline為什麼一定要用 lockfile?PR 階段要檢查什麼?Merge、Rebase、SquashMergeRebaseSquash MergePreview Deployment 的價值正式環境白畫面怎麼排查?Source Map 怎麼使用?前端要監控什麼?ErrorsPerformanceProduct Signals如何降低部署風險?常見追問CI 和 CD 差在哪?Build 成功就代表可以上線嗎?發生事故時先修還是先 rollback?面試回答模板

相關文章

即時資料怎麼選?Polling、SSE、WebSocket 比較

2026年6月23日

前端系統設計:如何拆元件、資料流與大型專案架構?

2026年6月22日

無障礙不是加 ARIA:語意化 HTML、鍵盤操作與焦點管理

2026年6月21日

最新文章
全部 →
前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查
2026-06-24
即時資料怎麼選?Polling、SSE、WebSocket 比較
2026-06-23
前端系統設計:如何拆元件、資料流與大型專案架構?
2026-06-22
無障礙不是加 ARIA:語意化 HTML、鍵盤操作與焦點管理
2026-06-21
CSS 與 RWD 面試整理:Flexbox、Grid、定位與層疊脈絡
2026-06-19
← 返回文章列表

前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查

2026年6月24日·約 5 分鐘閱讀·
前端面試系列CI/CD正式環境除錯

近期前端職缺除了框架,也很重視工程師能不能把功能穩定送到正式環境。

面試可能會問:

  • PR 建立後 CI 應該跑什麼?
  • merge、rebase、squash 差在哪?
  • 正式環境發生白畫面怎麼查?
  • source map 要不要公開?
  • 如何降低部署風險?

一個基本的前端 CI Pipeline

Pull Request
  → install with lockfile
  → lint
  → type-check
  → unit / integration test
  → production build
  → preview deployment
  → E2E smoke test
  → review / merge

越便宜、越快的檢查放越前面,讓錯誤提早失敗。


為什麼一定要用 lockfile?

CI 應使用:

npm ci

而不是任意更新 dependencies。

lockfile 讓本機、CI、production 安裝相同版本,也讓 dependency cache 更穩定。


PR 階段要檢查什麼?

基本 quality gates:

  • formatting / lint
  • TypeScript type-check
  • unit / integration tests
  • production build
  • bundle size 變化
  • dependency security scan
  • 核心 E2E smoke tests

不是每個專案都要全部阻擋 merge,但應依風險設定必要條件。


Merge、Rebase、Squash

Merge

保留 branch 歷史和 merge commit,脈絡完整,但 graph 可能較複雜。

Rebase

把 commit 重新接到最新 base 上,歷史線性,但會重寫 commit hash。已共享的 branch 要小心。

Squash Merge

把 PR 多個 commit 合成一個,主分支乾淨,但細部 commit 歷史會被壓縮。

面試不需要宣稱哪個一定最好,重點是理解團隊 workflow 和重寫歷史的影響。


Preview Deployment 的價值

每個 PR 建立獨立 preview URL,可以讓:

  • PM / Designer 提前驗收
  • QA 測試真實 build
  • 跑瀏覽器 E2E
  • 比較 RWD 和互動
  • 在 merge 前發現環境差異

但 preview 仍要避免連到 production 資料或暴露 secret。


正式環境白畫面怎麼排查?

我會依序確認:

  1. 影響範圍:所有人、特定瀏覽器、特定 route?
  2. 最近部署:是否和 release 時間吻合?
  3. Browser console:JavaScript runtime error?
  4. Network:JS chunk 404、API 401/500、CORS?
  5. Error tracking:stack trace、release、user context
  6. Source map:還原壓縮後程式碼位置
  7. 必要時 rollback 或關閉 feature flag

先止血,再找根因。


Source Map 怎麼使用?

Production bundle 會壓縮,stack trace 可能只看到:

app-9fd31.js:1:28491

Source map 可以還原到原始 TypeScript 檔案與行號。

實務上可以把 source map 上傳到 error tracking 平台,但不一定要公開提供給所有使用者下載,以避免暴露過多原始碼資訊。


前端要監控什麼?

Errors

  • uncaught exception
  • unhandled rejection
  • API failure rate
  • resource load error

Performance

  • LCP
  • INP
  • CLS
  • route transition time
  • API latency

Product Signals

  • 登入成功率
  • 結帳成功率
  • 關鍵按鈕完成率
  • 特定版本的異常比例

只有 console.log 不足以處理 production 問題。


如何降低部署風險?

  • small PR / small release
  • feature flag
  • canary / gradual rollout
  • preview environment
  • automated smoke test
  • rollback strategy
  • DB / API backward compatibility
  • release monitoring

前端也要注意舊 HTML 引用新舊 chunk、CDN cache 和 service worker 更新問題。


常見追問

CI 和 CD 差在哪?

CI 是持續整合,確保每次變更能建置與驗證;CD 可以指持續交付或持續部署,負責把通過驗證的版本送到可發布或正式環境。

Build 成功就代表可以上線嗎?

不代表。還要確認 runtime env、API contract、權限、瀏覽器行為、migration 和核心流程。

發生事故時先修還是先 rollback?

看影響程度。如果影響核心流程或大量使用者,通常先 rollback / feature flag 止血,再分析根因和補測試。


面試回答模板

我的前端 CI 會先跑 lint、type-check、unit/integration test 和 production build,再建立 preview deployment,核心流程用 E2E smoke test 驗證。正式環境發生問題時,我會先確認影響範圍和最近 release,從 error tracking、source map、Network、console 和 Web Vitals 定位;嚴重事故先 rollback 或關閉 feature flag。修復後會補 regression test 和監控,避免只修表面症狀。

分享:XLinkedIn
← 上一篇即時資料怎麼選?Polling、SSE、WebSocket 比較
下一篇 →我是如何用 Next.js 打造這個技術 Blog