原理图

鉴于网上很多资料一上来直接就开干了,这里我先把这几天所经历的理解化成一张图,以便后续内容更加容易理解。



由上图可以清晰的看到,只要我们再本地的Idea提交代码到GitHub远程仓库,随后Github触发一个web hook(简单来说就是一个Http请求)。随后Jenkins接收到这个请求之后,开始根据我们预先设置好的方式构建部署包。然后通过ssh推送到应用服务器部署(部署方式很多样,可以根据个人需求部署)。

前期准备

Jdk11安装

由于jenkins服务器是java语言开发的应用,这里需要先安装jdk,而我也想统一jdk的版本,这里选择使用Oracle提供的最新版jdk11。下载推荐使用迅雷下载,比一般的浏览器要快一点。

点击下载地址下载,这里使用的是jdk-11.0.6_linux-x64_bin.rpm版本,适合centos系统的安装。上传到你的jenkins服务器,使用安装命令完成。

rpm -ih jdk-11.0.6_linux-x64_bin.rpm

Jenkins安装

点击下载地址下载安装包。同样使用以下安装命令完成安装。

rpm -ih jenkins-2.204.2-1.1.noarch.rpm

启动jenkins。

systemctl start jenkins

提示:使用jdk11可能会出现如下的提示:

AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"

实际上这个选项已经启用了,只是jdk11把awt的组件去除了,所以需要安装这一部分组件中。执行一下命令即可:

yum install java-1.7.0-openjdk urw-fonts

Maven安装

由于我的项目是基于Maven的SpringBoot项目,所以需要以Maven构建一个部署包,这里顺便安装一下。

点击下载地址下载。

解压压缩包,我把maven放在目录/opt/maven中,具体的环境变量设计请自行百度,这里的安装目录和后续配置有关,所以我提了一下。

Jenkins的设置

jenkins默认在8080端口部署,所以打开浏览器页面就能进入页面。进入页面后需要输入一个原始的admin密码,根据提示找到密码输入,后面可以自己设置一个帐号密码。

接下来就会有一个推荐插件安装的页面。我个人推荐直接跳过这个步骤,因为在内地的网络环境安装会非常的卡,同时很有可能会把程序给卡崩溃,这个后面会提到解决方法。

之后进入就可以看到如下界面。

插件安装

进入Manage Jenkins => Manage Plugins =>Available 查找自己想要的插件。这里推荐几款这次教程需要的插件:

1.Localization: Chinese (Simplified)

中文翻译包,想看英文的可以跳过。

2.GitHub plugin、GitHub Integration Plugin

GitHub相关。

3.Maven Integration plugin

Maven相关。

4.Publish Over SSH

Maven生成的Jar包,通过这个插件进行推送,并执行应用服务器的脚本。

插件安装系列问题:

(1)速度慢,经常失败。

更改插件镜像的地址,在Advance选项下面,Update Site这里填写相应的URL地址。这个需要自行百度查找哪个提供的插件镜像较快,个人推荐一个:http://mirror.xmission.com/jenkins/updates/update-center.json。这个同时需要一点耐心去完成,因为在内地的网络无论你用哪个都不会快。而我用香港的服务器都是5s之内就能完成。

(2)插件安装提示有依赖插件没有更新或安装

这个按照提示去找对应的依赖插件即可,同时有的插件完成安装后需要重启jenkins,所以准备时间会比较繁琐一点。

变量配置

1.全局工具配置

这里以jdk为例,其它的git、和maven以同样的方式处理,如果没安装,自行百度安装。

如下图所示,取消勾选自动安装,然后JAVA_HOME就是你Jenkins服务器的JAVA_HOME路径,可以使用which java这个命令查找路径。

2.系统配置

(1)Publish over SSH

点击add server添加一个远程的应用服务器。我的如下图所示



name:一个名字,自己随意填写。

HostName:应用服务器地址,可以是ip地址,也可以是一个域名。

Username:应用服务器的用户,这里生产环境最好不用root,我就随意了。

Remote Directory:应用服务器的访问目录,请确定你的用户有该目录的操作权限

Password:勾选上面的选择框,然后输入你的密码即可。当然这里也有其它验证方式, 具体自己找一下。

拉到底下,还有一个测试按钮,可以测试自己的配置是否成功。

3.凭证配置

点击 :

输入你的GitHub帐号密码,这里是用于后面的GitHub仓库代码的拉取,后面其它需要用到凭证的地方也可以以同样的方式添加。

搭建项目

jenkins的配置已经初步完成,我本文的例子是使用Maven来构建的SpringBoot项目。所以接下来先创建一个Maven项目。输入名字即可创建完成,接下来就是项目的配置了。

1.通用配置

General配置可以不配置,但这里我选择勾选上丢弃旧的构建,防止构建的jar包挤满硬盘空间。详情如图所示。

2.源码管理

这里我选用的是Git管理,配置如下所示:

3.构建触发

顾名思义,jenkins会根据这里的配置选择在什么时候构建的你项目。这里你可以先选择跳过,先自己手动构建,后续我会讲述利用GitHub的web hook触发构建。

4.Maven的构建选项

如上图所示,这里要确定的是你的pom.xml的位置、执行的命令。另外,可以在高级选项那里跳过测试环节,不过这不是一种推荐的做法,测试还是很重要的。

