什么是敏捷開發?
是在高強度反饋的情況下,短周期,不斷的迭代產品,滿足用戶需求,搶占更多的市場
敏捷開發是什么?
是一種產品快速迭代的情況下,降低出錯的概率,具體會落實到公司的規章制度上,去確保快速響應,快速迭代
什么是CI/CD
是一種持續交付,持續部署并自動測試的自動化軟件系統,是敏捷落地的具體產物,
我以我在前東家了解到的業務實踐場景,簡述下:
CI
CI是持續提交,具體體現在開發同學,可以在github不停的提交分支代碼,Jenkins自動拉取最新的分支代碼部署,測試同學 在ModHeader 中設置 X-Env-Branch: 分支名稱(一個瀏覽器插件,用于修改HTTP請求頭),后端就會自動將請求路由到對應分支環境的鏡像實例,實現多分支并行測試的能力,且互不干擾。
這個是我目前見過最好的一個落地實踐,在部署完畢之后,還可以自動執行核心測試套件(接口返回200),進行自動化測試,測試不通過,自動@提交者,提供接口測試報告,提交者(開發者)可以查看那些接口有問題,進行修改,提高效率
CD
是隨時可以發布,但是具體到實施,都是有固定的時間節點,錯過了,需要走緊急發布郵件通知負責人,這樣做的好處是:在特定節點上線,有利于集成測試環境的回歸,確保所有本次要上線的分支,都合到集成測試環境,所有的改動,都在集成測試環境中回歸驗證過;
CD發布的環境,可以具體劃分為
分支測試環境:對應上述的CI開發提交代碼到github,Jenkins自動拉去部署
集成測試環境:分支測試沒有問題,便把代碼合到master分支,Jenkins自動拉取并部署
stage環境:和線上共用同一個庫,區別是沒有流量的進入
生產環境:真實用戶使用的環境
比較好的CD落地是,測試同學可以手動設置不同的tag進行發布,并關聯jira上需求的狀態,對需求的狀態相互驗證,如果當前環境有問題,測試同學可以選擇測試不通過,或者發布中止,進入回滾流程,選最近一次生產發布過的tag,進行快速回滾