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

news2024/9/9 0:05:01

目录

  • 一、序言
  • 二、安装前置准备
    • 1、JDK版本要求
    • 2、Maven安装
    • 3、Git安装
  • 三、Jenkins安装
    • 1、Jenkins war包下载
    • 2、启动Jenkins
    • 3、初始化Jenkins
    • 4、Jenkins全局设置
  • 四、Maven项目自动化jar部署项目配置
    • 1、创建Maven风格的项目
    • 2、丢弃旧的构建
    • 3、源码管理配置
    • 4、构建配置
    • 5、构建后置处理
    • 6、应用构建
  • 五、结语

一、序言

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插件来实现远程构建和自动化部署,具体后面章节再做详细介绍。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为od 100问 持续分享10-华为OD的面试流程细说

我是一名软件开发培训机构老师,我的学生已经有上百人通过了华为OD机试,学生们每次考完试,会把题目拿出来一起交流分享。 重要:2024年5月份开始,考的都是OD统一考试(D卷),题库已经整…

带有扰动观测器的MPC电机控制

模型预测控制(Model Predictive Contro1, MPC)是一种先进的控制策略,虽然具有鲁棒性、建模简单、处理多变量系统、显示约束、预测未来行为和优化性能的能力等优势。它的不足在于预测控制行为的计算需要繁琐的计算量,以及抗干扰能力较弱。这里提出基于扰动…

34 列表常用方法——copy()

列表对象的 copy() 方法返回列表的浅复制。 浅复制,是指生成一个新的列表,并且把原列表中所有元素的引用都都复制到新列表中。 如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。但是&a…

黛米·摩尔和她的孙女卢埃塔在这张飘逸的快照很亲密

卢埃塔和她的祖母黛米摩尔显然是最好的朋友,这张飘逸的快照证明了这一点。准备好“哇!” 7 月 26 日,摩尔分享了一张非常迷人的照片,照片上有她、她的两个女儿和她的孙女在她昂贵的后院。她在照片中配文说:“夏日&…

SX_初识GitLab_1

1、对GitLab的理解: 目前对GitLab的理解是其本质是一个远程代码托管平台,上面托管多个项目,每个项目都有一个master主分支和若干其他分支,远程代码能下载到本机,本机代码也能上传到远程平台 1.分支的作用&#xff1a…

Home Assistant ESPHome 第一次烧录ESP8266设备记录日志

流程简介 windows PC->usb 数据线->板载usb-ttl->esp8266 connect 编译固件 下载固件 esp web tools 写入固件 编译固件 go esphome add on 1.创建设备 选择ESP8266 2.编写.yaml配置, 3.编译-输出bin 烧录 4.烧录 打开 Web-ESPHome 5.查看日志 查看手机wif…

如何让企业在获客上拥有竞争力?云微客打造流量爆款

做了这么久的短视频,还是没有客户,如果你还在单一账号上死磕,那么就别做爆款的白日梦了!因为你的做法是干不过同行的,同行可能早就开通上百个账号在互联网上抢流量了。 想获客只用一个云微客AI矩阵系统,不用…

科普文:深入理解ElasticSearch体系结构

概叙 Elasticsearch是什么? Elasticsearch(简称ES)是一个分布式、可扩展、实时的搜索与数据分析引擎。ES不仅仅只是全文搜索,还支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。 官网地址:…

实习日志2之windows上大模型(qwen2-7b)部署

一、模型部署 1、下载ollama(大模型本地部署工具),并安装 下载网址:https://ollama.com/ ollama是大模型部署方案,对应docker,本质也是基于docker的容器化技术。 2、下载大模型 在命令框,如windows系统在cmd窗口输…

汽车、能源、烟草、电力行业洞见:TDengine 用户大会亮点荟萃

近年来,随着物联网、车联网、工业互联网等前沿技术的迅猛发展,全球数据量呈指数级增长。作为大数据的一个重要组成部分,时序数据因其在实时监控、预测分析和智能决策中的独特优势,正逐步成为数字化转型的关键要素。尤其在 AI 时代…

如何使用Firefox浏览器连接IPXProxy设置海外代理IP教程

​Firefox浏览器是大家上网时经常会使用的一款工具。不过,有时候我们会遇到一些网站无法直接访问的情况。这时候,通过海外代理IP,比如像IPXProxy代理这样的服务,可能就能帮助我们进入那些受限制的网站,获取我们所需的资…

如何通过 CloudCanal 实现从 Kafka 到 AutoMQ 的数据迁移

01 引言 随着大数据技术的飞速发展,Apache Kafka 作为一种高吞吐量、低延迟的分布式消息系统,已经成为企业实时数据处理的核心组件。然而,随着业务的扩展和技术的发展,企业面临着不断增加的存储成本和运维复杂性问题。为了更好地…

Discourse 如何通过终端工具访问 PGSQL

PGSQL 在 Discourse 中是通过容器方式运行的,要访问 PGSQL 中的数据那么首先需要进入到容器后才可以。 进入容器的命令为: cd /var/discourse/./launcher enter appsu discoursepsql discourse最后的命令是登录到运行在容器中的 pgsql。 查看 pgsql 上…

CTFshow--Web--代码审计

目录 web301 web302 web303 web304 web305 web306 web307 web308 web309 web310 web301 开始一个登录框, 下意识sql尝试一下 发现 1 的时候会到一个 checklogin.php 的路径下, 但啥也没有 好吧, 这是要审计代码的 ,下载好源码, 开始审计 看了一下源码 , 应该就是sql…

thinkPHP开发的彩漂网站源码,含pc端和手机端

源码简介 后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构、多重数据审核机制、出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap,下载会有少量图片素材丢失,附件有下载说明前端demo账户密码和后台管理地址管理员账户密码…

c++修炼之路之二叉搜索树

目录 前言 一:二叉搜索树的介绍 二:二叉搜索树的实现 1.查找 2.insert(插入) 3.erase(删除) 4.析构函数 5.拷贝构造 6.赋值重载 7.插入,删除,查找的递归版本 三:二叉搜索树的应用 四:二叉搜索…

精灵图的使用——网页制作技巧

把许多小图标集中在一张背景透明的图片上,这种图片叫做精灵图,如下图。 在线工具地址:http://www.spritecow.com/ 通过工具可以快速找到图标在精灵图上的坐标位置。 首先,我们打开工具地址,点击第一个按钮。 点击后&am…

LeetCode 算法:搜索二维矩阵 c++

原题链接🔗:搜索二维矩阵 难度:中等⭐️⭐️ 题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果…

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令 ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明: 一、启动与连接 启动ZooKeeper服务器: ./zkServer.sh start这个命令用于启动ZooKeeper服务器…

手搓排序算法:插入排序、选择排序

文章目录 插入排序直接插入排序希尔排序内层循环时间复杂度计算 选择排序直接选择排序优化 堆排序 插入排序 直接插入排序 时间复杂度最差:大的数据都在左边,小的数据在右边,随着有序区间增大,交换次数增多 时间复杂度最优&…