5.构建后操作

jenkins在构建完成后,会根据这里的配置执行相关操作。就如一开始的那张图片一样,这里的流程是:把jar包发送到应用服务器,执行启动脚本

服务器我们之前已经配置好了,现在解释一下Transfer里面的字段含义。

Source files:要发送的文件,这里我们只需要把生成的jar发送过去即可。路径匹配和可以参考linux命令。

Remove prefix:目前还没弄清具体含义。

Remote directory:将文件放在应用服务器的该目录下,需要注意的是:这里的路径是基于前面的ssh server路径配置的。例如:前面的路径配置了/usr/local/,而这里配置了project/temp/。那么文件的完整路径应该是:/usr/local/project/temp/*.jar

Exec command:应用服务器中的启动脚本路径,可以根据自己的喜好放置。同时我不太懂shell编程,写了一个参考版的启动脚本,看看就好。

#!/bin/sh
PROJECT_DIR="/usr/local/project/"
#删除当前已启动的旧项目,只适用于只有一个java项目的时候
proName="java"
echo "${proName}"
PID=$(ps -e|grep ${proName}|awk '{printf $1}')
echo "$PID"
if [ $? -eq 0 ]; then
echo "process id:$PID"
else
echo "process ${proName} not exit"
exit
fi
kill $PID
#删除已存在与project目录的jar包
rm -f ${PROJECT_DIR}counsel*.jar
#复制新的jar到当前路径
mv ${PROJECT_DIR}temp/counsel*.jar ${PROJECT_DIR}
#启动新的项目
nohup java -jar ${PROJECT_DIR}counsel*.jar >${PROJECT_DIR}output

配置完成,点击保存即可,可以尝试先手动构建一次,如果成功了,就可以继续接下来的自动化构建。

自动化构建的文章下次再更新。

利用Jenkins实现jdk11+Maven构建springboot项目的更多相关文章

  1. 利用Eclipse中的Maven构建Web项目(三)

    利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...

  2. 利用Eclipse中的Maven构建Web项目报错(二)

    利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...

  3. 利用Eclipse中的Maven构建Web项目报错(一)

    利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...

  4. 利用Eclipse中的Maven构建Web项目(二)

    利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...

  5. 利用Eclipse中的Maven构建Web项目(一)

    利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...

  6. Jenkins 集成Maven打包SpringBoot项目并自动部署到Tomcat服务器

    提前条件: 1.在Jenkins服务器上安装Git.JDK和Maven 2.准备另一台服务器并安装Tomcat 3.Gitlab服务器 4.Gitlab仓库中上传SpringBoot项目代码 第一步, ...

  7. 使用Maven构建Android项目

    http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...

  8. 转】用Maven构建Hadoop项目

    原博文出自于: http://blog.fens.me/hadoop-maven-eclipse/ 感谢!   用Maven构建Hadoop项目 Hadoop家族系列文章,主要介绍Hadoop家族产品 ...

  9. maven构建java项目、web项目

    maven构建java项目.web项目 一.mvn构建web项目 1安装mvn(包括path) 2命令:mvn archetype:create -DgroupId=cn.edu.sdau.neat ...

随机推荐

  1. 题解 P4949 【最短距离】

    吼题啊 刚开始看上去又以为是LCT啥子的. 后来发现,TM是个图. 然后果断准备放弃,突然发现只有N个点N条边. woc,这不就一个基环树上树链剖分吗... 关于基环树问题,相信大家都一定很有经验了吧 ...

  2. C#调用Win32 的API函数--User32.dll ----转载

    Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果. using System; ...

  3. 【JS 常用操作】

    正则表达式 <script> var str = "(08:30-10:00)"; var patt = /^[(][0-9]{2}:[0-9]{2}-[0-9]{2} ...

  4. day09-Python运维开发基础(函数收集参数、命名关键字参数与返回值、函数名的特殊使用及 全局/局部变量详解)

    1. 函数收集参数.命名关键字参数与返回值.函数名的特殊使用 # ### 默认形参 和 关键字实参 # 默认形参和 关键字实参 在写法上是一样 # 函数的定义处 """默 ...

  5. jQuery EasyUI window窗口实例

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>j ...

  6. 实时监听input输入的变化(兼容主流浏览器)

    遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数. 在经过查阅一番资料后,欣慰的发现firef ...

  7. 096、Java中String类之手工入对象池操作

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. USACO[19-20]Dec银组题解

    1,MooBuzz 这题其实是道数学题. 我们先找找符合要求的数:1,2,4,7,8,11,13,14…… 我们发现再往后找都是这8个数中的一个加15k如:16……19……29…… 找规律发现k=n/ ...

  9. 如何修改 app.config 的配置信息

    如何修改 app.config 的配置信息 收藏 最问这个问题的人有点多,其实 .Net 提供了这样的功能我们可以在 app.config 中 userSettings 节点中保存我们的应用程序设置信 ...

  10. Tomcat删除时问题——eclipse部署tomcat时弹出Resource'/Servers' does not exist

    如果你删除一个项目的Servers文件,或者相应文件损坏等,会出现错误, Resource '/Servers' does not exist 那么就需要把它在控制台出的Servers下所部署的Tom ...