一、CI/CD
持續集成(continuous Integration,CI):代碼合並、構建、部署、測試都在一起。不斷執行這個過程,並對結果反饋。
持續部署(Continuous Deployment,CD): 部署到測試環境、預生產環境、生產環境。
持續交付(Continuous Delivery,CD):將最終產品發布到生產環境,給用戶使用
CI/CD 的最終目的是自動化,減少人工干預,提高總體的產品交付質量。
非容器化的CI/CD常出現因為環境不一致導致各種問題。
Pipeline優勢:
- 項目發布可視化,明確階段,方便處理問題
- 一個Jenkinsfile文件管理整個項目生命周期
- Jenkinsfile可以放到項目代碼中版本管理
Jenkinsfile 文件就是指pipeline script的腳本保存的文件。在流水線中,可以使用pipeline腳本文件,處理文件比之前每個項目都點擊按鈕去修改配置要方便。
Jenkinsfile保持在倉庫中,在Jenkins里面調用即可:
Jenkins 與Docker/Kubernetes的自動化CI流水實踐
下面內容是核心,有4個步驟:拉取代碼-代碼編譯-打包成鏡像推送到鏡像倉庫-部署
鏡像倉庫:
填寫上需要構建的版本。
以上是docker單機的發布流程。
下面講解,基於kubernetes的集群實現方案。Jenkins會調用k8s動態創建pod,這個pod是作為Jenkins的slave來執行任務的(拉代碼,構建,打包,發布),任務執行完了,這個pod會自動消除。而Jenkins原本的pod 是作為master。這樣就解決了master並發數不夠情況下等待的問題。
Jenkins在k8s集群中以容器方式運行:
編寫Jenkinsfile
deploy.yaml 文件:
這幾個文件就說明了這個項目怎么跑起來
Jenkins做了master和slave
檢查啟動情況:
訪問: