Jenkins针对Java项目的持续集成实现及相关python API调用

一、流程介绍

持续集成,是指用户将代码提交到gitlab后,进行自动部署的过程。代码push到lab之后,触发Jenkins进行代码的下拉,完成maven编译和打包功能,随后通过脚本或SSH服务生成镜像,完成镜像push到仓库以及在部署服务器上pull并运行该镜像的过程。本次实践中共两台服务器,一台为Jenkins服务器, 另一台为docker镜像仓库和部署服务器。
流程示意图

二、Jenkins配置

为了实现python API的调用,先要熟悉Jenkins的配置与使用。下面这一部分将介绍部署一个Java项目并完成自动打包和镜像推动与运行的完整流程。本次采用的策略为在Jenkins服务器生成war包后,在本地生成镜像推到仓库,并通过SSH服务在部署服务器上直接运行。因此,在Jenkins服务器和部署服务器都要有docker安装。如果Jenkins服务器无docker,也可以将war包通过SSH服务送到部署服务器上,在该服务器直接生成镜像并运行。接下来的操作将按照第一种策略进行。

参考链接:jenkins+docker实现自动编译、打包、构建镜像、容器部署

1. 准备工作
1.1 Docker Remote API

在部署(仓库)服务器上,运行指令:

vim /lib/systemd/system/docker.service

ExecStart修改为如下指令:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
1.2 私有镜像仓库

在镜像仓库服务器上,运行如下指令,可以按情况修改映射端口号5003:

docker run -d -v /opt/registry:/var/lib/registry -p 5003:5000 --restart=always --name registry registry

由于Docker CLI客户端默认以HTTPS访问,而部署的registry并未提供HTTPS,因此,需要添加HTTP可信任。在两个服务器上都需要运行:

vi /etc/docker/daemon.json

添加如下内容,修改地址为仓库服务器地址加上刚设置的映射端口号:

{
"insecure-registries":["192.168.xxx.xxx:5003"]
}

运行完毕后,镜像仓库搭建完毕,通过这个地址即可进行docker镜像push与pull。随后,更新配置文件并重启docker服务。

systemctl daemon-reload
systemctl restart docker
1.3 构建Tomcat镜像

Docker可以依照Dockerfile文件进行镜像的配置。在之后的进程中,我们是通过在Tomcat和jdk的镜像下加入构建的项目war包,将这个扩充的镜像运行从而实现项目的部署。因此,我们需要搭建一个有Tomcat,jdk环境的镜像。
在仓库服务器上运行指令:

vim Dockerfile

添加如下内容:

FROM centos:7

ENV VERSION=8.5.60
ENV JAVA_HOME /usr/local/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/tomcat
ENV CATALINA_BASE /usr/local/tomcat

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
RUN yum install wget -y
COPY jdk1.8.0_211 /usr/local/jdk/
RUN wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
    tar zxf apache-tomcat-${VERSION}.tar.gz && \
    mv apache-tomcat-${VERSION} /usr/local/tomcat && \
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/*

EXPOSE 8080
CMD ["catalina.sh", "run"]

这里的jdk压缩包已经在本地下载和解压,以jdk1.8.0_211保存在/root/目录之下。Tomcat则是通过镜像下载。Jdk压缩包可以通过以下链接下载合适的版本:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

保存之后,运行指令进行镜像构建:

docker build -t 192.168.xxx.xxx:5003/hxkg-tomcat-8.5 .
docker push 192.168.xxx.xxx:5003/hxkg-tomcat-8.5
2. Jenkins扩展包安装与全局变量设置

在左侧Manage Jenkins—Manage Plugins下安装docker-build-step, Publish Over SSH, Credentials Plugin

在Manage Jenkins—Configure System下,将Docker URL改为镜像仓库的服务器地址

Docker url修改

在Publish over SSH里添加SSH服务器,添加要部署的服务器地址

添加SSH服务器

3. 项目构建

在进入Jenkins服务后,点击左侧的新建Item,选择maven项目

创建项目

在源码管理中,添加gitlab地址。Credentials为登录需要的账号密码信息。如果之前未设置,需要点右边手动添加。也可以用GitHub上的代码运行,在此提供一个简单的样例:https://github.com/sebsto/webapp.git

源码管理

设置构建触发器
构建触发器

设置Post Steps,添加Execute Shell,注意修改仓库的IP地址
Shell

#You can change the name after 192.168.xxx.xxx:5003/
REPOSITORY=192.168.xxx.xxx:5003/test
# Write the Dockerfile
cat > Dockerfile << EOF
FROM 192.168.xxx.xxx:5003/hxkg-tomcat-8.5:latest
RUN rm -rf /usr/local/tomcat/webapps/*.war
COPY target/*.war /usr/local/tomcat/webapps
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
EOF
#Build image
docker build -t $REPOSITORY .
#Upload Image
docker push $REPOSITORY

添加SSH服务,服务器地址为需要部署的服务器。因为镜像已经推到了仓库,不需要传送文件,只需要运行指令。如果仓库和部署服务不在一台服务器上,还需要pull镜像。
SSH command

#Keep the name same with you set above
REPOSITORY=192.168.xxx.xxx:5003/test
docker rm
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值