标签:名称 eve admin 安装完成 add -name 系统设置 blog 版本
在完成前文的pipeline项目构建和更新之后,本文我们来测试maven项目的构建自动发布。具体环境要求如下:
1、docker私有仓库(本例中使用vmware企业级产品harbor)
2、jenkins插件Publish Over SSH安装完成
3、Jenkins Slave Pod中需要有Docker环境(因为post step1中需要将war文件打包到docker镜像中,因此Jenkins Slave需要有Docker环境,本例中采用在云环境pod模板中添加hostpath挂载的方式实现)
4、项目代码中需要包含如下文件
Dockerfile(用来编译docker镜像)
tomcat.yaml(用来初次部署,根据实际情况包含deployment、service、ingress、pv\pvc等)
rolling-update.sh(用来滚动更新)
1、Dockerfile
FROM harbor.59iedu.com/fjhb/tomcat_base:v1.0
MAINTAINER ylw "ylw@fjhb.cn"
RUN rm -rf /home/tomcat/webapps/*
COPY target/*.war /home/tomcat/webapps/ROOT/
RUN cd /home/tomcat/webapps/ROOT/ && jar -xvf *.war && rm -rf *.war
harbor.59iedu.com/fjhb/tomcat_base:v1.0 镜像的dockerfile请参考前文:
http://blog.51cto.com/ylw6006/2107307
2、tomcat.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat-jcsj
namespace: default
spec:
replicas: 2
template:
metadata:
labels:
k8s-app: tomcat-jcsj
spec:
containers:
- image: harbor.59iedu.com/fjhb/jcsj:vBUILD_NUMBER
name : tomcat-jcsj
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: app-logs
mountPath: /home/tomcat/logs
- image: harbor.59iedu.com/fjhb/filebeat:v1.0
name: filebeat
imagePullPolicy: Always
volumeMounts:
- name: app-logs
mountPath: /log
volumes:
- name: app-logs
emptyDir: {}
imagePullSecrets:
- name: harborsecret
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-jcsj
labels:
k8s-app: tomcat-jcsj
spec:
type: NodePort
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: http
nodePort: 8480
selector:
k8s-app: tomcat-jcsj
3、rolling-update.sh
#!/bin/sh
NAMESPACE=default
DEPLOYMENT=tomcat-jcsj
REGISTRY=harbor.59iedu.com/fjhb/jcsj
FILE=tomcat.yaml
BUILD_NUMBER=1
if [ $BUILD_NUMBER -eq 1 ];then
kubectl apply -f $FILE
else
kubectl set image deployment/$DEPLOYMENT $DEPLOYMENT=$REGISTRY:v$BUILD_NUMBER --namespace=$NAMESPACE
fi
1、添加k8s master的ssh认证信息
点击“jenkins” —— “系统管理”—— “系统设置”——“Publish over SSH”
输入主机的名称、ip地址及用户名,点击“高级”,在“passphrase/password”栏输入密码,点击下方的“Test Configuration”测试连接,当出现“Success”提示时说明连接成功。
2、在云环境的pod模板中添加docker环境
点击“jenkins” ——“新建” ——“构建一个maven项目”,输入项目的名称,点击“OK”
勾选“Restrict where this project can ben run”,输入前面创建kubernetes环境时配置好的容器模板名称jenkins-slave。这样在运行构建任务的时候会k8s集群自动启动一个slave pod进行构建工作,构建工作完成后自动销毁pod
1、可以选择git或者svn进行源码管理,如果没有出现这两个按钮,需要去安装相应的插件
2、点击credentials栏的add按钮可以添加svn账号信息,选择类型为“username with password
”
3、checkout strategy选择“use svn update as much as possible”
在构建触发器配置中选择“build wheneven a snapshot dependency is built”
Root POM框输入pom.xml
Goals and options框输入clean compile package
点击“add post-build step”——“execute shell”——“run only if build susseeds”
shell脚本内容如下:
IMAGE_NAME="harbor.59iedu.com/fjhb/jcsj:v$BUILD_NUMBER"
CONATINER_NAME="jcsj-dev"
echo "192.168.1.227 harbor.59iedu.com" >> /etc/hosts
cd /home/jenkins/workspace/maven-test/
sed -i "s/BUILD_NUMBER/$BUILD_NUMBER/g" tomcat.yaml
sed -i "s/BUILD_NUMBER=1/BUILD_NUMBER=$BUILD_NUMBER/g" rolling-update.sh
docker login harbor.59iedu.com -u admin -p Harbor12345
docker build -t $IMAGE_NAME .
docker push $IMAGE_NAME
上述脚本的作用是将前面编译好的war包build成镜像文件并推送到仓库,并完成部署文件和自动更新文件中的镜像版本号修改。
点击“add post-build step”——“Send files or execute command over SSH”
1、Name框选择前面创建好的k8s master节点vm1
2、Source files 框输入tomcat.yaml, rolling-update.sh
3、Exec command框输入sh rolling-update.sh
1、构建前
2、构建中
3、构建完成
4、测试与验证
标签:名称 eve admin 安装完成 add -name 系统设置 blog 版本
原文地址:http://blog.51cto.com/ylw6006/2159914