jenkins配合kuboard实现简单发布
一、简介:
1、构建应用类型:
本例子中构建的应用类型为java应用
2、配置文件读取方式:
配置文件为内置在jar包中的多个配置文件,并通过bootstrap.properties来读取
3、基础镜像:
本例子中的基础镜像为openjdk,第一次通过Dockerfile方式,将jar包构建进去并生成一个新的镜像,之后的每次构建,将此新镜像作为基础镜像,只需要将jar包以及配置文件通过COPY方式拷贝到镜像对应目录中中,然后再通过docker build -t 构建新的镜像即可,此方式可减少重新构建所有内容的时间,提高效率
4、构建流程:
首先通过jenkins构建,构建后在相应的项目路径下,生成对应的文件、目录以及jar包,然后手动方式创建配置文件bootstrap.properties文件,以及Dockerfile,通过docker build进行构建,再通过docker push 推送到harbor仓库中,最后一步,调用kuboard的cicd命令执行发布。
二、实现:
1、安装jenkins的Date Parameter插件:
在插件管理,可选插件位置,搜索后安装即可
作用:在后面的构建过程中,每次构建的镜像版本都是对应的不同的日期时间,并推送到仓库中,可方便回滚。

2、配置参数化构建:
可选择文本参数,设置参数名称,以及参数的值,后面的bootstrap.properties可以用到,如图:

3、执行shell构建镜像并推送仓库:
cat > bootstrap.properties <<EOF #创建配置文件bootstrap.properties
spring.cloud.config.profile=${config} #此处变量 获取的值即为上图中设置的文本参数的值
EOF
cat > Dockerfile << EOF #创建Dockerfile,以已经构建过的镜像作为基础镜像
FROM sign-java
COPY bootstrap.properties /opt/
COPY sign-core-system/target/sign-core-system-0.1.1-SNAPSHOT.jar /opt/
EOF
docker build -t harbor.com/sign-iyin/sign-java:${datetime} . #执行构建,此处版本号为对应的日期时间
sleep 1
docker push harbor.com/sign-iyin/sign-java:${datetime} #构建完成后,推送到harbor仓库中(需要确保构建机器可以登录仓库成功)

4、发布到k8s集群中:
curl -X PUT \
-H "content-type: application/json" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=p2hx66ajxn8i.rh5dm4c6yar7j6j6em3pj6zdnazb46ee" \
-d '{"kind":"deployments","namespace":"iyin","name":"sign-test","images":{"harbor.com/sign-iyin/sign-java":"harbor.com/sign-iyin/sign-java:'${datetime}'"}}' \
"http://192.168.51.248/kuboard-api/cluster/iyin-k8s/kind/CICDApi/admin/resource/updateImageTag"
上面命令为kuboard中的CICD对应的发布命令,其中的${datetime}位置,需要额外通过单引号引起来,这样引用变量才会生效,否则发布时候找不到镜像。
5、重启Deployment:
curl -X PUT \
-H "Content-Type: application/yaml" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=p2hx66ajxn8i.rh5dm4c6yar7j6j6em3pj6zdnazb46ee" \
-d '{"kind":"deployments","namespace":"iyin","name":"sign-test"}' \
"http://192.168.51.248/kuboard-api/cluster/iyin-k8s/kind/CICDApi/admin/resource/restartWorkload"
注意:上述只是描述了部分内容,标准的git仓库配置,以及其余的配置不再描述,192.168.51.248为kuboard的安装地址


