Debian Java持续集成/持续部署怎么做
导读:1. 前提准备:安装必要工具 在Debian系统上实现Java项目的持续集成/持续部署(CI/CD),需先安装以下核心工具: Java环境:Java是Java项目的基础,推荐安装OpenJDK 11(兼容大多数Java应用)。执行命令:s...
1. 前提准备:安装必要工具 在Debian系统上实现Java项目的持续集成/持续部署(CI/CD),需先安装以下核心工具:
- Java环境:Java是Java项目的基础,推荐安装OpenJDK 11(兼容大多数Java应用)。执行命令:
sudo apt update & & sudo apt install -y openjdk-11-jdk
,安装完成后通过java -version
验证是否成功。 - Maven:用于项目依赖管理与构建自动化(编译、测试、打包)。执行命令:
sudo apt install -y maven
,安装后通过mvn -v
验证。 - Jenkins:开源CI/CD服务器,负责自动化流程编排。添加Jenkins官方APT源:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
,然后创建源文件sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
,更新包索引并安装:sudo apt update & & sudo apt install -y jenkins
。启动服务并设置开机自启:sudo systemctl enable --now jenkins
,默认端口为8080。
2. 配置Jenkins基础环境
- 解锁Jenkins:首次访问
http://< 服务器IP> :8080
,需输入初始管理员密码(路径:/var/lib/jenkins/secrets/initialAdminPassword
),复制粘贴即可解锁。 - 安装核心插件:进入“Manage Jenkins”→“Manage Plugins”,安装以下插件:
- Git Plugin:用于从Git仓库拉取代码;
- Maven Integration Plugin:支持Maven项目构建;
- Pipeline Plugin:用于定义流水线流程;
- SSH Agent Plugin:实现SSH免密部署(可选但推荐)。
- 配置全局工具:进入“Manage Jenkins”→“Global Tool Configuration”,设置Java和Maven路径(若未自动识别,手动指定安装路径,如
/usr/lib/jvm/java-11-openjdk-amd64
)。
3. 创建Jenkins Job(Freestyle Project示例)
- 新建Job:点击“New Item”,输入Job名称(如
java-app-ci
),选择“Freestyle project”,点击“OK”。 - 配置源码管理:在“Source Code Management”部分选择“Git”,输入代码仓库URL(如
https://github.com/your-repo/java-app.git
),并添加凭证(SSH或用户名/密码,取决于仓库类型)。 - 设置构建触发器:可选“Poll SCM”(定时检查代码变更,如
H/5 * * * *
表示每5分钟检查一次)或“GitHub hook trigger for GITScm polling”(代码推送时自动触发,需配合GitHub Webhook使用)。 - 添加构建步骤:在“Build”部分点击“Add build step”,选择“Invoke top-level Maven targets”,输入Maven命令(如
clean package
,用于清理旧构建并生成新jar包)。 - 配置构建后操作:在“Post-build Actions”部分,可选择“Archive the artifacts”(归档构建产物,如
target/*.jar
)或“Publish JUnit test result report”(发布测试报告,需项目生成junit.xml
文件)。
4. 升级为Pipeline(推荐:更灵活的流程管理)
- 编写Jenkinsfile:在项目根目录创建
Jenkinsfile
(使用声明式语法),定义CI/CD流程。示例如下:pipeline { agent any tools { jdk 'openjdk-11' // 关联全局工具配置中的JDK maven 'maven-3.8.6' // 关联全局工具配置中的Maven } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-repo/java-app.git' // 拉取代码 } } stage('Build') { steps { sh 'mvn clean package' // 编译打包 } } stage('Test') { steps { sh 'mvn test' // 执行单元测试 } post { always { junit '**/target/surefire-reports/*.xml' // 发布测试报告 } } } stage('Deploy-Staging') { when { branch 'main' // 仅main分支触发 staging 部署 } steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'staging-server', // SSH服务器配置名称(需提前在Jenkins中添加) transfers: [ sshTransfer( sourceFiles: 'target/*.jar', removePrefix: 'target', remoteDirectory: '/opt/java-app/staging' // 部署到目标服务器路径 ) ], usePromotionTimestamp: false ) ] ) } } stage('Deploy-Production') { when { branch 'main' input message: 'Deploy to production?', ok: 'Deploy' // 手动确认生产部署 } steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'production-server', // 生产环境SSH配置 transfers: [ sshTransfer( sourceFiles: 'target/*.jar', removePrefix: 'target', remoteDirectory: '/opt/java-app/production' ) ] ) ] ) } } } }
- 配置SSH凭证:进入“Manage Jenkins”→“Credentials”,添加SSH私钥(类型:
SSH Username with private key
),用于Jenkins连接目标服务器(目标服务器需开启SSH服务,且Jenkins服务器有部署权限)。 - 创建Pipeline Job:新建Job,选择“Pipeline”,在“Pipeline”部分选择“Pipeline script from SCM”,指定Git仓库URL和
Jenkinsfile
路径(如Jenkinsfile
),保存即可。
5. 实现自动化部署
- SSH免密配置:在Jenkins服务器上生成SSH密钥对(
ssh-keygen -t rsa
),将公钥(~/.ssh/id_rsa.pub
)添加到目标服务器的~/.ssh/authorized_keys
文件中。在Jenkins中添加SSH私钥凭证(参考步骤4)。 - 部署脚本优化:若需重启应用服务(如Spring Boot jar包),可在
Jenkinsfile
的部署阶段添加SSH命令:sshPublisher( publishers: [ sshPublisherDesc( configName: 'staging-server', transfers: [...], execCommand: 'systemctl restart java-app.service' // 重启服务(需提前配置好服务) ) ] )
- 触发方式:通过Git Webhook(如GitHub的
Settings
→Webhooks
→Add webhook
,填写Jenkins URL如http://< 服务器IP> :8080/github-webhook/
)实现代码推送自动触发构建,或通过Jenkins的“Build Now”手动触发。
6. 监控与优化
- 查看构建状态:进入Jenkins Job页面,点击“Build History”可查看每次构建的结果(成功/失败),点击具体构建可查看日志(用于调试)。
- 优化构建速度:
- 使用Maven本地仓库缓存(在
Jenkinsfile
中添加mavenLocalRepo
参数,指向共享目录); - 并行化测试(如将单元测试与集成测试分开,在不同阶段执行);
- 使用Docker容器运行构建(避免环境差异,提升稳定性)。
- 使用Maven本地仓库缓存(在
- 通知机制:安装“Email Extension Plugin”,在Job配置中添加“Editable Email Notification”,设置构建失败/不稳定时发送邮件通知开发人员。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Java持续集成/持续部署怎么做
本文地址: https://pptw.com/jishu/726385.html