CI Continuous Integration
持續整合
開發人員持續把新的Code整合到共同專案中
並自動進行(建置與測試)
不要累積很久才一次合併,而是持續整合、持續檢查
CD Continuous Delivery
持續交付/部署
通過測試後,讓軟體保持在隨時可以部署的狀態
假設今天一個開發團隊有4個開發人員一起寫一個網站
A人員寫:登入功能
B人員寫:購物車
C人員寫:付款功能
D人員寫:會員資料
如果大家都各寫一個月,直到最後一天才把程式整合在一起
那有可能會發生:
等等的問題
而CI的概念就是頻繁整合並且頻繁測試,不要把問題累積到最後一次爆發
流程會像是:
開發人員寫Code -> 提交修改 -> 程式碼儲存庫 -> 自動建置 -> 自動測試 -> 觀察成功或失敗
為什麼需要?
假設昨天系統正常,但今天A提交了一小段程式碼後測試失敗
那就可以很明顯知道大概是哪一段出現問題
但如果是幾個月後再一次整合所有程式碼
可能很多地方都有問題,並且因為很大量的程式碼要追查也困難
早點發現整合問題就是CI的重點
建置
把開發中的程式碼,整理/轉換成可執行或可部署的成果
自動測試
講的就是在DAY37中學過的SAST(靜態應用程式安全測試)
假設剛剛CI的過程最後成功了
接下來系統會準備好一個隨時可以發布的版本
持續交付 Continuous Delivery
是指在CD通過後
等待人工核准
最後才正式部署
系統自動準備好,但正式上線可由人來決定
持續部署 Continuous Deployment
設立好條件,在CD通過後
只要符合條件,就自動上線
整個CI/CD流程套上DevSecOps(SAST、DAST)會變成:
只要中間有任何一關失敗了,就回去重修
DevSecOps是
理念與工作方式(開發+安全+維運)
CI/CD是
把這個理念落實成自動化流程的一種重要方法
IPAS 113-2 Q28
DevSecOps 是軟體開發過程中,每個階段整合安全測試的實務,它是 DevOps 實務的延伸。請問下列何項「不」包含在 DevSecOps 所定義的文化內容?
C:規劃
DevSecOps三大核心就是:
Dev(Development)→ 開發
Sec(Security)→ 安全性
Ops(Operations)→ 營運