当前位置: 首页 > news >正文

使用Jenkins部署后端项目(Maven)

简介

Jenkins,是一款自动化部署的工具,使用它可以直接在控制台完成代码拉取、构建和部署,是大多数公司都具备的开发工具。

本文介绍如何使用 Jenkins 来部署后端项目。

相关博客,如下:

  • CentOS安装Jenkins

  • Jenkins如何注册为CentOS7的一个服务

  • CentOS安装JDK-17

  • CentOS7安装Git

配置环境

Jenkins 搭建完成,需配置 Maven、Git、JDK。在全局工具配置中,如下,

有些设置需要插件支持,没有安装插件可能没有对应的设置。可参考下面这篇博客,导入博主使用的插件。

  • Jenkins如何导入/导出插件

(1)Maven配置

有两处地方,第一处是 Maven 配置,设置 settings 路径。

第二处Maven安装,设置成服务器 Maven 所安装的路径。

(2)Git配置

设置成系统 Git 可执行程序所在的路径,注意是 git 程序的路径,不是安装目录。

(3)JDK配置

设置成服务器 JDK 所在目录,不用到 bin 层级。

构建项目

以上配置完成,可以开始构建项目,以 Github 上的这个代码仓库(https://github.com/HeZhongYing/no_database_demo)为例。

Step1:创建任务

创建任务,如果是Maven项目,可选择构建一个maven项目,否则,可选择流水线构建一个自由风格的软件项目

确定,进入下一步。

Step2:详细设置

其实 Jenkins 只做三件事,1)拉代码;2)Maven构建;3)执行部署脚本。

所以在这个详细界面也就是配置做这些事所需要的设置,先来设置 Git。

Credentials右侧的添加,添加一个凭证。

选择 SSH 方式,这里也可以选择账号密码的方式(填 Git 仓库的账号密码)。

SSH 密钥对,可以在服务器上敲下面的命令生成,其中ed25519是密钥类型,“jenkins@centos7” 是密钥名称,可自定义。

ssh-keygen -t ed25519 -C"jenkins@centos7"

敲完后,连续敲三个回车,会在~/.ssh目录下生成一对SSH密钥。

其中,

  • id_ed25519(密钥):配置在 Jenkins 上;

  • id_ed25519.pub(公钥):配置到代码仓库里;

配置完 Git,现在构建就能拉代码。接着对 Maven 进行配置,构建时使用pom.xml文件,执行clean package -DskipTests命令。

现在构建就会拉代码,并且执行 Maven 的clean package -DskipTests命令,生成对应的 jar 包。

接下来,在当前服务器上创建启动项目的脚本,这个脚本只做一件事,将前面构建完的 jar 包启动起来。

如下,文件名为start_app.sh,放到/home/projects路径下。

#!/bin/bash# 非常重要,参看:https://hezhongying.blog.csdn.net/article/details/158044582exportBUILD_ID=dontKillMeAPP_NAME="no_database_demo-1.0-SNAPSHOT"JAR_PATH="/root/.jenkins/workspace/no_database_demo/target/${APP_NAME}.jar"LOG_PATH="/var/log/${APP_NAME}.log"PID_FILE="/var/run/${APP_NAME}.pid"# 新增:定义PID文件路径JAVA_CMD="/usr/local/dev/jdk-21.0.5/bin/java"# --- 核心:通过PID文件杀死旧实例 ---echo"正在停止所有旧的$APP_NAME进程..."if[-f"$PID_FILE"];thenOLD_PID=$(cat"$PID_FILE")ifps-p$OLD_PID>/dev/null;thenecho"停止进程$OLD_PID..."kill$OLD_PIDsleep3ifps-p$OLD_PID>/dev/null;thenkill-9$OLD_PIDfifirm-f$PID_FILE# 删除旧PID文件fi# --- 启动新进程并写入PID文件 ---echo"启动$APP_NAME..."nohup"$JAVA_CMD"-jar"$JAR_PATH">"$LOG_PATH"2>&1&NEW_PID=$!echo$NEW_PID>$PID_FILE# 写入新PID到文件echo"启动成功,PID:$NEW_PID"

