在虚拟机中配置Jenkins自动化部署Spring Boot应用环境
本指南将详细介绍如何在虚拟机环境中从零开始搭建持续集成/持续部署(CI/CD)系统,以便自动化部署Spring Boot应用程序。我们将涵盖虚拟机操作系统、Java开发工具包(JDK)、Apache Maven以及Jenkins服务器的安装与配置过程。
一、虚拟机环境初始化
首先,我们需要准备一个Linux虚拟机环境。推荐使用VMware Workstation结合Rocky Linux操作系统进行部署。
1.1 软件存储目录与权限设置
为了统一管理安装的软件,我们创建一个专用的目录,并赋予必要的写入权限,以便后续通过SCP或SSH工具进行文件传输。
sudo mkdir -p /opt/application_software/
sudo chmod 777 /opt/application_software/
1.2 Git版本控制工具安装
Git是进行代码版本控制和从远程仓库拉取代码的必备工具。在大多数Linux发行版中,可以通过包管理器直接安装。
sudo yum install git -y # 对于基于RHEL的系统如Rocky Linux
# 或者 sudo apt install git -y # 对于基于Debian的系统如Ubuntu
二、核心开发环境组件配置
2.1 Java开发工具包(JDK)安装与环境变量
Spring Boot应用依赖于Java运行时环境。我们将安装JDK并配置其环境变量。
- 下载JDK: 访问Oracle官网(或Adoptium等OpenJDK提供商)下载适用于Linux x64架构的JDK压缩包,例如
jdk-21_linux-x64_bin.tar.gz。将其传输到虚拟机的/opt/application_software/目录。 - 解压文件:
cd /opt/application_software/
tar -xzvf jdk-21_linux-x64_bin.tar.gz
- 配置环境变量: 创建一个脚本文件来管理Java相关的环境变量。
sudo vi /etc/profile.d/java_path_setup.sh
在文件中添加以下内容:
export JAVA_HOME=/opt/application_software/jdk-21.0.5
export PATH=$JAVA_HOME/bin:$PATH
- 使配置生效并验证:
source /etc/profile.d/java_path_setup.sh
java -version
2.2 Apache Maven安装与镜像配置
Maven是用于项目构建和依赖管理的工具。我们将安装Maven并配置阿里云镜像以加速依赖下载。
- 下载与解压Maven:
cd /opt/application_software/
wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar -zxvf apache-maven-3.8.8-bin.tar.gz
- 配置Maven环境变量: 为了方便命令行使用,同样配置其环境变量。可以与Java环境变量文件合并,或单独创建。
sudo vi /etc/profile.d/maven_path_setup.sh
在文件中添加以下内容:
export MAVEN_HOME=/opt/application_software/apache-maven-3.8.8
export PATH=$MAVEN_HOME/bin:$PATH
使配置生效并验证:
source /etc/profile.d/maven_path_setup.sh
mvn -version
- 配置阿里云Maven镜像: 修改Maven的
settings.xml文件以使用阿里云镜像,加速项目依赖下载。
vim /opt/application_software/apache-maven-3.8.8/conf/settings.xml
在 <mirrors> 标签内添加以下配置:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
三、Jenkins持续集成服务器部署
3.1 Jenkins WAR包下载与启动
Jenkins是实现CI/CD的核心工具。我们将下载其WAR包并以独立模式运行。
- 下载Jenkins WAR包: 前往Jenkins官网下载最新版本的
jenkins.war,并将其放置于/opt/application_software/目录。 - 创建Jenkins工作目录: 此目录将存储Jenkins的配置、插件和工作区数据。
sudo mkdir -p /var/lib/jenkins_data/workspace
- 启动Jenkins服务: 使用
nohup命令在后台启动Jenkins,并配置工作目录和端口。
nohup java -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true \
-DJENKINS_HOME=/var/lib/jenkins_data/workspace \
-jar /opt/application_software/jenkins.war \
--httpPort=8080 > /var/log/jenkins_startup.log 2>&1 &
在首次启动时,Jenkins会在工作目录下生成一个初始管理员密码,你需要从日志或指定文件中获取它来解锁Jenkins。例如,查看 /var/log/jenkins_startup.log 或 /var/lib/jenkins_data/workspace/secrets/initialAdminPassword。
- 配置防火墙: 开放Jenkins使用的8080端口,以便从外部访问。
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
现在,你可以通过浏览器访问 http://<虚拟机IP地址>:8080 进行初始设置。
3.2 安装Jenkins核心插件
登录Jenkins后,按照提示安装推荐的插件。此外,为了后续的CI/CD流程,还需要手动安装一些关键插件:
- Git Plugin (通常已安装)
- Maven Integration plugin
- SSH Agent Plugin 或 SSH plugin (用于通过SSH连接远程服务器执行命令)
- Localization: Chinese (Simplified) (用于汉化界面)
进入"管理 Jenkins" -> "插件管理" -> "可选插件" 搜索并安装这些插件。
3.3 Jenkins全局工具配置
在Jenkins中配置Git、JDK和Maven的安装路径,以便Jenkins在执行构建任务时能够找到这些工具。
进入"管理 Jenkins" -> "全局工具配置":
-
Git配置: 配置Git的安装路径。

