Jenkins + Gradle + Docker 自动化部署 SpringBoot 项目到远程服务器

一、Jenkins 下载安装

Jenkins 的下载和安装见这篇文章:Jenkins持续集成环境部署

另外,有以下几点需要注意一下:

汉化显示不全的问题:

安装 Locale Plugin 和 Localization: Chinese (Simplified) 插件,然后在系统设置中设置语言:

很奇怪,这里配置成 zh_US 反而全部显示为中文,配置为 zh_CN 则有一部分显示为中文,可能和版本有关。

权限问题:

在使用 Jenkins 的时候经常会遇到权限问题,我们进行如下配置:

在 系统管理 -> 全局安全配置 中,勾选如下两个选项:

二、Publish Over SSH

在插件管理中安装插件 Publish Over SSH

在系统管理 -> 系统配置中设置 Publish Over SSH,用于目标服务器的连接

三、设置全局全局工具配置

在 系统管理 -> 全局工具配置 当中设置 JDK、Git、Gradle 安装路径

注意:git 是要设置到执行程序那一层,不只是安装目录。这三个软件都需要在对应的服务器上安装并配置好环境变量。

四、新建任务

由于是 Gradle 项目,所以我们选择 “构建一个自由风格的软件项目

下面说几个关键的配置点:

到达一定的天数或构建数目则自动废弃前面的构建

设置项目代码存放的地址和用户名密码,并指定需要构建的分支

构建触发器,有定时、轮询等情况。GitHub hook选项的意思是,检测代码有没有更新,如果有更新则自动构建。但前提是:GitHub收到提交的代码后要主动通知Jenkins,所以Jenkins所在服务器一定要有外网IP,并且还需要做一系列的配置,本文我们暂时不做详细的介绍。

构建步骤选的是:执行 shell,由于我要打包的是 manager 模块,所以先进入 manager 目录。先执行 gradle clean 清除之前打的包,再执行 gradle build 命令重新打包。整个项目的代码下载存放的路径在服务器的:/root/.jenkins/workspace 目录下,GradleTest 为我们在 Jenkins 中创建的构建任务名。

构建后操作选择:Send build artifacts over SSH,将打好的 Jar 包发送到目标服务器指定的目录下,然后根据命令生成镜像,运行容器。

注意:生成镜像的前提是目标服务器上已经安装完成 docker 服务,基础镜像已经下载完成,dockfile已经正确编写。

这样我们一次构建就已经完成了 代码下载、打包、停止并删除目标服务器指定的容器、删除镜像、重新生成镜像、启动容器等步骤,通过这一系列的动作完成了整个SpringBoot的项目的环境部署。

通过 docker 命令查询容器运行的日志可查看容器运行的情况,如下:

红框部分为我们对 SpringBoot 项目进行请求时打印的日志。

附上创建镜像的 dockfile 供大家参考:

FROM centos

MAINTAINER Jack

VOLUME /tmp

ADD jdk-8u212-linux-x64.tar.gz /usr/local

ADD manager-1.0.0-SNAPSHOT.jar /app.jar

ENV JAVA_HOME /usr/local/jdk1.8.0_212
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV LANG C.UTF-8

EXPOSE 9187

ENTRYPOINT ["java","-jar","/app.jar"]

centos:基础镜像,需要从 docker 远程仓库下载到本地

添加了两个包:JDK 和 应用程序的 Jar 包

EVN:配置 JDK 的环境变量和字符集

EXPOSE:暴露的端口,需要与 SpringBoot 项目中配置文件中的端口一致,否则外部无法访问。

posted on 2020-08-26 18:49  破解孤独  阅读(1691)  评论(0编辑  收藏  举报

导航