Jenkins发布Docker到k8s

Jenkins发布Docker到k8s

Docker 镜像push到仓库后,算是完成了构建打包的过程。发布时,可以通过Jenkins远程操作kubernetes集群master实现容器调度。本文介绍如何通过编写groovy脚本自动获取images tag,实现Jenkins参数化构建。

Jenkins配置

安装插件

  1. 参数化构建插件:Active Choices Plug-in
  2. 远程ssh插件:SSH plugin或者Publish Over SSH

配置插件

  1. 进入系统设置,添加ssh site或者SSH Servers,可以使用用户名密码或者key。
  2. 使用Active Choices Plug-in 新建job,选择参数化构建,使用Active Choices Parameter,选择groovy script: groovy脚本如下:my-registry对应私有参考ip或者域名
import groovy.json.JsonSlurper
import hudson.model.*
/**
 * Created by erdaoay on 17/3/17.
 */

//get jenkins job_name
def build = Thread.currentThread().toString()
def regexp= ".+?/job/([^/]+)/.*"
def match = build  =~ regexp
def job_name = match[0][1]

// call registry v2 api
def url =  'http://my-registry:5000/v2/overseas/'+ job_name + '/tags/list'
def tags = url.toURL().text
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText(tags)

// return tags
return object.tags

保存后,构建,即可看到参数中列出了镜像版本。

根据使用ssh插件不同,可以在构建时选择execute shell script no remote host using ssh或构建后操作选择send build artifacts over ssh。然后输入需要执行的脚步或者命令,例如

# VERSION:上面参考构建的name
# update_app.sh  操作k8s或者swarm的脚本
sh -x /home/centos/update_app.sh  ${JOB_NAME}  ${VERSION}

截图: groovy脚本

shell脚本

效果 从图中可以看出,docker镜像有四个版本。其中对maven snapshot的版本,添加了时间戳和git提交id。

CONTENTS