-
JDK配置: 配置之前安装的JDK路径。

-
Maven配置: 配置之前安装的Maven路径。

四、SSH凭据管理与Git仓库集成
4.1 生成SSH密钥对
为了让Jenkins能够通过SSH协议访问私有Git仓库,我们需要在虚拟机上生成SSH密钥对。
ssh-keygen -t rsa -b 4096 -C "jenkins-deployment-key"
按照提示完成密钥生成。私钥将保存到 ~/.ssh/id_rsa,公钥保存到 ~/.ssh/id_rsa.pub。
4.2 将公钥添加到Git仓库
复制公钥内容:
cat ~/.ssh/id_rsa.pub
将输出的公钥字符串添加到你的Git代码托管平台(如GitHub, GitLab, Gitee等)的SSH密钥管理页面。这将允许你的虚拟机免密访问该Git仓库。
4.3 在Jenkins中添加SSH私钥凭据
- 进入"管理 Jenkins" -> "管理凭据" -> "系统" -> "全局凭据" -> "添加凭据"。
- 选择类型为"SSH Username with private key"。
-
Private Key: 选择"From a file on Jenkins master"或直接粘贴
~/.ssh/id_rsa文件的内容。

- 填写其他必要信息,如ID和描述,然后点击"创建"。

重要提示:首次连接Git仓库
在Jenkins中配置Git仓库之前,建议在虚拟机终端手动执行一次 git clone <your_repository_ssh_url> 命令。这有助于确认SSH连接没有问题,并会将Git仓库的主机指纹添加到 ~/.ssh/known_hosts 文件中,避免Jenkins在首次尝试连接时因主机指纹确认问题而失败。

五、构建与部署Spring Boot项目
5.1 创建新的Maven项目
- 在Jenkins首页,点击"新建任务"。
- 输入任务名称,选择"构建一个Maven项目",点击"确定"。

5.2 配置项目源码管理
在项目配置页面,找到"源码管理"部分:
- 选择"Git"。
- 填写你的Git仓库SSH URL。
- 在"Credentials"下拉菜单中选择之前创建的SSH私钥凭据。
5.3 配置Maven构建步骤
在"Build"部分,配置Maven的构建目标:
- Root POM: 如果你的pom.xml在项目根目录,通常是
pom.xml。 - Goals: 输入Maven构建目标,例如
clean install package -DskipTests。
5.4 配置部署Shell脚本
在"构建后操作"或"Execute Shell"步骤中添加部署脚本。由于Jenkins默认会杀死子进程,需要添加 BUILD_ID=DONT_KILL_ME_JENKINS 来确保Java进程在Jenkins任务结束后仍然运行。
BUILD_ID=DONT_KILL_ME_JENKINS
# 进入你的Spring Boot应用打包后的jar所在的目录
cd your_project_root/target
# 以后台方式启动Spring Boot应用,并将输出重定向到日志文件
nohup java -jar your-springboot-application-name.jar > app_runtime.log 2>&1 &
5.5 执行构建与验证
保存项目配置后,点击"立即构建"来触发构建任务。你可以在"Console Output"中查看构建日志。

如果一切配置正确,Spring Boot应用程序将在虚拟机中成功启动。

