Jenkins BlueOcean 多分支 部署 Kubernetes 應用
在實際的項⽬ 中,往往⼀個程式碼倉庫都會有很多分⽀的,⽐如開發、測試、線上這些分⽀都是分開的,⼀般情況下 開發或者測試的分⽀我們希望提交程式碼後就直接進⾏ CI/CD 操作,⽽線上的話最好增加⼀個⼈⼯⼲預 的步驟,這就需要 Jenkins 對程式碼倉庫有多分⽀的⽀持。這裡我們使用 BlueOcean 來完成此處的 CICD 。
外掛安裝
登入 Jenkins Web UI -> 點選左側的 Manage Jenkins -> Manage Plugins -> Available -> 搜尋查詢 BlueOcean -> 點選下載安裝並重啟
建立新 pipeline
安裝完成後,我們可以在 Jenkins Web UI ⾸⻚左側看到會多⼀個 Open Blue Ocean 的⼊⼝,我們點 擊就可以開啟
點選開始建立⼀個新的 Pipeline,我們可以看到可以選擇 Git、Bitbucket、GitHub,我們這⾥ 選擇 GitHub,
可以看到這⾥需要⼀個訪問我們 GitHub 倉庫許可權的 token,在 GitHub 的倉庫中建立⼀個 Personal access token:
將⽣成的 token 填⼊下⾯的建立 Pipeline 的流程中,然後我們就有許可權選擇⾃⼰的倉庫,包括下⾯需要構建的倉庫,⽐如我們這⾥需要構建的是 jenkins-demo 這個倉庫,然後建立 Pipeline 即可:
Blue Ocean 會⾃動掃描倉庫中的每個分⽀,會為根⽂件夾中包含Jenkinsfile的每個分⽀建立⼀個 Pipeline,⽐如我們這⾥有 master 和 dev 兩個分⽀,並且兩個分⽀下⾯都有 Jenkinsfile ⽂件,所以建立完成後會⽣成兩個 Pipeline。
兩個檔案中 k8s.yaml 檔案中 namespace 不一樣,用來區分不同的分支
構建結果
~]# kubectl get pod -n default -o wide # master 分支部署到 default 分支 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES mvnweb-demo-8f8d69455-l4s4c 1/1 Running 0 5m5s 10.244.1.3 node2 <none> <none> ~]# kubectl get pod -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES mvnweb-demo-8ef7d50-578945f7fb-cr6kv 1/1 Running 0 5m40s 10.244.1.2 node2 <none> <none>
{{uploading-image-92142.png(uploading...)}}