Linux快速安装Jenkins一键部署Maven项目

一、序言

Jenkins是领先的开源自动化服务器,提供了数百个插件来支持构建,部署和自动化任何项目。这节将会详细介绍通过Jenkins自动化构建Maven项目进行服务的部署。


二、安装前置准备

运行Jenkins实现自动化部署需要提前安装JDK、Maven、Git等前置依赖,各依赖项安装说明如下。

1、JDK版本要求

最好安装JDK 11或者JDK 17,除了能选择最新版本的Jenkins,还有就是怕Jenkins的插件安装不了,之前我安装的JDK8就踩过这个坑。

在这里插入图片描述

这里我们直接选择安装JDK11。

yum install java-11-openjdk-devel

2、Maven安装

直接去Maven官网下载最新版本即可,我当时的版本为apache-maven-3.9.7

修改/etc/profile概要文件,在该文件的最后加上以上配置。

MAVEN_HOME=/usr/local/software/maven/apache-maven-3.9.7
export PATH=$MAVEN_HOME/bin:$PATH

修改完后输入以下命令使配置文件生效即可。

source /etc/profile

最后输入mvn --version查看Maven是否安装成功,如下:

Apache Maven 3.9.7 (8b094c9513efc1b9ce2d952b3b9c8eaedaf8cbf0)
Maven home: /usr/local/software/maven/apache-maven-3.9.7
Java version: 11.0.23, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.23.0.9-3.oc8.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.119-20.0009.31", arch: "amd64", family: "unix"

3、Git安装

直接输入以下命令安装即可,安装成功后通过git -v查看安装的git版本信息。

sudo yum install git

三、Jenkins安装

1、Jenkins war包下载

Jenkins官方提供了多种安装方式,这里我们选择通过war包部署,直接去Jenkins下载页下载最新的LTS版本,如下:
在这里插入图片描述

注意:Jenkins LTS版本 2.361.1及其以上对JDK版本的最低要求为JDK 11 ,在安装JDK前就要选择好合适的版本。
在这里插入图片描述

2、启动Jenkins

将war包放到指定目录,通过以下脚本启动即可 (建议最好别用root用户启动):

#!/bin/bash
JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
nohup java -jar $JAVA_OPTS jenkins.war --httpPort=8888 2>&1 &

启动成功后在nohop.out输入文件中可以看到管理员密码,这个密码同样可以在$HOME/.jenkins/secrets/initialAdminPassword文件里找到。
在这里插入图片描述

备注:部署到云服务器,需在安全组中放开8888端口访问权限。

3、初始化Jenkins

浏览器中输入localhost:8888即可进入Jenkins初始化页面,输入上图中的管理员密码,然后安装推荐的社区插件完成初始化等待重启即可。

备注:管理员密码一定要改,一定要改,一定要改,博主之前因为密码设置过于简单被破解,又由于是root用户启动,导致服务器被黑。

Maven Integration plugin这个插件初始化时是没有自动安装的,我们可以安装这个插件方便后续与Maven集成。

在这里插入图片描述

4、Jenkins全局设置

在这里插入图片描述

这里我们只用配置Maven即可, 记得安装Maven Integration plugin插件。

在这里插入图片描述
在这里插入图片描述


四、Maven项目自动化jar部署项目配置

1、创建Maven风格的项目

这里我们假定的场景是Jenkins和业务应用部署在同一台服务器上,首先我们新建一个Maven项目。
在这里插入图片描述

2、丢弃旧的构建

在这里插入图片描述

3、源码管理配置

这里我们指定git仓库的地址以及需要发布的分支,同时需要添加代码仓库访问的用户名和密码。
在这里插入图片描述
在这里插入图片描述

4、构建配置

由于我的工程是父子工程,这里的配置是单独构建子工程以及依赖项。
在这里插入图片描述

5、构建后置处理

在这里插入图片描述

构建成功后,我们需要将构建完成后的jar包通过脚本复制到应用部署目录,并通过写好的脚本进行应用重启。

# Jenkins project name
PROJECT_NAME=xlyj-consumer-web
# Jenkins build id
OLD_BUILD_ID=$BUILD_ID
# Manven project name
APP_NAME=xlyj-consumer-web
# Base directotry in server
APP_BASE_DIR=/opt/appl/xlyj-shopping-mall/$APP_NAME

echo "Build [$APP_NAME] successfully!"
cd $APP_BASE_DIR
cp $JENKINS_HOME/workspace/$PROJECT_NAME/$APP_NAME/target/$APP_NAME.jar ./
# 改变 Jenkins BUILD_ID防止脚本没执行完就被杀死
export BUILD_ID=dontKillMe
sh stop.sh
sh start.sh
# 恢复Jenkins BUILD_ID
export BUILD_ID=$OLD_BUILD_ID

stop.sh 文件内容如下:

#!/bin/bash
APP_NAME="xlyj-consumer-web"
function is_process_running {
	pid=`ps -ef | grep java | grep $APP_NAME | awk '{print $2}'`
	if [ -z $pid ]
	then
		return -1
	fi
	echo $pid
}
while is_process_running
do
	echo "Wait for process to stop:$pid"
	kill $pid
	sleep 1s
done
echo "Process for [$APP_NAME] is terminated!"

start.sh文件内容如下:

#!/bin/bash
APP_NAME="xlyj-consumer-web"
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
echo "Starting $APP_NAME instance".
nohup java -Dspring.profiles.active=dev -jar $JAVA_OPTS $APP_NAME.jar 2>&1 &

6、应用构建

在这里插入图片描述
点击查看构建日志,如果构建成功会出现如下信息,同时如果构建失败也能在控制台里找到失败原因。

在这里插入图片描述


五、结语

以上的场景是Jenkins和应用服务在同一台服务器上,如果应用服务不在同一台服务器上,可以通过Publish Over SSH插件来实现远程构建和自动化部署,具体后面章节再做详细介绍。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nick说说前后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值