本次没有使用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文件上传更新即可