设置构建完执行这个脚本,如下,

Step3:立即构建

全部设置完,点保存,点立即构建验证下。

首次构建,Maven 要去拉一些依赖,有点慢,Just wait moment.

构建失败了,说执行/home/projects/start_app.sh没有权限。

丢,忘记给文件设置可执行权限了。

chmod775start_app.sh

如下,可执行的文件是绿色的。

再来一次。这回构建成功了。

打开浏览器,访问该项目的接口,能正常处理请求,说明构建成功。

服务器内可见这个 jar 进程。

更多

指定分支构建

一般来说,一个工程对应一个代码仓库,而构建是要指定分支的,有时我们想构建别的分支,就要手动改分支,太麻烦。

可通过下面这种方式,将分支参数化,每次构建时选择分支构建。

第一步,添加一个Git参数

第二步,构建时,分支名使用占位符,来自用户选择。

此时构建,会去获取该仓库的所有分支,让咱们选择一个分支构建。

跨服务器构建

通常,Jenkins 应用所在的服务器,与跑项目的不是同一台服务器。就是说,构建后的Jar包,要推送到业务服务器上部署。

此时就需要配置跨服务器构建。

第一步,先在 Jenkins 上配置目标服务器,进入系统管理-系统设置,滚动到最下面,如下,

设置完,点下面的Test Configuration验证下。

第二步,在需要跨服务器构建的工程里,增加Pre Steps配置。

如果这个工程只在目标服务器上部署,那么下面在本服务器执行的 Shell 操作可以移除。

http://www.jsqmd.com/news/384907/

相关文章:

  • Jenkins如何导入/导出插件
  • Android Studio汉化备忘
  • agentscope怎么在对话的时候调用记忆的
  • WinForms:菜单控件ToolStripMenuItem详解
  • 少走弯路:9个AI论文软件测评!研究生毕业论文写作必备工具推荐
  • 题解:ABC445F Exactly K Steps 2
  • 基于微信小程序的二手书店管理系统的设计与实现
  • 强烈安利! 降AIGC软件 千笔·降AIGC助手 VS Checkjie,本科生专属神器!
  • 基于 Flutter OpenHarmony 的正则表达式测试器研发实战
  • 小白救星!降AI率软件 千笔 VS WPS AI,MBA专属神器
  • AI元人文:DOSRing
  • 手把手教你用 Python 实现批量文件夹 RAR 压缩
  • 别再瞎找了!继续教育论文利器 —— 千笔·专业论文写作工具
  • 瞧瞧2026国内口碑好的双片全自动钉箱机企业推荐排行,河北双片全自动钉箱机排行榜单宏海纸箱设备层层把关品质优 - 品牌推荐师
  • 拖延症福音:AI论文软件 千笔ai写作 VS 灵感ai
  • 2026固定污染源VOCs检测仪厂家盘点|实力企业+优质品牌推荐 - 品牌推荐大师1
  • 函数栈帧(Function Stack Frame)之三
  • 学霸同款 8个降AI率平台深度测评,本科生必看!
  • Word排版技巧:轻松解决孤行问题
  • Springboot3+vue3预制菜半成品配菜平台
  • 交稿前一晚!AI论文软件 千笔·专业学术智能体 VS 灵感ai,自考党必备!
  • 函数栈帧(Function Stack Frame)之一
  • 题解:AT_agc044_d [AGC044D] Guess the Password
  • 论文写不动?8个AI论文平台测评:研究生毕业论文+学术写作必备工具推荐
  • GTK4 记事本项目实战 - 多标签页编辑器实现
  • 函数栈帧(Function Stack Frame)之二
  • 大数据场景时序数据库选型指南——Apache IoTDB实践与解析
  • 用过才敢说 9个AI论文平台测评:继续教育毕业论文写作必备工具推荐
  • 写作小白救星!全网顶尖的降AI率网站 —— 千笔·降AIGC助手
  • 4步搞定!人人都能拥有18岁OpenClaw AI女友Clawra