1.安裝jenkins(略)
2.安裝完成后,訪問8080,配置一個新的admin用戶擎勘,然后安裝一些需要的插件(我是默認推薦安裝的),額外還需要一個Publish over SSH插件颖榜,為了之后都調(diào)用別的服務(wù)器上的命令
3.構(gòu)建一個freestyle的工程棚饵,第一項General要使用參數(shù)化構(gòu)建,設(shè)置一個VERSION的變量(后面迭代時使用)掩完;然后還要選擇丟棄舊的構(gòu)建噪漾,時間和保留個數(shù)自己定
4.配置源碼管理,選擇項目的git地址且蓬,然后Credentials選擇對應(yīng)的賬號密碼(沒有也可以當(dāng)時新建)(遇到問題欣硼,github經(jīng)常訪問不了,導(dǎo)致代碼沒拉下來恶阴,不重要诈胜,企業(yè)肯定都是內(nèi)部的)豹障。Branches to build指定要處理的分支。
5.后面幾項不管焦匈,直接到構(gòu)建沼填,選擇執(zhí)行shell,填寫要執(zhí)行的命令:
mvn install -DskipTests
cd target
mv demo01-0.0.1-SNAPSHOT.jar demo01.jar
echo "當(dāng)前版本:${VERSION}"
因為jenkins默認目錄在/var/lib/jenkins/workspace/github上拉下的項目? 下括授,所以可以直接執(zhí)行mvn坞笙。
6.暫時保存下現(xiàn)有的配置,先回到主面板設(shè)置-》系統(tǒng)設(shè)置中荚虚,找到Publish over SSH模塊配置ssh薛夜,填寫name(服務(wù)器的名字隨便起),Hostname和Username版述,再在高級中輸入passowrd梯澜,然后保存即可。
7.再進入Item的配置渴析,在構(gòu)建中可以增加構(gòu)建步驟晚伙,選擇execute commands over SSH:
執(zhí)行的命令是將jar包通過dockerfile構(gòu)建為鏡像,其中VSERSION變量為jenkins構(gòu)建時傳入俭茧,最后將鏡像推送至本地鏡像倉庫咆疗。
8.通過ssh到k8s的master節(jié)點通過kubectl命令來更新容器(這一步我感覺可以不在jenkins做,因為這一步操作比較靈活(使用滾動更新母债,金絲雀什么的)午磁,運維在服務(wù)器上去執(zhí)行比較好,對應(yīng)cicd毡们,推送新的鏡像至鏡像倉庫就算成功)迅皇。ssh執(zhí)行的命令:/var/k8s-yaml/processDemo01.sh ${VERSION}
processDemo01.sh 內(nèi)容:
# 獲取服務(wù)對應(yīng)的運行的容器個數(shù)(使用jenkins有點不好,在delete銷毀k8s的deployment時衙熔,還需要一段時間登颓,下面這個命令會返回不為0的結(jié)果,所以不夠靈活)
number=`kubectl get pods |grep demo01|wc -l`
if [ $number -gt 0 ];then
? ? echo '重新設(shè)置鏡像'
? ? kubectl set image deployment deploy-demo01 demo01=192.168.56.100/zzn/demo01:$1? ?# $1為jenkins構(gòu)建時傳入的version變量
else
? ? echo '新創(chuàng)建deploy'
? ? kubectl apply -f /var/k8s-yaml/demo01.yaml? ? ?# 這里要寫絕對路徑红氯,否則jenkins找不到
fi
9.構(gòu)建即可