在本文中,我們將概述一個健壯且高效的 Web 應用程式發布流程,該流程圍繞基於主幹的開發和基於環境的功能標誌構建。這種方法可確保持續整合、生產中的輕鬆測試以及從開發到發布的順利路徑,同時保持高品質標準。
核心原則
-
基於主幹的開發:
- 主幹分支充當所有開發工作的單一事實來源。
- 開發人員從新功能或 Jira 票證的主幹建立功能分支(例如,feature/xyz)。
- 拉取請求(PR)從這些功能分支提交到主幹,以便在測試成功後進行審查和合併。
-
環境為基礎的功能標誌:
- 功能標誌用於控制跨環境的功能活化。
- 標誌儲存在特定於環境的設定檔中或作為 CI/CD 管道配置的一部分。
- 在主幹分支中,所有功能標誌預設為 OFF。
- 可以根據需要在特定環境(例如沙盒、暫存或生產)中ON切換標誌。
Sprint 中的 JIRA 版本
環境部署流程
-
沙箱或暫存環境:
- 對於 QA 和整合測試,團隊可以從主幹建立一個以 sandbox/ 為前綴的分支(例如 sandbox/xyz)。
- 此分支使用 CI/CD 管道部署到專用的沙箱或臨時環境。
- QA 團隊可以驗證新功能,整合測試可以確保相容性。
- 在此環境中將功能標誌切換為ON以測試特定功能。
-
生產發布準備:
- 要準備發布,請從主幹建立一個release/xyz 分支。
- release/xyz 分支作為候選版本,最初部署到 生產流量的 5% 用於 Beta 測試。
- 新功能的功能標誌在此分支中切換ON,以允許在生產中進行測試。
- Nginx 或類似的負載平衡器可以處理這種流量分割,確保只有一部分使用者看到變更。
功能標誌:範例與用法
-
標誌結構:
- 將功能標誌儲存在設定檔中(例如 config/feature-flags.json):
{ "feature_xyz": false, "feature_abc": true }
-
在運行時使用環境變數來控制標誌:
FEATURE_XYZ=true FEATURE_ABC=false npm start
-
後端範例:
- 在程式碼中切換標誌:
const featureFlags = require('./config/feature-flags'); if (featureFlags.feature_xyz) { console.log('Feature XYZ is enabled!'); } else { console.log('Feature XYZ is disabled.'); }
-
前端範例:
- 使用標誌有條件地渲染 UI 元件:
if (process.env.REACT_APP_FEATURE_XYZ === 'true') { render(<newfeaturecomponent></newfeaturecomponent>); } else { render(<oldfeaturecomponent></oldfeaturecomponent>); }
-
測試期間切換標誌:
- 要切換測試標誌,請更新配置或環境變數並重新啟動相關服務(前端或後端):
FEATURE_XYZ=true npm start
- 對於 CI/CD 管道,請確保在部署期間將適當的標誌值注入到環境中。
生產中測試
-
Beta 測試的流量路由:
- 使用Nginx配置來控制流量分配:
http { upstream stable_backend { server stable_backend_1; server stable_backend_2; } upstream canary_backend { server canary_backend_1; server canary_backend_2; } upstream mixed_backend { server stable_backend_1 weight=45; server stable_backend_2 weight=45; server canary_backend_1 weight=5; server canary_backend_2 weight=5; } server { listen 80; server_name my-app.example.com; location / { if ($http_x_qa_test = "true") { proxy_pass http://canary_backend; break; } proxy_pass http://mixed_backend; } } }
- 透過調整負載平衡器權重,將 5% 的生產流量路由到執行新版本的伺服器。
-
生產中的專門 QA 測試:
- QA 團隊可以將自訂 Cookie(例如 qa-test=true)附加到他們的請求中。
- Nginx 100% 檢查此 cookie 並將這些請求路由到新版本,確保在生產中進行有針對性的測試。
穩定發表
-
修正問題:
- 開發人員透過向主幹分支開放 PR 來修復 Beta 測試期間發現的任何問題。
- 合併後,這些修復程序將被精心挑選到release/xyz分支。
-
完成發布:
- 所有問題解決且分支穩定後,發布分支會被標記為語意版本(例如v1.2.0),觸發部署到穩定後端。
- 產生版本說明以用於文件並與利害關係人共用。
修補程式
-
建立修補程式分支:
- 對於緊急修復,請直接從最新的生產標籤建立一個 hotfix/xyz 分支。
- 修補程式分支遵循與發布分支相同的穩定和標記過程。
-
版本控制:
- 修補程式依照語意版本控制 (SemVer) 標準增加修補程式版本(例如,從 v1.2.0 到 v1.2.1)。
分行清理
- 定期刪除合併的分支以避免混亂。
- 定期刪除未使用的功能標誌以維持組織。
- 使用 GitHub Actions 或類似工具在合併後自動刪除分支。
替代品質保證與測試策略
除了 cookie,在生產中路由 QA 流量的其他策略包括:
-
基於標頭的路由:
- QA 會為他們的請求添加自訂標頭(例如 X-QA-Test: true)。
- Nginx 將這些請求路由到新版本進行測試。
-
基於 IP 的路由:
- 根據 QA 的 IP 位址限制新版本的流量。
-
基於驗證令牌的路由:
- QA 使用與角色或令牌綁定的特定測試帳戶登錄,以確保請求路由到新版本。
結論
此發布流程利用基於主幹的開發和基於環境的功能標誌來建立可擴展、可測試且生產安全的部署工作流程。透過使用沙箱環境、流量路由和專用測試策略,團隊可以提供高品質的功能,同時最大限度地降低風險。此方法可確保及早發現問題並有效解決,為無縫功能推出和修補程式鋪路。
以上是簡化 Web 應用程式的發布流程:具有功能標誌的基於主幹的開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中