步骤 1:项目配置
1. 创建Jenkins Pipeline项目:
- 登录Jenkins管理界面,点击“新建项目”,选择“Pipeline”。
2. 配置源代码管理:
- 在项目配置中,选择“Pipeline script from SCM”,指定Git仓库URL、分支、凭据等。
步骤 2:构建过程配置
编写Jenkinsfile(Pipeline脚本),定义构建、测试、打包等步骤。以下是一个示例Jenkinsfile:
pipeline {
agent any
environment {
MAVEN_OPTS = '-Dmaven.repo.local=.m2/repository'
APP_NAME = 'your-app-name'
ARTIFACT_ID = 'your-artifact-id'
VERSION = '1.0.0-SNAPSHOT'
JAR_FILE = "
}
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-organization/your-spring-boot-repo.git'
}
}
stage('Build') {
steps {
sh "mvn clean package -DskipTests=true"
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: "
}
}
}
post {
always {
junit 'target/surefire-reports/**/*.xml'
archiveArtifacts allowEmptyArchive: true, artifacts: 'target/**/*'
}
}
}
说明:
- `agent any`指明可以在任何可用的Jenkins节点上执行此Pipeline。
- `environment`块定义了环境变量,如Maven选项、应用名称、版本等。
- `stages`定义了构建过程中的各个阶段:
- `Checkout`:从Git仓库拉取源代码。
- `Build`:使用Maven进行构建,跳过测试(可根据需要修改)。
- `Archive`:将构建产物(`.jar`文件)归档,便于后续使用或查看。
步骤 3:部署步骤
在Jenkinsfile中添加部署逻辑,这里以SSH方式部署到远程服务器为例:
groovy
stage('Deploy') {
steps {
sshagent(credentials: ['your-ssh-credentials-id']) {
sh """
ssh -o StrictHostKeyChecking=no your-remote-user@your-remote-host << EOF
mkdir -p /opt/apps/${APP_NAME}/current
cp target/{JAR_FILE} /opt/apps/{APP_NAME}/current/
ln -sf /opt/apps/{APP_NAME}/current/{JAR_FILE} /opt/apps/
systemctl restart your-spring-boot-service.service
EOF
"""
}
}
}
说明:
- `sshagent`插件管理SSH密钥,允许Pipeline通过SSH连接到远程服务器。
- `ssh`命令通过Here Document(`<< EOF ... EOF`)传递一系列远程执行的命令:
- 创建应用部署目录。
- 将构建好的`.jar`文件复制到远程服务器的部署目录。
- 创建符号链接指向最新部署的`.jar`文件。
- 重启Spring Boot服务(假设已经配置了systemd服务单元)。
步骤 4:构建后操作
1. 通知:
- 可以使用`post`块中的`always`或`success`、`failure`等条件,结合`emailext`或其他通知插件发送构建结果通知。
2. 日志查看:
- Jenkins默认记录构建日志,可以直接在构建详情页面查看。
步骤 5:保存并验证配置
1. 保存Jenkinsfile:
- 将上述Jenkinsfile保存到Spring Boot项目的根目录,并提交到Git仓库。
2. 触发构建:
- 在Jenkins项目配置中保存更改,然后手动触发一次构建。
3. 验证部署:
- 观察Jenkins构建过程,确认每个阶段成功执行。
- 登录到目标服务器,验证Spring Boot应用是否已成功部署并运行。
通过以上步骤和对应的Pipeline脚本,您已经完成了使用Jenkins部署Spring Boot项目的全过程。根据实际需求,您可以对脚本进行适当调整,以适应不同的部署环境、通知方式等。