本次沒有使用Pipeline,通過頁面配置實現,可根據頁面配置轉換為Pipeline;
最終實現效果:
1、配置gitlab webhook監聽merge請求,觸發jenkins job,同時jenkins job僅對master分支做響應(其他分支的merge請求自動忽略);
2、編譯代碼并生成Docker images;
3、推送images到阿里云容器倉庫
4、觸發阿里云k8s集群中的pod更新
所用插件及版本
Kubernetes Continuous Deploy Plugin 2.3.0
Jackson 2 API Plugin 2.11.2(非官方版,有bug,見文章最后解Bug部分)
docker-build-step 2.5
Webhook的配置
Jenkins部分
配置Build when a change is pushed to GitLab 部分
Gitlab部分
項目-> 設置 -> webhook
編譯代碼并生成Docker images
給k8s yaml文件配置環境變量
這里定義的環境變量可以傳送到yaml文件中引用;
編譯代碼
這部分按照自己的需求結合Dockerfile做即可
生成鏡像
推送Image到阿里云容器倉庫
觸發阿里云k8s集群更新
添加集群憑據
可以使用Enter directly直接將config內容放進去
配置k8s的更新
==========================
頁面配置結束,下面解插件bug
Kubernetes Continuous Deploy Plugin
任務臺輸出:
exception=Class not found: io.kubernetes.client.openapi.models.V1Service
解決方案:
拉取github代碼:
git clone https://github.com/jenkinsci/jackson2-api-plugin
git checkout jackson2-api-2.11.2
刪除
https://github.com/jenkinsci/jackson2-api-plugin/commit/cbbdf36843505efd5d2d7cd4769018e4cc09f450
這次提交的內容
在maven 的setting.xml里面添加:
<mirror>
<mirrorOf>m.g.o-public</mirrorOf>
<url>http://repo.jenkins-ci.org/public</url>
<id>jenkins-ci.org</id>
<name>Jenkins CI Public</name>
</mirror>
執行mvn clean verify 打包
將編譯好的hpi文件上傳更新即可