Jenkins构建镜像并发布更新至Kubernetes

本次没有使用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 部分


生成token

Gitlab部分

项目-> 设置 -> webhook


配置webhook

编译代码并生成Docker images

给k8s yaml文件配置环境变量

这里定义的环境变量可以传送到yaml文件中引用;
配置环境变量

编译代码

这部分按照自己的需求结合Dockerfile做即可

生成镜像

生成镜像

推送Image到阿里云容器仓库

推送镜像

触发阿里云k8s集群更新

添加集群凭据

可以使用Enter directly直接将config内容放进去


添加凭据

配置k8s的更新

配置更新

==========================

页面配置结束,下面解插件bug

Kubernetes Continuous Deploy Plugin

Bug问题讨论:
https://stackoverflow.com/questions/62688901/class-not-found-io-kubernetes-client-openapi-models-v1service

任务台输出:
exception=Class not found: io.kubernetes.client.openapi.models.V1Service


Console Log

解决方案:

拉取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里面添加:

 
      m.g.o-public
      http://repo.jenkins-ci.org/public
      jenkins-ci.org
      Jenkins CI Public
 

执行mvn clean verify 打包
将编译好的hpi文件上传更新即可

Jenkins中文社区首发

你可能感兴趣的:(Jenkins构建镜像并发布更新至Kubernetes)